{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react@18.2.0/index.js", "ssg:https://ga.jspm.io/npm:react@18.2.0/jsx-runtime.js", "ssg:https://app.framerstatic.com/chunk-4Z6NVKPU.mjs", "ssg:https://ga.jspm.io/npm:react-dom@18.2.0/index.js", "ssg:https://ga.jspm.io/npm:scheduler@0.23.0/index.js", "ssg:https://app.framerstatic.com/framer.XJ5BRUQR.mjs"],
  "sourcesContent": ["var e={};var t=Symbol.for(\"react.element\"),r=Symbol.for(\"react.portal\"),n=Symbol.for(\"react.fragment\"),o=Symbol.for(\"react.strict_mode\"),u=Symbol.for(\"react.profiler\"),a=Symbol.for(\"react.provider\"),c=Symbol.for(\"react.context\"),i=Symbol.for(\"react.forward_ref\"),f=Symbol.for(\"react.suspense\"),s=Symbol.for(\"react.memo\"),l=Symbol.for(\"react.lazy\"),p=Symbol.iterator;function A(e){if(null===e||\"object\"!==typeof e)return null;e=p&&e[p]||e[\"@@iterator\"];return\"function\"===typeof e?e:null}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d=Object.assign,_={};function E(e,t,r){this.props=e;this.context=t;this.refs=_;this.updater=r||y}E.prototype.isReactComponent={};E.prototype.setState=function(e,t){if(\"object\"!==typeof e&&\"function\"!==typeof e&&null!=e)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")};E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(e,t,r){this.props=e;this.context=t;this.refs=_;this.updater=r||y}var m=G.prototype=new F;m.constructor=G;d(m,E.prototype);m.isPureReactComponent=!0;var h=Array.isArray,v=Object.prototype.hasOwnProperty,b={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function M(e,r,n){var o,u={},a=null,c=null;if(null!=r)for(o in void 0!==r.ref&&(c=r.ref),void 0!==r.key&&(a=\"\"+r.key),r)v.call(r,o)&&!C.hasOwnProperty(o)&&(u[o]=r[o]);var i=arguments.length-2;if(1===i)u.children=n;else if(1<i){for(var f=Array(i),s=0;s<i;s++)f[s]=arguments[s+2];u.children=f}if(e&&e.defaultProps)for(o in i=e.defaultProps,i)void 0===u[o]&&(u[o]=i[o]);return{$$typeof:t,type:e,key:a,ref:c,props:u,_owner:b.current}}function N(e,r){return{$$typeof:t,type:e.type,key:r,ref:e.ref,props:e.props,_owner:e._owner}}function O(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===t}function escape(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,(function(e){return t[e]}))}var w=/\\/+/g;function Q(e,t){return\"object\"===typeof e&&null!==e&&null!=e.key?escape(\"\"+e.key):t.toString(36)}function R(e,n,o,u,a){var c=typeof e;\"undefined\"!==c&&\"boolean\"!==c||(e=null);var i=!1;if(null===e)i=!0;else switch(c){case\"string\":case\"number\":i=!0;break;case\"object\":switch(e.$$typeof){case t:case r:i=!0}}if(i)return i=e,a=a(i),e=\"\"===u?\".\"+Q(i,0):u,h(a)?(o=\"\",null!=e&&(o=e.replace(w,\"$&/\")+\"/\"),R(a,n,o,\"\",(function(e){return e}))):null!=a&&(O(a)&&(a=N(a,o+(!a.key||i&&i.key===a.key?\"\":(\"\"+a.key).replace(w,\"$&/\")+\"/\")+e)),n.push(a)),1;i=0;u=\"\"===u?\".\":u+\":\";if(h(e))for(var f=0;f<e.length;f++){c=e[f];var s=u+Q(c,f);i+=R(c,n,o,s,a)}else if(s=A(e),\"function\"===typeof s)for(e=s.call(e),f=0;!(c=e.next()).done;)c=c.value,s=u+Q(c,f++),i+=R(c,n,o,s,a);else if(\"object\"===c)throw n=String(e),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===n?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":n)+\"). If you meant to render a collection of children, use an array instead.\");return i}function S(e,t,r){if(null==e)return e;var n=[],o=0;R(e,n,\"\",\"\",(function(e){return t.call(r,e,o++)}));return n}function T(e){if(-1===e._status){var t=e._result;t=t();t.then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}));-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var $={current:null},k={transition:null},g={ReactCurrentDispatcher:$,ReactCurrentBatchConfig:k,ReactCurrentOwner:b};e.Children={map:S,forEach:function(e,t,r){S(e,(function(){t.apply(this,arguments)}),r)},count:function(e){var t=0;S(e,(function(){t++}));return t},toArray:function(e){return S(e,(function(e){return e}))||[]},only:function(e){if(!O(e))throw Error(\"React.Children.only expected to receive a single React element child.\");return e}};e.Component=E;e.Fragment=n;e.Profiler=u;e.PureComponent=G;e.StrictMode=o;e.Suspense=f;e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=g;e.cloneElement=function(e,r,n){if(null===e||void 0===e)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+e+\".\");var o=d({},e.props),u=e.key,a=e.ref,c=e._owner;if(null!=r){void 0!==r.ref&&(a=r.ref,c=b.current);void 0!==r.key&&(u=\"\"+r.key);if(e.type&&e.type.defaultProps)var i=e.type.defaultProps;for(f in r)v.call(r,f)&&!C.hasOwnProperty(f)&&(o[f]=void 0===r[f]&&void 0!==i?i[f]:r[f])}var f=arguments.length-2;if(1===f)o.children=n;else if(1<f){i=Array(f);for(var s=0;s<f;s++)i[s]=arguments[s+2];o.children=i}return{$$typeof:t,type:e.type,key:u,ref:a,props:o,_owner:c}};e.createContext=function(e){e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};e.Provider={$$typeof:a,_context:e};return e.Consumer=e};e.createElement=M;e.createFactory=function(e){var t=M.bind(null,e);t.type=e;return t};e.createRef=function(){return{current:null}};e.forwardRef=function(e){return{$$typeof:i,render:e}};e.isValidElement=O;e.lazy=function(e){return{$$typeof:l,_payload:{_status:-1,_result:e},_init:T}};e.memo=function(e,t){return{$$typeof:s,type:e,compare:void 0===t?null:t}};e.startTransition=function(e){var t=k.transition;k.transition={};try{e()}finally{k.transition=t}};e.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\")};e.useCallback=function(e,t){return $.current.useCallback(e,t)};e.useContext=function(e){return $.current.useContext(e)};e.useDebugValue=function(){};e.useDeferredValue=function(e){return $.current.useDeferredValue(e)};e.useEffect=function(e,t){return $.current.useEffect(e,t)};e.useId=function(){return $.current.useId()};e.useImperativeHandle=function(e,t,r){return $.current.useImperativeHandle(e,t,r)};e.useInsertionEffect=function(e,t){return $.current.useInsertionEffect(e,t)};e.useLayoutEffect=function(e,t){return $.current.useLayoutEffect(e,t)};e.useMemo=function(e,t){return $.current.useMemo(e,t)};e.useReducer=function(e,t,r){return $.current.useReducer(e,t,r)};e.useRef=function(e){return $.current.useRef(e)};e.useState=function(e){return $.current.useState(e)};e.useSyncExternalStore=function(e,t,r){return $.current.useSyncExternalStore(e,t,r)};e.useTransition=function(){return $.current.useTransition()};e.version=\"18.2.0\";const j=e.Children,I=e.Component,x=e.Fragment,P=e.Profiler,D=e.PureComponent,V=e.StrictMode,L=e.Suspense,U=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,q=e.cloneElement,z=e.createContext,B=e.createElement,H=e.createFactory,W=e.createRef,Y=e.forwardRef,J=e.isValidElement,K=e.lazy,X=e.memo,Z=e.startTransition,ee=e.unstable_act,te=e.useCallback,re=e.useContext,ne=e.useDebugValue,oe=e.useDeferredValue,ue=e.useEffect,ae=e.useId,ce=e.useImperativeHandle,ie=e.useInsertionEffect,fe=e.useLayoutEffect,se=e.useMemo,le=e.useReducer,pe=e.useRef,ye=e.useState,de=e.useSyncExternalStore,_e=e.useTransition,me=e.version;export{j as Children,I as Component,x as Fragment,P as Profiler,D as PureComponent,V as StrictMode,L as Suspense,U as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,q as cloneElement,z as createContext,B as createElement,H as createFactory,W as createRef,e as default,Y as forwardRef,J as isValidElement,K as lazy,X as memo,Z as startTransition,ee as unstable_act,te as useCallback,re as useContext,ne as useDebugValue,oe as useDeferredValue,ue as useEffect,ae as useId,ce as useImperativeHandle,ie as useInsertionEffect,fe as useLayoutEffect,se as useMemo,le as useReducer,pe as useRef,ye as useState,de as useSyncExternalStore,_e as useTransition,me as version};\n\n//# sourceMappingURL=index.js.map", "import*as r from\"react\";var e=\"default\"in r?r.default:r;var t={};var o=e,a=Symbol.for(\"react.element\"),f=Symbol.for(\"react.fragment\"),n=Object.prototype.hasOwnProperty,s=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function q(r,e,t){var o,f={},l=null,p=null;void 0!==t&&(l=\"\"+t);void 0!==e.key&&(l=\"\"+e.key);void 0!==e.ref&&(p=e.ref);for(o in e)n.call(e,o)&&!_.hasOwnProperty(o)&&(f[o]=e[o]);if(r&&r.defaultProps)for(o in e=r.defaultProps,e)void 0===f[o]&&(f[o]=e[o]);return{$$typeof:a,type:r,key:l,ref:p,props:f,_owner:s.current}}t.Fragment=f;t.jsx=q;t.jsxs=q;const l=t.Fragment,p=t.jsx,u=t.jsxs;export{l as Fragment,t as default,p as jsx,u as jsxs};\n\n//# sourceMappingURL=jsx-runtime.js.map", "import {\n  __commonJS,\n  __export\n} from \"./chunk-QLPHEVXG.mjs\";\n\n// ../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\nvar require_memoize_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function memoize(fn) {\n      var cache = {};\n      return function(arg) {\n        if (cache[arg] === void 0)\n          cache[arg] = fn(arg);\n        return cache[arg];\n      };\n    }\n    exports.default = memoize;\n  }\n});\n\n// ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\nvar require_is_prop_valid_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function _interopDefault(ex) {\n      return ex && typeof ex === \"object\" && \"default\" in ex ? ex[\"default\"] : ex;\n    }\n    var memoize = _interopDefault(require_memoize_browser_cjs());\n    var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\n    var index = memoize(\n      function(prop) {\n        return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n      }\n      /* Z+1 */\n    );\n    exports.default = index;\n  }\n});\n\n// ../../../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs\nvar MotionGlobalConfig = {\n  skipAnimations: false,\n  useManualTiming: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/noop.mjs\nvar noop = (any) => any;\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/render-step.mjs\nfunction createRenderStep(runNextFrame) {\n  let thisFrame = /* @__PURE__ */ new Set();\n  let nextFrame = /* @__PURE__ */ new Set();\n  let isProcessing = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  let latestFrameData = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  function triggerCallback(callback) {\n    if (toKeepAlive.has(callback)) {\n      step.schedule(callback);\n      runNextFrame();\n    }\n    callback(latestFrameData);\n  }\n  const step = {\n    /**\n     * Schedule a process to run on the next frame.\n     */\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing;\n      const queue = addToCurrentFrame ? thisFrame : nextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (!queue.has(callback))\n        queue.add(callback);\n      return callback;\n    },\n    /**\n     * Cancel the provided callback from running on the next frame.\n     */\n    cancel: (callback) => {\n      nextFrame.delete(callback);\n      toKeepAlive.delete(callback);\n    },\n    /**\n     * Execute all schedule callbacks.\n     */\n    process: (frameData2) => {\n      latestFrameData = frameData2;\n      if (isProcessing) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing = true;\n      [thisFrame, nextFrame] = [nextFrame, thisFrame];\n      nextFrame.clear();\n      thisFrame.forEach(triggerCallback);\n      isProcessing = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/batcher.mjs\nvar stepsOrder = [\n  \"read\",\n  // Read\n  \"resolveKeyframes\",\n  // Write/Read/Write/Read\n  \"update\",\n  // Compute\n  \"preRender\",\n  // Compute\n  \"render\",\n  // Write\n  \"postRender\"\n  // Compute\n];\nvar maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n  let runNextFrame = false;\n  let useDefaultElapsed = true;\n  const state2 = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  const flagRunNextFrame = () => runNextFrame = true;\n  const steps2 = stepsOrder.reduce((acc, key) => {\n    acc[key] = createRenderStep(flagRunNextFrame);\n    return acc;\n  }, {});\n  const { read, resolveKeyframes, update, preRender, render, postRender } = steps2;\n  const processBatch = () => {\n    const timestamp = MotionGlobalConfig.useManualTiming ? state2.timestamp : performance.now();\n    runNextFrame = false;\n    state2.delta = useDefaultElapsed ? 1e3 / 60 : Math.max(Math.min(timestamp - state2.timestamp, maxElapsed), 1);\n    state2.timestamp = timestamp;\n    state2.isProcessing = true;\n    read.process(state2);\n    resolveKeyframes.process(state2);\n    update.process(state2);\n    preRender.process(state2);\n    render.process(state2);\n    postRender.process(state2);\n    state2.isProcessing = false;\n    if (runNextFrame && allowKeepAlive) {\n      useDefaultElapsed = false;\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const wake = () => {\n    runNextFrame = true;\n    useDefaultElapsed = true;\n    if (!state2.isProcessing) {\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const schedule = stepsOrder.reduce((acc, key) => {\n    const step = steps2[key];\n    acc[key] = (process2, keepAlive = false, immediate = false) => {\n      if (!runNextFrame)\n        wake();\n      return step.schedule(process2, keepAlive, immediate);\n    };\n    return acc;\n  }, {});\n  const cancel = (process2) => {\n    for (let i = 0; i < stepsOrder.length; i++) {\n      steps2[stepsOrder[i]].cancel(process2);\n    }\n  };\n  return { schedule, cancel, state: state2, steps: steps2 };\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/frame.mjs\nvar { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\n// ../../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs\nvar calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;\nvar subdivisionPrecision = 1e-7;\nvar subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n  let currentX;\n  let currentT;\n  let i = 0;\n  do {\n    currentT = lowerBound + (upperBound - lowerBound) / 2;\n    currentX = calcBezier(currentT, mX1, mX2) - x;\n    if (currentX > 0) {\n      upperBound = currentT;\n    } else {\n      lowerBound = currentT;\n    }\n  } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n  return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n  if (mX1 === mY1 && mX2 === mY2)\n    return noop;\n  const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n  return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs\nvar mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\n// ../../../node_modules/framer-motion/dist/es/easing/back.mjs\nvar backOut = /* @__PURE__ */ cubicBezier(0.33, 1.53, 0.69, 0.99);\nvar backIn = /* @__PURE__ */ reverseEasing(backOut);\nvar backInOut = /* @__PURE__ */ mirrorEasing(backIn);\n\n// ../../../node_modules/framer-motion/dist/es/easing/anticipate.mjs\nvar anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\n// ../../../node_modules/framer-motion/dist/es/easing/circ.mjs\nvar circIn = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circIn);\n\n// ../../../node_modules/framer-motion/dist/es/utils/errors.mjs\nvar warning = noop;\nvar invariant = noop;\nif (false) {\n  warning = (check, message) => {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = (check, message) => {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/clamp.mjs\nvar clamp = (min, max, v) => {\n  if (v > max)\n    return max;\n  if (v < min)\n    return min;\n  return v;\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs\nvar createUnitType = (unit) => ({\n  test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = /* @__PURE__ */ createUnitType(\"deg\");\nvar percent = /* @__PURE__ */ createUnitType(\"%\");\nvar px = /* @__PURE__ */ createUnitType(\"px\");\nvar vh = /* @__PURE__ */ createUnitType(\"vh\");\nvar vw = /* @__PURE__ */ createUnitType(\"vw\");\nvar progressPercentage = {\n  ...percent,\n  parse: (v) => percent.parse(v) / 100,\n  transform: (v) => percent.transform(v * 100)\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs\nvar number = {\n  test: (v) => typeof v === \"number\",\n  parse: parseFloat,\n  transform: (v) => v\n};\nvar alpha = {\n  ...number,\n  transform: (v) => clamp(0, 1, v)\n};\nvar scale = {\n  ...number,\n  default: 1\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs\nvar sanitize = (v) => Math.round(v * 1e5) / 1e5;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs\nvar floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs\nfunction isNullish(v) {\n  return v == null;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs\nvar singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(typeof v === \"string\" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (typeof v !== \"string\")\n    return v;\n  const [a, b, c, alpha2] = v.match(floatRegex);\n  return {\n    [aName]: parseFloat(a),\n    [bName]: parseFloat(b),\n    [cName]: parseFloat(c),\n    alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs\nvar clampRgbUnit = (v) => clamp(0, 255, v);\nvar rgbUnit = {\n  ...number,\n  transform: (v) => Math.round(clampRgbUnit(v))\n};\nvar rgba = {\n  test: /* @__PURE__ */ isColorString(\"rgb\", \"red\"),\n  parse: /* @__PURE__ */ splitColor(\"red\", \"green\", \"blue\"),\n  transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" + rgbUnit.transform(red) + \", \" + rgbUnit.transform(green) + \", \" + rgbUnit.transform(blue) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\"\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs\nfunction parseHex(v) {\n  let r = \"\";\n  let g = \"\";\n  let b = \"\";\n  let a = \"\";\n  if (v.length > 5) {\n    r = v.substring(1, 3);\n    g = v.substring(3, 5);\n    b = v.substring(5, 7);\n    a = v.substring(7, 9);\n  } else {\n    r = v.substring(1, 2);\n    g = v.substring(2, 3);\n    b = v.substring(3, 4);\n    a = v.substring(4, 5);\n    r += r;\n    g += g;\n    b += b;\n    a += a;\n  }\n  return {\n    red: parseInt(r, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: a ? parseInt(a, 16) / 255 : 1\n  };\n}\nvar hex = {\n  test: /* @__PURE__ */ isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs\nvar hsla = {\n  test: /* @__PURE__ */ isColorString(\"hsl\", \"hue\"),\n  parse: /* @__PURE__ */ splitColor(\"hue\", \"saturation\", \"lightness\"),\n  transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n    return \"hsla(\" + Math.round(hue) + \", \" + percent.transform(sanitize(saturation)) + \", \" + percent.transform(sanitize(lightness)) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\";\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/index.mjs\nvar color = {\n  test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n  parse: (v) => {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else {\n      return hex.parse(v);\n    }\n  },\n  transform: (v) => {\n    return typeof v === \"string\" ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs\nvar colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs\nfunction test(v) {\n  var _a, _b;\n  return isNaN(v) && typeof v === \"string\" && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;\n}\nvar NUMBER_TOKEN = \"number\";\nvar COLOR_TOKEN = \"color\";\nvar VAR_TOKEN = \"var\";\nvar VAR_FUNCTION_TOKEN = \"var(\";\nvar SPLIT_TOKEN = \"${}\";\nvar complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n  const originalValue = value.toString();\n  const values = [];\n  const indexes = {\n    color: [],\n    number: [],\n    var: []\n  };\n  const types = [];\n  let i = 0;\n  const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n    if (color.test(parsedValue)) {\n      indexes.color.push(i);\n      types.push(COLOR_TOKEN);\n      values.push(color.parse(parsedValue));\n    } else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n      indexes.var.push(i);\n      types.push(VAR_TOKEN);\n      values.push(parsedValue);\n    } else {\n      indexes.number.push(i);\n      types.push(NUMBER_TOKEN);\n      values.push(parseFloat(parsedValue));\n    }\n    ++i;\n    return SPLIT_TOKEN;\n  });\n  const split = tokenised.split(SPLIT_TOKEN);\n  return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n  return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n  const { split, types } = analyseComplexValue(source);\n  const numSections = split.length;\n  return (v) => {\n    let output = \"\";\n    for (let i = 0; i < numSections; i++) {\n      output += split[i];\n      if (v[i] !== void 0) {\n        const type = types[i];\n        if (type === NUMBER_TOKEN) {\n          output += sanitize(v[i]);\n        } else if (type === COLOR_TOKEN) {\n          output += color.transform(v[i]);\n        } else {\n          output += v[i];\n        }\n      }\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parseComplexValue(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = {\n  test,\n  parse: parseComplexValue,\n  createTransformer,\n  getAnimatableNone\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs\nvar secondsToMilliseconds = (seconds) => seconds * 1e3;\nvar millisecondsToSeconds = (milliseconds) => milliseconds / 1e3;\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs\nvar safeMin = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration = 10;\nvar minDamping = 0.05;\nvar maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {\n  let envelope;\n  let derivative;\n  warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n  duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n  if (dampingRatio < 1) {\n    envelope = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const a = exponentialDecay - velocity;\n      const b = calcAngularFreq(undampedFreq2, dampingRatio);\n      const c = Math.exp(-delta);\n      return safeMin - a / b * c;\n    };\n    derivative = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const d = delta * velocity + velocity;\n      const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;\n      const f = Math.exp(-delta);\n      const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);\n      const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;\n      return factor * ((d - e) * f) / g;\n    };\n  } else {\n    envelope = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (undampedFreq2 - velocity) * duration + 1;\n      return -safeMin + a * b;\n    };\n    derivative = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (velocity - undampedFreq2) * (duration * duration);\n      return a * b;\n    };\n  }\n  const initialGuess = 5 / duration;\n  const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n  duration = secondsToMilliseconds(duration);\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: 100,\n      damping: 10,\n      duration\n    };\n  } else {\n    const stiffness = Math.pow(undampedFreq, 2) * mass;\n    return {\n      stiffness,\n      damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n      duration\n    };\n  }\n}\nvar rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n  let result = initialGuess;\n  for (let i = 1; i < rootIterations; i++) {\n    result = result - envelope(result) / derivative(result);\n  }\n  return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n  return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs\nvar velocitySampleDuration = 5;\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n  const prevT = Math.max(t - velocitySampleDuration, 0);\n  return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys2) {\n  return keys2.some((key) => options[key] !== void 0);\n}\nfunction getSpringOptions(options) {\n  let springOptions = {\n    velocity: 0,\n    stiffness: 100,\n    damping: 10,\n    mass: 1,\n    isResolvedFromDuration: false,\n    ...options\n  };\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    const derived = findSpring(options);\n    springOptions = {\n      ...springOptions,\n      ...derived,\n      mass: 1\n    };\n    springOptions.isResolvedFromDuration = true;\n  }\n  return springOptions;\n}\nfunction spring({ keyframes: keyframes2, restDelta, restSpeed, ...options }) {\n  const origin = keyframes2[0];\n  const target = keyframes2[keyframes2.length - 1];\n  const state2 = { done: false, value: origin };\n  const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({\n    ...options,\n    velocity: -millisecondsToSeconds(options.velocity || 0)\n  });\n  const initialVelocity = velocity || 0;\n  const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n  const initialDelta = target - origin;\n  const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n  const isGranularScale = Math.abs(initialDelta) < 5;\n  restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n  restDelta || (restDelta = isGranularScale ? 5e-3 : 0.5);\n  let resolveSpring;\n  if (dampingRatio < 1) {\n    const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n    };\n  } else if (dampingRatio === 1) {\n    resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);\n  } else {\n    const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      const freqForT = Math.min(dampedAngularFreq * t, 300);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;\n    };\n  }\n  return {\n    calculatedDuration: isResolvedFromDuration ? duration || null : null,\n    next: (t) => {\n      const current = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        let currentVelocity = 0;\n        if (dampingRatio < 1) {\n          currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current);\n        }\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n        state2.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state2.done = t >= duration;\n      }\n      state2.value = state2.done ? target : current;\n      return state2;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs\nfunction inertia({ keyframes: keyframes2, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {\n  const origin = keyframes2[0];\n  const state2 = {\n    done: false,\n    value: origin\n  };\n  const isOutOfBounds = (v) => min !== void 0 && v < min || max !== void 0 && v > max;\n  const nearestBoundary = (v) => {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  };\n  let amplitude = power * velocity;\n  const ideal = origin + amplitude;\n  const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);\n  if (target !== ideal)\n    amplitude = target - origin;\n  const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n  const calcLatest = (t) => target + calcDelta(t);\n  const applyFriction = (t) => {\n    const delta = calcDelta(t);\n    const latest = calcLatest(t);\n    state2.done = Math.abs(delta) <= restDelta;\n    state2.value = state2.done ? target : latest;\n  };\n  let timeReachedBoundary;\n  let spring$1;\n  const checkCatchBoundary = (t) => {\n    if (!isOutOfBounds(state2.value))\n      return;\n    timeReachedBoundary = t;\n    spring$1 = spring({\n      keyframes: [state2.value, nearestBoundary(state2.value)],\n      velocity: calcGeneratorVelocity(calcLatest, t, state2.value),\n      // TODO: This should be passing * 1000\n      damping: bounceDamping,\n      stiffness: bounceStiffness,\n      restDelta,\n      restSpeed\n    });\n  };\n  checkCatchBoundary(0);\n  return {\n    calculatedDuration: null,\n    next: (t) => {\n      let hasUpdatedFrame = false;\n      if (!spring$1 && timeReachedBoundary === void 0) {\n        hasUpdatedFrame = true;\n        applyFriction(t);\n        checkCatchBoundary(t);\n      }\n      if (timeReachedBoundary !== void 0 && t >= timeReachedBoundary) {\n        return spring$1.next(t - timeReachedBoundary);\n      } else {\n        !hasUpdatedFrame && applyFriction(t);\n        return state2;\n      }\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/ease.mjs\nvar easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1);\nvar easeOut = /* @__PURE__ */ cubicBezier(0, 0, 0.58, 1);\nvar easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);\n\n// ../../../node_modules/framer-motion/dist/es/utils/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/framer-motion/dist/es/utils/progress.mjs\nvar progress = (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/number.mjs\nvar mixNumber = (from, to, progress2) => {\n  return from + (to - from) * progress2;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs\nfunction hueToRgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {\n  hue /= 360;\n  saturation /= 100;\n  lightness /= 100;\n  let red = 0;\n  let green = 0;\n  let blue = 0;\n  if (!saturation) {\n    red = green = blue = lightness;\n  } else {\n    const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;\n    const p = 2 * lightness - q;\n    red = hueToRgb(p, q, hue + 1 / 3);\n    green = hueToRgb(p, q, hue);\n    blue = hueToRgb(p, q, hue - 1 / 3);\n  }\n  return {\n    red: Math.round(red * 255),\n    green: Math.round(green * 255),\n    blue: Math.round(blue * 255),\n    alpha: alpha2\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs\nfunction mixImmediate(a, b) {\n  return (p) => p > 0 ? b : a;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  const expo = v * (to * to - fromExpo) + fromExpo;\n  return expo < 0 ? 0 : Math.sqrt(expo);\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color2) {\n  const type = getColorType(color2);\n  warning(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);\n  if (!Boolean(type))\n    return false;\n  let model = type.parse(color2);\n  if (type === hsla) {\n    model = hslaToRgba(model);\n  }\n  return model;\n}\nvar mixColor = (from, to) => {\n  const fromRGBA = asRGBA(from);\n  const toRGBA = asRGBA(to);\n  if (!fromRGBA || !toRGBA) {\n    return mixImmediate(from, to);\n  }\n  const blended = { ...fromRGBA };\n  return (v) => {\n    blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n    blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n    blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n    blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n    return rgba.transform(blended);\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs\nvar checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nvar isCSSVariableName = /* @__PURE__ */ checkStringStartsWith(\"--\");\nvar startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith(\"var(--\");\nvar isCSSVariableToken = (value) => {\n  const startsWithToken = startsAsVariableToken(value);\n  if (!startsWithToken)\n    return false;\n  return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nvar singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs\nvar invisibleValues = /* @__PURE__ */ new Set([\"none\", \"hidden\"]);\nfunction mixVisibility(origin, target) {\n  if (invisibleValues.has(origin)) {\n    return (p) => p <= 0 ? origin : target;\n  } else {\n    return (p) => p >= 1 ? target : origin;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/complex.mjs\nfunction mixNumber2(a, b) {\n  return (p) => mixNumber(a, b, p);\n}\nfunction getMixer(a) {\n  if (typeof a === \"number\") {\n    return mixNumber2;\n  } else if (typeof a === \"string\") {\n    return isCSSVariableToken(a) ? mixImmediate : color.test(a) ? mixColor : mixComplex;\n  } else if (Array.isArray(a)) {\n    return mixArray;\n  } else if (typeof a === \"object\") {\n    return color.test(a) ? mixColor : mixObject;\n  }\n  return mixImmediate;\n}\nfunction mixArray(a, b) {\n  const output = [...a];\n  const numValues = output.length;\n  const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n  return (p) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](p);\n    }\n    return output;\n  };\n}\nfunction mixObject(a, b) {\n  const output = { ...a, ...b };\n  const blendValue = {};\n  for (const key in output) {\n    if (a[key] !== void 0 && b[key] !== void 0) {\n      blendValue[key] = getMixer(a[key])(a[key], b[key]);\n    }\n  }\n  return (v) => {\n    for (const key in blendValue) {\n      output[key] = blendValue[key](v);\n    }\n    return output;\n  };\n}\nfunction matchOrder(origin, target) {\n  var _a;\n  const orderedOrigin = [];\n  const pointers = { color: 0, var: 0, number: 0 };\n  for (let i = 0; i < target.values.length; i++) {\n    const type = target.types[i];\n    const originIndex = origin.indexes[type][pointers[type]];\n    const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n    orderedOrigin[i] = originValue;\n    pointers[type]++;\n  }\n  return orderedOrigin;\n}\nvar mixComplex = (origin, target) => {\n  const template = complex.createTransformer(target);\n  const originStats = analyseComplexValue(origin);\n  const targetStats = analyseComplexValue(target);\n  const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length && originStats.indexes.color.length === targetStats.indexes.color.length && originStats.indexes.number.length >= targetStats.indexes.number.length;\n  if (canInterpolate) {\n    if (invisibleValues.has(origin) && !targetStats.values.length || invisibleValues.has(target) && !originStats.values.length) {\n      return mixVisibility(origin, target);\n    }\n    return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n  } else {\n    warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n    return mixImmediate(origin, target);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix/index.mjs\nfunction mix(from, to, p) {\n  if (typeof from === \"number\" && typeof to === \"number\" && typeof p === \"number\") {\n    return mixNumber(from, to, p);\n  }\n  const mixer = getMixer(from);\n  return mixer(from, to);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/interpolate.mjs\nfunction createMixers(output, ease2, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || mix;\n  const numMixers = output.length - 1;\n  for (let i = 0; i < numMixers; i++) {\n    let mixer = mixerFactory(output[i], output[i + 1]);\n    if (ease2) {\n      const easingFunction = Array.isArray(ease2) ? ease2[i] || noop : ease2;\n      mixer = pipe(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease: ease2, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  if (inputLength === 1)\n    return () => output[0];\n  if (inputLength === 2 && input[0] === input[1])\n    return () => output[1];\n  if (input[0] > input[inputLength - 1]) {\n    input = [...input].reverse();\n    output = [...output].reverse();\n  }\n  const mixers = createMixers(output, ease2, mixer);\n  const numMixers = mixers.length;\n  const interpolator = (v) => {\n    let i = 0;\n    if (numMixers > 1) {\n      for (; i < input.length - 2; i++) {\n        if (v < input[i + 1])\n          break;\n      }\n    }\n    const progressInRange = progress(input[i], input[i + 1], v);\n    return mixers[i](progressInRange);\n  };\n  return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs\nvar isEasingArray = (ease2) => {\n  return Array.isArray(ease2) && typeof ease2[0] !== \"number\";\n};\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs\nvar isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/map.mjs\nvar easingLookup = {\n  linear: noop,\n  easeIn,\n  easeInOut,\n  easeOut,\n  circIn,\n  circInOut,\n  circOut,\n  backIn,\n  backInOut,\n  backOut,\n  anticipate\n};\nvar easingDefinitionToFunction = (definition) => {\n  if (isBezierDefinition(definition)) {\n    invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n    const [x1, y1, x2, y2] = definition;\n    return cubicBezier(x1, y1, x2, y2);\n  } else if (typeof definition === \"string\") {\n    invariant(easingLookup[definition] !== void 0, `Invalid easing type '${definition}'`);\n    return easingLookup[definition];\n  }\n  return definition;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress(0, remaining, i);\n    offset.push(mixNumber(min, 1, offsetProgress));\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/default.mjs\nfunction defaultOffset(arr) {\n  const offset = [0];\n  fillOffset(offset, arr.length - 1);\n  return offset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/time.mjs\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease: ease2 = \"easeInOut\" }) {\n  const easingFunctions = isEasingArray(ease2) ? ease2.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease2);\n  const state2 = {\n    done: false,\n    value: keyframeValues[0]\n  };\n  const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),\n    duration\n  );\n  const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n    ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)\n  });\n  return {\n    calculatedDuration: duration,\n    next: (t) => {\n      state2.value = mapTimeToKeyframe(t);\n      state2.done = t >= duration;\n      return state2;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs\nvar transformPropOrder = [\n  \"transformPerspective\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"translateX\",\n  \"translateY\",\n  \"translateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\"\n];\nvar transformProps = new Set(transformPropOrder);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs\nvar positionalKeys = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"top\",\n  \"left\",\n  \"right\",\n  \"bottom\",\n  \"x\",\n  \"y\",\n  \"translateX\",\n  \"translateY\"\n]);\nvar isNumOrPxType = (v) => v === number || v === px;\nvar getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nvar getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform: transform2 }) => {\n  if (transform2 === \"none\" || !transform2)\n    return 0;\n  const matrix3d = transform2.match(/^matrix3d\\((.+)\\)$/u);\n  if (matrix3d) {\n    return getPosFromMatrix(matrix3d[1], pos3);\n  } else {\n    const matrix = transform2.match(/^matrix\\((.+)\\)$/u);\n    if (matrix) {\n      return getPosFromMatrix(matrix[1], pos2);\n    } else {\n      return 0;\n    }\n  }\n};\nvar transformKeys = /* @__PURE__ */ new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n  const removedTransforms = [];\n  nonTranslationalTransformKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (value !== void 0) {\n      removedTransforms.push([key, value.get()]);\n      value.set(key.startsWith(\"scale\") ? 1 : 0);\n    }\n  });\n  return removedTransforms;\n}\nvar positionalValues = {\n  // Dimensions\n  width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n  height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n  top: (_bbox, { top }) => parseFloat(top),\n  left: (_bbox, { left }) => parseFloat(left),\n  bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n  right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n  // Transform\n  x: getTranslateFromMatrix(4, 13),\n  y: getTranslateFromMatrix(5, 14)\n};\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs\nvar toResolve = /* @__PURE__ */ new Set();\nvar isScheduled = false;\nvar anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n  if (anyNeedsMeasurement) {\n    const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n    const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n    const transformsToRestore = /* @__PURE__ */ new Map();\n    elementsToMeasure.forEach((element) => {\n      const removedTransforms = removeNonTranslationalTransform(element);\n      if (!removedTransforms.length)\n        return;\n      transformsToRestore.set(element, removedTransforms);\n      element.render();\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n    elementsToMeasure.forEach((element) => {\n      element.render();\n      const restore = transformsToRestore.get(element);\n      if (restore) {\n        restore.forEach(([key, value]) => {\n          var _a;\n          (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n        });\n      }\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n    resolversToMeasure.forEach((resolver) => {\n      if (resolver.suspendedScrollY !== void 0) {\n        window.scrollTo(0, resolver.suspendedScrollY);\n      }\n    });\n  }\n  anyNeedsMeasurement = false;\n  isScheduled = false;\n  toResolve.forEach((resolver) => resolver.complete());\n  toResolve.clear();\n}\nfunction readAllKeyframes() {\n  toResolve.forEach((resolver) => {\n    resolver.readKeyframes();\n    if (resolver.needsMeasurement) {\n      anyNeedsMeasurement = true;\n    }\n  });\n}\nfunction flushKeyframeResolvers() {\n  readAllKeyframes();\n  measureAllKeyframes();\n}\nvar KeyframeResolver = class {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {\n    this.isComplete = false;\n    this.isAsync = false;\n    this.needsMeasurement = false;\n    this.isScheduled = false;\n    this.unresolvedKeyframes = [...unresolvedKeyframes];\n    this.onComplete = onComplete;\n    this.name = name;\n    this.motionValue = motionValue2;\n    this.element = element;\n    this.isAsync = isAsync;\n  }\n  scheduleResolve() {\n    this.isScheduled = true;\n    if (this.isAsync) {\n      toResolve.add(this);\n      if (!isScheduled) {\n        isScheduled = true;\n        frame.read(readAllKeyframes);\n        frame.resolveKeyframes(measureAllKeyframes);\n      }\n    } else {\n      this.readKeyframes();\n      this.complete();\n    }\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      if (unresolvedKeyframes[i] === null) {\n        if (i === 0) {\n          const currentValue = motionValue2 === null || motionValue2 === void 0 ? void 0 : motionValue2.get();\n          const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n          if (currentValue !== void 0) {\n            unresolvedKeyframes[0] = currentValue;\n          } else if (element && name) {\n            const valueAsRead = element.readValue(name, finalKeyframe);\n            if (valueAsRead !== void 0 && valueAsRead !== null) {\n              unresolvedKeyframes[0] = valueAsRead;\n            }\n          }\n          if (unresolvedKeyframes[0] === void 0) {\n            unresolvedKeyframes[0] = finalKeyframe;\n          }\n          if (motionValue2 && currentValue === void 0) {\n            motionValue2.set(unresolvedKeyframes[0]);\n          }\n        } else {\n          unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n        }\n      }\n    }\n  }\n  setFinalKeyframe() {\n  }\n  measureInitialState() {\n  }\n  renderEndStyles() {\n  }\n  measureEndState() {\n  }\n  complete() {\n    this.isComplete = true;\n    this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n    toResolve.delete(this);\n  }\n  cancel() {\n    if (!this.isComplete) {\n      this.isScheduled = false;\n      toResolve.delete(this);\n    }\n  }\n  resume() {\n    if (!this.isComplete)\n      this.scheduleResolve();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs\nvar now;\nfunction clearTime() {\n  now = void 0;\n}\nvar time = {\n  now: () => {\n    if (now === void 0) {\n      time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());\n    }\n    return now;\n  },\n  set: (newTime) => {\n    now = newTime;\n    queueMicrotask(clearTime);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs\nvar instantAnimationState = {\n  current: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/is-generator.mjs\nfunction isGenerator(type) {\n  return typeof type === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs\nvar isAnimatable = (value, name) => {\n  if (name === \"zIndex\")\n    return false;\n  if (typeof value === \"number\" || Array.isArray(value))\n    return true;\n  if (typeof value === \"string\" && // It's animatable if we have a string\n  (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n  !value.startsWith(\"url(\")) {\n    return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs\nfunction hasKeyframesChanged(keyframes2) {\n  const current = keyframes2[0];\n  if (keyframes2.length === 1)\n    return true;\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] !== current)\n      return true;\n  }\n}\nfunction canAnimate(keyframes2, name, type, velocity) {\n  const originKeyframe = keyframes2[0];\n  if (originKeyframe === null)\n    return false;\n  if (name === \"display\" || name === \"visibility\")\n    return true;\n  const targetKeyframe = keyframes2[keyframes2.length - 1];\n  const isOriginAnimatable = isAnimatable(originKeyframe, name);\n  const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n  warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n  if (!isOriginAnimatable || !isTargetAnimatable) {\n    return false;\n  }\n  return hasKeyframesChanged(keyframes2) || (type === \"spring\" || isGenerator(type)) && velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs\nvar isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes2, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n  const resolvedKeyframes = keyframes2.filter(isNotNull);\n  const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;\n  return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs\nvar MAX_RESOLVE_DELAY = 40;\nvar BaseAnimation = class {\n  constructor({ autoplay = true, delay: delay2 = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n    this.isStopped = false;\n    this.hasAttemptedResolve = false;\n    this.createdAt = time.now();\n    this.options = {\n      autoplay,\n      delay: delay2,\n      type,\n      repeat,\n      repeatDelay,\n      repeatType,\n      ...options\n    };\n    this.updateFinishedPromise();\n  }\n  /**\n   * This method uses the createdAt and resolvedAt to calculate the\n   * animation startTime. *Ideally*, we would use the createdAt time as t=0\n   * as the following frame would then be the first frame of the animation in\n   * progress, which would feel snappier.\n   *\n   * However, if there's a delay (main thread work) between the creation of\n   * the animation and the first commited frame, we prefer to use resolvedAt\n   * to avoid a sudden jump into the animation.\n   */\n  calcStartTime() {\n    if (!this.resolvedAt)\n      return this.createdAt;\n    return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt;\n  }\n  /**\n   * A getter for resolved data. If keyframes are not yet resolved, accessing\n   * this.resolved will synchronously flush all pending keyframe resolvers.\n   * This is a deoptimisation, but at its worst still batches read/writes.\n   */\n  get resolved() {\n    if (!this._resolved && !this.hasAttemptedResolve) {\n      flushKeyframeResolvers();\n    }\n    return this._resolved;\n  }\n  /**\n   * A method to be called when the keyframes resolver completes. This method\n   * will check if its possible to run the animation and, if not, skip it.\n   * Otherwise, it will call initPlayback on the implementing class.\n   */\n  onKeyframesResolved(keyframes2, finalKeyframe) {\n    this.resolvedAt = time.now();\n    this.hasAttemptedResolve = true;\n    const { name, type, velocity, delay: delay2, onComplete, onUpdate, isGenerator: isGenerator2 } = this.options;\n    if (!isGenerator2 && !canAnimate(keyframes2, name, type, velocity)) {\n      if (instantAnimationState.current || !delay2) {\n        onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes2, this.options, finalKeyframe));\n        onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n        this.resolveFinishedPromise();\n        return;\n      } else {\n        this.options.duration = 0;\n      }\n    }\n    const resolvedAnimation = this.initPlayback(keyframes2, finalKeyframe);\n    if (resolvedAnimation === false)\n      return;\n    this._resolved = {\n      keyframes: keyframes2,\n      finalKeyframe,\n      ...resolvedAnimation\n    };\n    this.onPostResolved();\n  }\n  onPostResolved() {\n  }\n  /**\n   * Allows the returned animation to be awaited or promise-chained. Currently\n   * resolves when the animation finishes at all but in a future update could/should\n   * reject if its cancels.\n   */\n  then(resolve, reject) {\n    return this.currentFinishedPromise.then(resolve, reject);\n  }\n  updateFinishedPromise() {\n    this.currentFinishedPromise = new Promise((resolve) => {\n      this.resolveFinishedPromise = resolve;\n    });\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs\nvar maxGeneratorDuration = 2e4;\nfunction calcGeneratorDuration(generator) {\n  let duration = 0;\n  const timeStep = 50;\n  let state2 = generator.next(duration);\n  while (!state2.done && duration < maxGeneratorDuration) {\n    duration += timeStep;\n    state2 = generator.next(duration);\n  }\n  return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs\nvar frameloopDriver = (update) => {\n  const passTimestamp = ({ timestamp }) => update(timestamp);\n  return {\n    start: () => frame.update(passTimestamp, true),\n    stop: () => cancelFrame(passTimestamp),\n    /**\n     * If we're processing this frame we can use the\n     * framelocked timestamp to keep things in sync.\n     */\n    now: () => frameData.isProcessing ? frameData.timestamp : time.now()\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs\nvar generators = {\n  decay: inertia,\n  inertia,\n  tween: keyframes,\n  keyframes,\n  spring\n};\nvar percentToProgress = (percent2) => percent2 / 100;\nvar MainThreadAnimation = class extends BaseAnimation {\n  constructor(options) {\n    super(options);\n    this.holdTime = null;\n    this.cancelTime = null;\n    this.currentTime = 0;\n    this.playbackSpeed = 1;\n    this.pendingPlayState = \"running\";\n    this.startTime = null;\n    this.state = \"idle\";\n    this.stop = () => {\n      this.resolver.cancel();\n      this.isStopped = true;\n      if (this.state === \"idle\")\n        return;\n      this.teardown();\n      const { onStop } = this.options;\n      onStop && onStop();\n    };\n    const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;\n    const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n    const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n    this.resolver = new KeyframeResolver$1(keyframes2, onResolved, name, motionValue2, element);\n    this.resolver.scheduleResolve();\n  }\n  initPlayback(keyframes$1) {\n    const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = this.options;\n    const generatorFactory = isGenerator(type) ? type : generators[type] || keyframes;\n    let mapPercentToKeyframes;\n    let mirroredGenerator;\n    if (generatorFactory !== keyframes && typeof keyframes$1[0] !== \"number\") {\n      if (false) {\n        invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n      }\n      mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n      keyframes$1 = [0, 100];\n    }\n    const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n    if (repeatType === \"mirror\") {\n      mirroredGenerator = generatorFactory({\n        ...this.options,\n        keyframes: [...keyframes$1].reverse(),\n        velocity: -velocity\n      });\n    }\n    if (generator.calculatedDuration === null) {\n      generator.calculatedDuration = calcGeneratorDuration(generator);\n    }\n    const { calculatedDuration } = generator;\n    const resolvedDuration = calculatedDuration + repeatDelay;\n    const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n    return {\n      generator,\n      mirroredGenerator,\n      mapPercentToKeyframes,\n      calculatedDuration,\n      resolvedDuration,\n      totalDuration\n    };\n  }\n  onPostResolved() {\n    const { autoplay = true } = this.options;\n    this.play();\n    if (this.pendingPlayState === \"paused\" || !autoplay) {\n      this.pause();\n    } else {\n      this.state = this.pendingPlayState;\n    }\n  }\n  tick(timestamp, sample = false) {\n    const { resolved } = this;\n    if (!resolved) {\n      const { keyframes: keyframes3 } = this.options;\n      return { done: true, value: keyframes3[keyframes3.length - 1] };\n    }\n    const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes: keyframes2, calculatedDuration, totalDuration, resolvedDuration } = resolved;\n    if (this.startTime === null)\n      return generator.next(0);\n    const { delay: delay2, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n    if (this.speed > 0) {\n      this.startTime = Math.min(this.startTime, timestamp);\n    } else if (this.speed < 0) {\n      this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n    }\n    if (sample) {\n      this.currentTime = timestamp;\n    } else if (this.holdTime !== null) {\n      this.currentTime = this.holdTime;\n    } else {\n      this.currentTime = Math.round(timestamp - this.startTime) * this.speed;\n    }\n    const timeWithoutDelay = this.currentTime - delay2 * (this.speed >= 0 ? 1 : -1);\n    const isInDelayPhase = this.speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n    this.currentTime = Math.max(timeWithoutDelay, 0);\n    if (this.state === \"finished\" && this.holdTime === null) {\n      this.currentTime = totalDuration;\n    }\n    let elapsed = this.currentTime;\n    let frameGenerator = generator;\n    if (repeat) {\n      const progress2 = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n      let currentIteration = Math.floor(progress2);\n      let iterationProgress = progress2 % 1;\n      if (!iterationProgress && progress2 >= 1) {\n        iterationProgress = 1;\n      }\n      iterationProgress === 1 && currentIteration--;\n      currentIteration = Math.min(currentIteration, repeat + 1);\n      const isOddIteration = Boolean(currentIteration % 2);\n      if (isOddIteration) {\n        if (repeatType === \"reverse\") {\n          iterationProgress = 1 - iterationProgress;\n          if (repeatDelay) {\n            iterationProgress -= repeatDelay / resolvedDuration;\n          }\n        } else if (repeatType === \"mirror\") {\n          frameGenerator = mirroredGenerator;\n        }\n      }\n      elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n    }\n    const state2 = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);\n    if (mapPercentToKeyframes) {\n      state2.value = mapPercentToKeyframes(state2.value);\n    }\n    let { done } = state2;\n    if (!isInDelayPhase && calculatedDuration !== null) {\n      done = this.speed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;\n    }\n    const isAnimationFinished = this.holdTime === null && (this.state === \"finished\" || this.state === \"running\" && done);\n    if (isAnimationFinished && finalKeyframe !== void 0) {\n      state2.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe);\n    }\n    if (onUpdate) {\n      onUpdate(state2.value);\n    }\n    if (isAnimationFinished) {\n      this.finish();\n    }\n    return state2;\n  }\n  get duration() {\n    const { resolved } = this;\n    return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n  }\n  get time() {\n    return millisecondsToSeconds(this.currentTime);\n  }\n  set time(newTime) {\n    newTime = secondsToMilliseconds(newTime);\n    this.currentTime = newTime;\n    if (this.holdTime !== null || this.speed === 0) {\n      this.holdTime = newTime;\n    } else if (this.driver) {\n      this.startTime = this.driver.now() - newTime / this.speed;\n    }\n  }\n  get speed() {\n    return this.playbackSpeed;\n  }\n  set speed(newSpeed) {\n    const hasChanged = this.playbackSpeed !== newSpeed;\n    this.playbackSpeed = newSpeed;\n    if (hasChanged) {\n      this.time = millisecondsToSeconds(this.currentTime);\n    }\n  }\n  play() {\n    if (!this.resolver.isScheduled) {\n      this.resolver.resume();\n    }\n    if (!this._resolved) {\n      this.pendingPlayState = \"running\";\n      return;\n    }\n    if (this.isStopped)\n      return;\n    const { driver = frameloopDriver, onPlay, startTime } = this.options;\n    if (!this.driver) {\n      this.driver = driver((timestamp) => this.tick(timestamp));\n    }\n    onPlay && onPlay();\n    const now2 = this.driver.now();\n    if (this.holdTime !== null) {\n      this.startTime = now2 - this.holdTime;\n    } else if (!this.startTime) {\n      this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n    } else if (this.state === \"finished\") {\n      this.startTime = now2;\n    }\n    if (this.state === \"finished\") {\n      this.updateFinishedPromise();\n    }\n    this.cancelTime = this.startTime;\n    this.holdTime = null;\n    this.state = \"running\";\n    this.driver.start();\n  }\n  pause() {\n    var _a;\n    if (!this._resolved) {\n      this.pendingPlayState = \"paused\";\n      return;\n    }\n    this.state = \"paused\";\n    this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n  }\n  complete() {\n    if (this.state !== \"running\") {\n      this.play();\n    }\n    this.pendingPlayState = this.state = \"finished\";\n    this.holdTime = null;\n  }\n  finish() {\n    this.teardown();\n    this.state = \"finished\";\n    const { onComplete } = this.options;\n    onComplete && onComplete();\n  }\n  cancel() {\n    if (this.cancelTime !== null) {\n      this.tick(this.cancelTime);\n    }\n    this.teardown();\n    this.updateFinishedPromise();\n  }\n  teardown() {\n    this.state = \"idle\";\n    this.stopDriver();\n    this.resolveFinishedPromise();\n    this.updateFinishedPromise();\n    this.startTime = this.cancelTime = null;\n    this.resolver.cancel();\n  }\n  stopDriver() {\n    if (!this.driver)\n      return;\n    this.driver.stop();\n    this.driver = void 0;\n  }\n  sample(time2) {\n    this.startTime = 0;\n    return this.tick(time2, true);\n  }\n};\nfunction animateValue(options) {\n  return new MainThreadAnimation(options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs\nvar isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs\nfunction isNone(value) {\n  if (typeof value === \"number\") {\n    return value === 0;\n  } else if (value !== null) {\n    return value === \"none\" || value === \"0\" || isZeroValueString(value);\n  } else {\n    return true;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs\nvar isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs\nvar splitCSSVariableRegex = (\n  // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n  /^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u\n);\nfunction parseCSSVariable(current) {\n  const match = splitCSSVariableRegex.exec(current);\n  if (!match)\n    return [,];\n  const [, token1, token2, fallback] = match;\n  return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n  invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n  const [token, fallback] = parseCSSVariable(current);\n  if (!token)\n    return;\n  const resolved = window.getComputedStyle(element).getPropertyValue(token);\n  if (resolved) {\n    const trimmed = resolved.trim();\n    return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n  }\n  return isCSSVariableToken(fallback) ? getVariableValue(fallback, element, depth + 1) : fallback;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs\nvar testValueType = (v) => (type) => type.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs\nvar auto = {\n  test: (v) => v === \"auto\",\n  parse: (v) => v\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\nvar findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs\nvar maxDefaults = /* @__PURE__ */ new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n  const [name, value] = v.slice(0, -1).split(\"(\");\n  if (name === \"drop-shadow\")\n    return v;\n  const [number2] = value.match(floatRegex) || [];\n  if (!number2)\n    return v;\n  const unit = value.replace(number2, \"\");\n  let defaultValue = maxDefaults.has(name) ? 1 : 0;\n  if (number2 !== value)\n    defaultValue *= 100;\n  return name + \"(\" + defaultValue + unit + \")\";\n}\nvar functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nvar filter = {\n  ...complex,\n  getAnimatableNone: (v) => {\n    const functions = v.match(functionRegex);\n    return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs\nvar browserNumberValueTypes = {\n  // Border props\n  borderWidth: px,\n  borderTopWidth: px,\n  borderRightWidth: px,\n  borderBottomWidth: px,\n  borderLeftWidth: px,\n  borderRadius: px,\n  radius: px,\n  borderTopLeftRadius: px,\n  borderTopRightRadius: px,\n  borderBottomRightRadius: px,\n  borderBottomLeftRadius: px,\n  // Positioning props\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  // Spacing props\n  padding: px,\n  paddingTop: px,\n  paddingRight: px,\n  paddingBottom: px,\n  paddingLeft: px,\n  margin: px,\n  marginTop: px,\n  marginRight: px,\n  marginBottom: px,\n  marginLeft: px,\n  // Misc\n  backgroundPositionX: px,\n  backgroundPositionY: px\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs\nvar transformValueTypes = {\n  rotate: degrees,\n  rotateX: degrees,\n  rotateY: degrees,\n  rotateZ: degrees,\n  scale,\n  scaleX: scale,\n  scaleY: scale,\n  scaleZ: scale,\n  skew: degrees,\n  skewX: degrees,\n  skewY: degrees,\n  distance: px,\n  translateX: px,\n  translateY: px,\n  translateZ: px,\n  x: px,\n  y: px,\n  z: px,\n  perspective: px,\n  transformPerspective: px,\n  opacity: alpha,\n  originX: progressPercentage,\n  originY: progressPercentage,\n  originZ: px\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs\nvar int = {\n  ...number,\n  transform: Math.round\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs\nvar numberValueTypes = {\n  ...browserNumberValueTypes,\n  ...transformValueTypes,\n  zIndex: int,\n  size: px,\n  // SVG\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs\nvar defaultValueTypes = {\n  ...numberValueTypes,\n  // Color props\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  // Border props\n  borderColor: color,\n  borderTopColor: color,\n  borderRightColor: color,\n  borderBottomColor: color,\n  borderLeftColor: color,\n  filter,\n  WebkitFilter: filter\n};\nvar getDefaultValueType = (key) => defaultValueTypes[key];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs\nfunction getAnimatableNone2(key, value) {\n  let defaultValueType = getDefaultValueType(key);\n  if (defaultValueType !== filter)\n    defaultValueType = complex;\n  return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs\nvar invalidTemplates = /* @__PURE__ */ new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n  let i = 0;\n  let animatableTemplate = void 0;\n  while (i < unresolvedKeyframes.length && !animatableTemplate) {\n    const keyframe = unresolvedKeyframes[i];\n    if (typeof keyframe === \"string\" && !invalidTemplates.has(keyframe) && analyseComplexValue(keyframe).values.length) {\n      animatableTemplate = unresolvedKeyframes[i];\n    }\n    i++;\n  }\n  if (animatableTemplate && name) {\n    for (const noneIndex of noneKeyframeIndexes) {\n      unresolvedKeyframes[noneIndex] = getAnimatableNone2(name, animatableTemplate);\n    }\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs\nvar DOMKeyframesResolver = class extends KeyframeResolver {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element) {\n    super(unresolvedKeyframes, onComplete, name, motionValue2, element, true);\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, element, name } = this;\n    if (!element || !element.current)\n      return;\n    super.readKeyframes();\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      let keyframe = unresolvedKeyframes[i];\n      if (typeof keyframe === \"string\") {\n        keyframe = keyframe.trim();\n        if (isCSSVariableToken(keyframe)) {\n          const resolved = getVariableValue(keyframe, element.current);\n          if (resolved !== void 0) {\n            unresolvedKeyframes[i] = resolved;\n          }\n          if (i === unresolvedKeyframes.length - 1) {\n            this.finalKeyframe = keyframe;\n          }\n        }\n      }\n    }\n    this.resolveNoneKeyframes();\n    if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n      return;\n    }\n    const [origin, target] = unresolvedKeyframes;\n    const originType = findDimensionValueType(origin);\n    const targetType = findDimensionValueType(target);\n    if (originType === targetType)\n      return;\n    if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n      for (let i = 0; i < unresolvedKeyframes.length; i++) {\n        const value = unresolvedKeyframes[i];\n        if (typeof value === \"string\") {\n          unresolvedKeyframes[i] = parseFloat(value);\n        }\n      }\n    } else {\n      this.needsMeasurement = true;\n    }\n  }\n  resolveNoneKeyframes() {\n    const { unresolvedKeyframes, name } = this;\n    const noneKeyframeIndexes = [];\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      if (isNone(unresolvedKeyframes[i])) {\n        noneKeyframeIndexes.push(i);\n      }\n    }\n    if (noneKeyframeIndexes.length) {\n      makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n    }\n  }\n  measureInitialState() {\n    const { element, unresolvedKeyframes, name } = this;\n    if (!element || !element.current)\n      return;\n    if (name === \"height\") {\n      this.suspendedScrollY = window.pageYOffset;\n    }\n    this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    unresolvedKeyframes[0] = this.measuredOrigin;\n    const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n    if (measureKeyframe !== void 0) {\n      element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n    }\n  }\n  measureEndState() {\n    var _a;\n    const { element, name, unresolvedKeyframes } = this;\n    if (!element || !element.current)\n      return;\n    const value = element.getValue(name);\n    value && value.jump(this.measuredOrigin, false);\n    const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n    const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n    unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    if (finalKeyframe !== null && this.finalKeyframe === void 0) {\n      this.finalKeyframe = finalKeyframe;\n    }\n    if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n      this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n        element.getValue(unsetTransformName).set(unsetTransformValue);\n      });\n    }\n    this.resolveNoneKeyframes();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs\nvar acceleratedValues = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\"\n  // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n  // or until we implement support for linear() easing.\n  // \"background-color\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs\nvar resolution = 10;\nvar generateLinearEasing = (easing, duration) => {\n  let points = \"\";\n  const numPoints = Math.max(Math.round(duration / resolution), 2);\n  for (let i = 0; i < numPoints; i++) {\n    points += easing(progress(0, numPoints - 1, i)) + \", \";\n  }\n  return `linear(${points.substring(0, points.length - 2)})`;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/memo.mjs\nfunction memo(callback) {\n  let result;\n  return () => {\n    if (result === void 0)\n      result = callback();\n    return result;\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs\nvar supportsFlags = {\n  linearEasing: void 0\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs\nfunction memoSupports(callback, supportsFlag) {\n  const memoized = memo(callback);\n  return () => {\n    var _a;\n    return (_a = supportsFlags[supportsFlag]) !== null && _a !== void 0 ? _a : memoized();\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs\nvar supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n  } catch (e) {\n    return false;\n  }\n  return true;\n}, \"linearEasing\");\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs\nfunction isWaapiSupportedEasing(easing) {\n  return Boolean(typeof easing === \"function\" && supportsLinearEasing() || !easing || typeof easing === \"string\" && (easing in supportedWaapiEasing || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));\n}\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nvar supportedWaapiEasing = {\n  linear: \"linear\",\n  ease: \"ease\",\n  easeIn: \"ease-in\",\n  easeOut: \"ease-out\",\n  easeInOut: \"ease-in-out\",\n  circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),\n  circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),\n  backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n  backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])\n};\nfunction mapEasingToNativeEasing(easing, duration) {\n  if (!easing) {\n    return void 0;\n  } else if (typeof easing === \"function\" && supportsLinearEasing()) {\n    return generateLinearEasing(easing, duration);\n  } else if (isBezierDefinition(easing)) {\n    return cubicBezierAsString(easing);\n  } else if (Array.isArray(easing)) {\n    return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);\n  } else {\n    return supportedWaapiEasing[easing];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs\nfunction startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease: ease2, times } = {}) {\n  const keyframeOptions = { [valueName]: keyframes2 };\n  if (times)\n    keyframeOptions.offset = times;\n  const easing = mapEasingToNativeEasing(ease2, duration);\n  if (Array.isArray(easing))\n    keyframeOptions.easing = easing;\n  return element.animate(keyframeOptions, {\n    delay: delay2,\n    duration,\n    easing: !Array.isArray(easing) ? easing : \"linear\",\n    fill: \"both\",\n    iterations: repeat + 1,\n    direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\"\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs\nfunction attachTimeline(animation, timeline) {\n  animation.timeline = timeline;\n  animation.onfinish = null;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs\nvar supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs\nvar sampleDelta = 10;\nvar maxDuration2 = 2e4;\nfunction requiresPregeneratedKeyframes(options) {\n  return isGenerator(options.type) || options.type === \"spring\" || !isWaapiSupportedEasing(options.ease);\n}\nfunction pregenerateKeyframes(keyframes2, options) {\n  const sampleAnimation = new MainThreadAnimation({\n    ...options,\n    keyframes: keyframes2,\n    repeat: 0,\n    delay: 0,\n    isGenerator: true\n  });\n  let state2 = { done: false, value: keyframes2[0] };\n  const pregeneratedKeyframes = [];\n  let t = 0;\n  while (!state2.done && t < maxDuration2) {\n    state2 = sampleAnimation.sample(t);\n    pregeneratedKeyframes.push(state2.value);\n    t += sampleDelta;\n  }\n  return {\n    times: void 0,\n    keyframes: pregeneratedKeyframes,\n    duration: t - sampleDelta,\n    ease: \"linear\"\n  };\n}\nvar unsupportedEasingFunctions = {\n  anticipate,\n  backInOut,\n  circInOut\n};\nfunction isUnsupportedEase(key) {\n  return key in unsupportedEasingFunctions;\n}\nvar AcceleratedAnimation = class extends BaseAnimation {\n  constructor(options) {\n    super(options);\n    const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;\n    this.resolver = new DOMKeyframesResolver(keyframes2, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue2, element);\n    this.resolver.scheduleResolve();\n  }\n  initPlayback(keyframes2, finalKeyframe) {\n    var _a;\n    let { duration = 300, times, ease: ease2, type, motionValue: motionValue2, name, startTime } = this.options;\n    if (!((_a = motionValue2.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n      return false;\n    }\n    if (typeof ease2 === \"string\" && supportsLinearEasing() && isUnsupportedEase(ease2)) {\n      ease2 = unsupportedEasingFunctions[ease2];\n    }\n    if (requiresPregeneratedKeyframes(this.options)) {\n      const { onComplete, onUpdate, motionValue: motionValue3, element, ...options } = this.options;\n      const pregeneratedAnimation = pregenerateKeyframes(keyframes2, options);\n      keyframes2 = pregeneratedAnimation.keyframes;\n      if (keyframes2.length === 1) {\n        keyframes2[1] = keyframes2[0];\n      }\n      duration = pregeneratedAnimation.duration;\n      times = pregeneratedAnimation.times;\n      ease2 = pregeneratedAnimation.ease;\n      type = \"keyframes\";\n    }\n    const animation = startWaapiAnimation(motionValue2.owner.current, name, keyframes2, { ...this.options, duration, times, ease: ease2 });\n    animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n    if (this.pendingTimeline) {\n      attachTimeline(animation, this.pendingTimeline);\n      this.pendingTimeline = void 0;\n    } else {\n      animation.onfinish = () => {\n        const { onComplete } = this.options;\n        motionValue2.set(getFinalKeyframe(keyframes2, this.options, finalKeyframe));\n        onComplete && onComplete();\n        this.cancel();\n        this.resolveFinishedPromise();\n      };\n    }\n    return {\n      animation,\n      duration,\n      times,\n      type,\n      ease: ease2,\n      keyframes: keyframes2\n    };\n  }\n  get duration() {\n    const { resolved } = this;\n    if (!resolved)\n      return 0;\n    const { duration } = resolved;\n    return millisecondsToSeconds(duration);\n  }\n  get time() {\n    const { resolved } = this;\n    if (!resolved)\n      return 0;\n    const { animation } = resolved;\n    return millisecondsToSeconds(animation.currentTime || 0);\n  }\n  set time(newTime) {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    animation.currentTime = secondsToMilliseconds(newTime);\n  }\n  get speed() {\n    const { resolved } = this;\n    if (!resolved)\n      return 1;\n    const { animation } = resolved;\n    return animation.playbackRate;\n  }\n  set speed(newSpeed) {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    animation.playbackRate = newSpeed;\n  }\n  get state() {\n    const { resolved } = this;\n    if (!resolved)\n      return \"idle\";\n    const { animation } = resolved;\n    return animation.playState;\n  }\n  get startTime() {\n    const { resolved } = this;\n    if (!resolved)\n      return null;\n    const { animation } = resolved;\n    return animation.startTime;\n  }\n  /**\n   * Replace the default DocumentTimeline with another AnimationTimeline.\n   * Currently used for scroll animations.\n   */\n  attachTimeline(timeline) {\n    if (!this._resolved) {\n      this.pendingTimeline = timeline;\n    } else {\n      const { resolved } = this;\n      if (!resolved)\n        return noop;\n      const { animation } = resolved;\n      attachTimeline(animation, timeline);\n    }\n    return noop;\n  }\n  play() {\n    if (this.isStopped)\n      return;\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    if (animation.playState === \"finished\") {\n      this.updateFinishedPromise();\n    }\n    animation.play();\n  }\n  pause() {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation } = resolved;\n    animation.pause();\n  }\n  stop() {\n    this.resolver.cancel();\n    this.isStopped = true;\n    if (this.state === \"idle\")\n      return;\n    this.resolveFinishedPromise();\n    this.updateFinishedPromise();\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    const { animation, keyframes: keyframes2, duration, type, ease: ease2, times } = resolved;\n    if (animation.playState === \"idle\" || animation.playState === \"finished\") {\n      return;\n    }\n    if (this.time) {\n      const { motionValue: motionValue2, onUpdate, onComplete, element, ...options } = this.options;\n      const sampleAnimation = new MainThreadAnimation({\n        ...options,\n        keyframes: keyframes2,\n        duration,\n        type,\n        ease: ease2,\n        times,\n        isGenerator: true\n      });\n      const sampleTime = secondsToMilliseconds(this.time);\n      motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n    }\n    const { onStop } = this.options;\n    onStop && onStop();\n    this.cancel();\n  }\n  complete() {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    resolved.animation.finish();\n  }\n  cancel() {\n    const { resolved } = this;\n    if (!resolved)\n      return;\n    resolved.animation.cancel();\n  }\n  static supports(options) {\n    const { motionValue: motionValue2, name, repeatDelay, repeatType, damping, type } = options;\n    return supportsWaapi() && name && acceleratedValues.has(name) && motionValue2 && motionValue2.owner && motionValue2.owner.current instanceof HTMLElement && /**\n     * If we're outputting values to onUpdate then we can't use WAAPI as there's\n     * no way to read the value from WAAPI every frame.\n     */\n    !motionValue2.owner.getProps().onUpdate && !repeatDelay && repeatType !== \"mirror\" && damping !== 0 && type !== \"inertia\";\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/array.mjs\nfunction addUniqueItem(arr, item) {\n  if (arr.indexOf(item) === -1)\n    arr.push(item);\n}\nfunction removeItem(arr, item) {\n  const index = arr.indexOf(item);\n  if (index > -1)\n    arr.splice(index, 1);\n}\nfunction moveItem([...arr], fromIndex, toIndex) {\n  const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n  if (startIndex >= 0 && startIndex < arr.length) {\n    const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n    const [item] = arr.splice(fromIndex, 1);\n    arr.splice(endIndex, 0, item);\n  }\n  return arr;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs\nvar SubscriptionManager = class {\n  constructor() {\n    this.subscriptions = [];\n  }\n  add(handler) {\n    addUniqueItem(this.subscriptions, handler);\n    return () => removeItem(this.subscriptions, handler);\n  }\n  notify(a, b, c) {\n    const numSubscriptions = this.subscriptions.length;\n    if (!numSubscriptions)\n      return;\n    if (numSubscriptions === 1) {\n      this.subscriptions[0](a, b, c);\n    } else {\n      for (let i = 0; i < numSubscriptions; i++) {\n        const handler = this.subscriptions[i];\n        handler && handler(a, b, c);\n      }\n    }\n  }\n  getSize() {\n    return this.subscriptions.length;\n  }\n  clear() {\n    this.subscriptions.length = 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/index.mjs\nvar MAX_VELOCITY_DELTA = 30;\nvar isFloat = (value) => {\n  return !isNaN(parseFloat(value));\n};\nvar collectMotionValues = {\n  current: void 0\n};\nvar MotionValue = class {\n  /**\n   * @param init - The initiating value\n   * @param config - Optional configuration options\n   *\n   * -  `transformer`: A function to transform incoming values with.\n   *\n   * @internal\n   */\n  constructor(init, options = {}) {\n    this.version = \"11.11.7\";\n    this.canTrackVelocity = null;\n    this.events = {};\n    this.updateAndNotify = (v, render = true) => {\n      const currentTime = time.now();\n      if (this.updatedAt !== currentTime) {\n        this.setPrevFrameValue();\n      }\n      this.prev = this.current;\n      this.setCurrent(v);\n      if (this.current !== this.prev && this.events.change) {\n        this.events.change.notify(this.current);\n      }\n      if (render && this.events.renderRequest) {\n        this.events.renderRequest.notify(this.current);\n      }\n    };\n    this.hasAnimated = false;\n    this.setCurrent(init);\n    this.owner = options.owner;\n  }\n  setCurrent(current) {\n    this.current = current;\n    this.updatedAt = time.now();\n    if (this.canTrackVelocity === null && current !== void 0) {\n      this.canTrackVelocity = isFloat(this.current);\n    }\n  }\n  setPrevFrameValue(prevFrameValue = this.current) {\n    this.prevFrameValue = prevFrameValue;\n    this.prevUpdatedAt = this.updatedAt;\n  }\n  /**\n   * Adds a function that will be notified when the `MotionValue` is updated.\n   *\n   * It returns a function that, when called, will cancel the subscription.\n   *\n   * When calling `onChange` inside a React component, it should be wrapped with the\n   * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n   * from the `useEffect` function to ensure you don't add duplicate subscribers..\n   *\n   * ```jsx\n   * export const MyComponent = () => {\n   *   const x = useMotionValue(0)\n   *   const y = useMotionValue(0)\n   *   const opacity = useMotionValue(1)\n   *\n   *   useEffect(() => {\n   *     function updateOpacity() {\n   *       const maxXY = Math.max(x.get(), y.get())\n   *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n   *       opacity.set(newOpacity)\n   *     }\n   *\n   *     const unsubscribeX = x.on(\"change\", updateOpacity)\n   *     const unsubscribeY = y.on(\"change\", updateOpacity)\n   *\n   *     return () => {\n   *       unsubscribeX()\n   *       unsubscribeY()\n   *     }\n   *   }, [])\n   *\n   *   return <motion.div style={{ x }} />\n   * }\n   * ```\n   *\n   * @param subscriber - A function that receives the latest value.\n   * @returns A function that, when called, will cancel this subscription.\n   *\n   * @deprecated\n   */\n  onChange(subscription) {\n    if (false) {\n      warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n    }\n    return this.on(\"change\", subscription);\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    const unsubscribe = this.events[eventName].add(callback);\n    if (eventName === \"change\") {\n      return () => {\n        unsubscribe();\n        frame.read(() => {\n          if (!this.events.change.getSize()) {\n            this.stop();\n          }\n        });\n      };\n    }\n    return unsubscribe;\n  }\n  clearListeners() {\n    for (const eventManagers in this.events) {\n      this.events[eventManagers].clear();\n    }\n  }\n  /**\n   * Attaches a passive effect to the `MotionValue`.\n   *\n   * @internal\n   */\n  attach(passiveEffect, stopPassiveEffect) {\n    this.passiveEffect = passiveEffect;\n    this.stopPassiveEffect = stopPassiveEffect;\n  }\n  /**\n   * Sets the state of the `MotionValue`.\n   *\n   * @remarks\n   *\n   * ```jsx\n   * const x = useMotionValue(0)\n   * x.set(10)\n   * ```\n   *\n   * @param latest - Latest value to set.\n   * @param render - Whether to notify render subscribers. Defaults to `true`\n   *\n   * @public\n   */\n  set(v, render = true) {\n    if (!render || !this.passiveEffect) {\n      this.updateAndNotify(v, render);\n    } else {\n      this.passiveEffect(v, this.updateAndNotify);\n    }\n  }\n  setWithVelocity(prev, current, delta) {\n    this.set(current);\n    this.prev = void 0;\n    this.prevFrameValue = prev;\n    this.prevUpdatedAt = this.updatedAt - delta;\n  }\n  /**\n   * Set the state of the `MotionValue`, stopping any active animations,\n   * effects, and resets velocity to `0`.\n   */\n  jump(v, endAnimation = true) {\n    this.updateAndNotify(v);\n    this.prev = v;\n    this.prevUpdatedAt = this.prevFrameValue = void 0;\n    endAnimation && this.stop();\n    if (this.stopPassiveEffect)\n      this.stopPassiveEffect();\n  }\n  /**\n   * Returns the latest state of `MotionValue`\n   *\n   * @returns - The latest state of `MotionValue`\n   *\n   * @public\n   */\n  get() {\n    if (collectMotionValues.current) {\n      collectMotionValues.current.push(this);\n    }\n    return this.current;\n  }\n  /**\n   * @public\n   */\n  getPrevious() {\n    return this.prev;\n  }\n  /**\n   * Returns the latest velocity of `MotionValue`\n   *\n   * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n   *\n   * @public\n   */\n  getVelocity() {\n    const currentTime = time.now();\n    if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n      return 0;\n    }\n    const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n    return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);\n  }\n  /**\n   * Registers a new animation to control this `MotionValue`. Only one\n   * animation can drive a `MotionValue` at one time.\n   *\n   * ```jsx\n   * value.start()\n   * ```\n   *\n   * @param animation - A function that starts the provided animation\n   *\n   * @internal\n   */\n  start(startAnimation) {\n    this.stop();\n    return new Promise((resolve) => {\n      this.hasAnimated = true;\n      this.animation = startAnimation(resolve);\n      if (this.events.animationStart) {\n        this.events.animationStart.notify();\n      }\n    }).then(() => {\n      if (this.events.animationComplete) {\n        this.events.animationComplete.notify();\n      }\n      this.clearAnimation();\n    });\n  }\n  /**\n   * Stop the currently active animation.\n   *\n   * @public\n   */\n  stop() {\n    if (this.animation) {\n      this.animation.stop();\n      if (this.events.animationCancel) {\n        this.events.animationCancel.notify();\n      }\n    }\n    this.clearAnimation();\n  }\n  /**\n   * Returns `true` if this value is currently animating.\n   *\n   * @public\n   */\n  isAnimating() {\n    return !!this.animation;\n  }\n  clearAnimation() {\n    delete this.animation;\n  }\n  /**\n   * Destroy and clean up subscribers to this `MotionValue`.\n   *\n   * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n   * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n   * created a `MotionValue` via the `motionValue` function.\n   *\n   * @public\n   */\n  destroy() {\n    this.clearListeners();\n    this.stop();\n    if (this.stopPassiveEffect) {\n      this.stopPassiveEffect();\n    }\n  }\n};\nfunction motionValue(init, options) {\n  return new MotionValue(init, options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs\nvar camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs\nvar optimizedAppearDataId = \"framerAppearId\";\nvar optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs\nvar isMotionValue = (value) => Boolean(value && value.getVelocity);\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs\nfunction getValueState(visualElement) {\n  const state2 = [{}, {}];\n  visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n    state2[0][key] = value.get();\n    state2[1][key] = value.getVelocity();\n  });\n  return state2;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n  if (typeof definition === \"function\") {\n    const [current, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current, velocity);\n  }\n  if (typeof definition === \"string\") {\n    definition = props.variants && props.variants[definition];\n  }\n  if (typeof definition === \"function\") {\n    const [current, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current, velocity);\n  }\n  return definition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs\nfunction resolveVariant(visualElement, definition, custom) {\n  const props = visualElement.getProps();\n  return resolveVariantFromProps(props, definition, custom !== void 0 ? custom : props.custom, visualElement);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs\nvar underDampedSpring = {\n  type: \"spring\",\n  stiffness: 500,\n  damping: 25,\n  restSpeed: 10\n};\nvar criticallyDampedSpring = (target) => ({\n  type: \"spring\",\n  stiffness: 550,\n  damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n  restSpeed: 10\n});\nvar keyframesTransition = {\n  type: \"keyframes\",\n  duration: 0.8\n};\nvar ease = {\n  type: \"keyframes\",\n  ease: [0.25, 0.1, 0.35, 1],\n  duration: 0.3\n};\nvar getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {\n  if (keyframes2.length > 2) {\n    return keyframesTransition;\n  } else if (transformProps.has(valueKey)) {\n    return valueKey.startsWith(\"scale\") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;\n  }\n  return ease;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/get-value-transition.mjs\nfunction getValueTransition(transition, key) {\n  return transition ? transition[key] || transition[\"default\"] || transition : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs\nvar supportsScrollTimeline = memo(() => window.ScrollTimeline !== void 0);\n\n// ../../../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs\nvar GroupPlaybackControls = class {\n  constructor(animations2) {\n    this.stop = () => this.runAll(\"stop\");\n    this.animations = animations2.filter(Boolean);\n  }\n  then(onResolve, onReject) {\n    return Promise.all(this.animations).then(onResolve).catch(onReject);\n  }\n  /**\n   * TODO: Filter out cancelled or stopped animations before returning\n   */\n  getAll(propName) {\n    return this.animations[0][propName];\n  }\n  setAll(propName, newValue) {\n    for (let i = 0; i < this.animations.length; i++) {\n      this.animations[i][propName] = newValue;\n    }\n  }\n  attachTimeline(timeline, fallback) {\n    const subscriptions = this.animations.map((animation) => {\n      if (supportsScrollTimeline() && animation.attachTimeline) {\n        return animation.attachTimeline(timeline);\n      } else {\n        return fallback(animation);\n      }\n    });\n    return () => {\n      subscriptions.forEach((cancel, i) => {\n        cancel && cancel();\n        this.animations[i].stop();\n      });\n    };\n  }\n  get time() {\n    return this.getAll(\"time\");\n  }\n  set time(time2) {\n    this.setAll(\"time\", time2);\n  }\n  get speed() {\n    return this.getAll(\"speed\");\n  }\n  set speed(speed) {\n    this.setAll(\"speed\", speed);\n  }\n  get startTime() {\n    return this.getAll(\"startTime\");\n  }\n  get duration() {\n    let max = 0;\n    for (let i = 0; i < this.animations.length; i++) {\n      max = Math.max(max, this.animations[i].duration);\n    }\n    return max;\n  }\n  runAll(methodName) {\n    this.animations.forEach((controls) => controls[methodName]());\n  }\n  play() {\n    this.runAll(\"play\");\n  }\n  pause() {\n    this.runAll(\"pause\");\n  }\n  cancel() {\n    this.runAll(\"cancel\");\n  }\n  complete() {\n    this.runAll(\"complete\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n  return !!Object.keys(transition).length;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs\nvar animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n  const valueTransition = getValueTransition(transition, name) || {};\n  const delay2 = valueTransition.delay || transition.delay || 0;\n  let { elapsed = 0 } = transition;\n  elapsed = elapsed - secondsToMilliseconds(delay2);\n  let options = {\n    keyframes: Array.isArray(target) ? target : [null, target],\n    ease: \"easeOut\",\n    velocity: value.getVelocity(),\n    ...valueTransition,\n    delay: -elapsed,\n    onUpdate: (v) => {\n      value.set(v);\n      valueTransition.onUpdate && valueTransition.onUpdate(v);\n    },\n    onComplete: () => {\n      onComplete();\n      valueTransition.onComplete && valueTransition.onComplete();\n    },\n    name,\n    motionValue: value,\n    element: isHandoff ? void 0 : element\n  };\n  if (!isTransitionDefined(valueTransition)) {\n    options = {\n      ...options,\n      ...getDefaultTransition(name, options)\n    };\n  }\n  if (options.duration) {\n    options.duration = secondsToMilliseconds(options.duration);\n  }\n  if (options.repeatDelay) {\n    options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n  }\n  if (options.from !== void 0) {\n    options.keyframes[0] = options.from;\n  }\n  let shouldSkip = false;\n  if (options.type === false || options.duration === 0 && !options.repeatDelay) {\n    options.duration = 0;\n    if (options.delay === 0) {\n      shouldSkip = true;\n    }\n  }\n  if (instantAnimationState.current || MotionGlobalConfig.skipAnimations) {\n    shouldSkip = true;\n    options.duration = 0;\n    options.delay = 0;\n  }\n  if (shouldSkip && !isHandoff && value.get() !== void 0) {\n    const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n    if (finalKeyframe !== void 0) {\n      frame.update(() => {\n        options.onUpdate(finalKeyframe);\n        options.onComplete();\n      });\n      return new GroupPlaybackControls([]);\n    }\n  }\n  if (!isHandoff && AcceleratedAnimation.supports(options)) {\n    return new AcceleratedAnimation(options);\n  } else {\n    return new MainThreadAnimation(options);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs\nvar isKeyframesTarget = (v) => {\n  return Array.isArray(v);\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs\nvar isCustomValue = (v) => {\n  return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = (v) => {\n  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/setters.mjs\nfunction setMotionValue(visualElement, key, value) {\n  if (visualElement.hasValue(key)) {\n    visualElement.getValue(key).set(value);\n  } else {\n    visualElement.addValue(key, motionValue(value));\n  }\n}\nfunction setTarget(visualElement, definition) {\n  const resolved = resolveVariant(visualElement, definition);\n  let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n  target = { ...target, ...transitionEnd };\n  for (const key in target) {\n    const value = resolveFinalValueInKeyframes(target[key]);\n    setMotionValue(visualElement, key, value);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs\nfunction getOptimisedAppearId(visualElement) {\n  return visualElement.props[optimizedAppearDataAttribute];\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs\nfunction isWillChangeMotionValue(value) {\n  return Boolean(isMotionValue(value) && value.add);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/get-will-change-name.mjs\nfunction getWillChangeName(name) {\n  if (transformProps.has(name)) {\n    return \"transform\";\n  } else if (acceleratedValues.has(name)) {\n    return camelToDash(name);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs\nfunction addValueToWillChange(visualElement, key) {\n  var _a;\n  if (!visualElement.applyWillChange)\n    return;\n  const willChange = visualElement.getValue(\"willChange\");\n  if (isWillChangeMotionValue(willChange)) {\n    return willChange.add(key);\n  } else if (!((_a = visualElement.props.style) === null || _a === void 0 ? void 0 : _a.willChange) && getWillChangeName(key)) {\n    visualElement.setStaticValue(\"willChange\", \"transform\");\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n  const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n  needsAnimating[key] = false;\n  return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay: delay2 = 0, transitionOverride, type } = {}) {\n  var _a;\n  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n  if (transitionOverride)\n    transition = transitionOverride;\n  const animations2 = [];\n  const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];\n  for (const key in target) {\n    const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n    const valueTarget = target[key];\n    if (valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {\n      continue;\n    }\n    const valueTransition = {\n      delay: delay2,\n      ...getValueTransition(transition || {}, key)\n    };\n    let isHandoff = false;\n    if (window.MotionHandoffAnimation) {\n      const appearId = getOptimisedAppearId(visualElement);\n      if (appearId) {\n        const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n        if (startTime !== null) {\n          valueTransition.startTime = startTime;\n          isHandoff = true;\n        }\n      }\n    }\n    addValueToWillChange(visualElement, key);\n    value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));\n    const animation = value.animation;\n    if (animation) {\n      animations2.push(animation);\n    }\n  }\n  if (transitionEnd) {\n    Promise.all(animations2).then(() => {\n      frame.update(() => {\n        transitionEnd && setTarget(visualElement, transitionEnd);\n      });\n    });\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs\nfunction animateVariant(visualElement, variant, options = {}) {\n  var _a;\n  const resolved = resolveVariant(visualElement, variant, options.type === \"exit\" ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom : void 0);\n  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n  if (options.transitionOverride) {\n    transition = options.transitionOverride;\n  }\n  const getAnimation = resolved ? () => Promise.all(animateTarget(visualElement, resolved, options)) : () => Promise.resolve();\n  const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size ? (forwardDelay = 0) => {\n    const { delayChildren = 0, staggerChildren, staggerDirection } = transition;\n    return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n  } : () => Promise.resolve();\n  const { when } = transition;\n  if (when) {\n    const [first, last] = when === \"beforeChildren\" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation];\n    return first().then(() => last());\n  } else {\n    return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n  }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n  const animations2 = [];\n  const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n  const generateStaggerDuration = staggerDirection === 1 ? (i = 0) => i * staggerChildren : (i = 0) => maxStaggerDuration - i * staggerChildren;\n  Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach((child, i) => {\n    child.notify(\"AnimationStart\", variant);\n    animations2.push(animateVariant(child, variant, {\n      ...options,\n      delay: delayChildren + generateStaggerDuration(i)\n    }).then(() => child.notify(\"AnimationComplete\", variant)));\n  });\n  return Promise.all(animations2);\n}\nfunction sortByTreeOrder(a, b) {\n  return a.sortNodePosition(b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs\nfunction animateVisualElement(visualElement, definition, options = {}) {\n  visualElement.notify(\"AnimationStart\", definition);\n  let animation;\n  if (Array.isArray(definition)) {\n    const animations2 = definition.map((variant) => animateVariant(visualElement, variant, options));\n    animation = Promise.all(animations2);\n  } else if (typeof definition === \"string\") {\n    animation = animateVariant(visualElement, definition, options);\n  } else {\n    const resolvedDefinition = typeof definition === \"function\" ? resolveVariant(visualElement, definition, options.custom) : definition;\n    animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n  }\n  return animation.then(() => {\n    visualElement.notify(\"AnimationComplete\", definition);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs\nfunction isAnimationControls(v) {\n  return v !== null && typeof v === \"object\" && typeof v.start === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs\nfunction shallowCompare(next, prev) {\n  if (!Array.isArray(prev))\n    return false;\n  const prevLength = prev.length;\n  if (prevLength !== next.length)\n    return false;\n  for (let i = 0; i < prevLength; i++) {\n    if (prev[i] !== next[i])\n      return false;\n  }\n  return true;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs\nfunction isVariantLabel(v) {\n  return typeof v === \"string\" || Array.isArray(v);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs\nvar variantPriorityOrder = [\n  \"animate\",\n  \"whileInView\",\n  \"whileFocus\",\n  \"whileHover\",\n  \"whileTap\",\n  \"whileDrag\",\n  \"exit\"\n];\nvar variantProps = [\"initial\", ...variantPriorityOrder];\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs\nvar numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n  if (!visualElement)\n    return void 0;\n  if (!visualElement.isControllingVariants) {\n    const context2 = visualElement.parent ? getVariantContext(visualElement.parent) || {} : {};\n    if (visualElement.props.initial !== void 0) {\n      context2.initial = visualElement.props.initial;\n    }\n    return context2;\n  }\n  const context = {};\n  for (let i = 0; i < numVariantProps; i++) {\n    const name = variantProps[i];\n    const prop = visualElement.props[name];\n    if (isVariantLabel(prop) || prop === false) {\n      context[name] = prop;\n    }\n  }\n  return context;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs\nvar reversePriorityOrder = [...variantPriorityOrder].reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n  return (animations2) => Promise.all(animations2.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n  let animate2 = animateList(visualElement);\n  let state2 = createState();\n  let isInitialRender = true;\n  const buildResolvedTypeValues = (type) => (acc, definition) => {\n    var _a;\n    const resolved = resolveVariant(visualElement, definition, type === \"exit\" ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom : void 0);\n    if (resolved) {\n      const { transition, transitionEnd, ...target } = resolved;\n      acc = { ...acc, ...target, ...transitionEnd };\n    }\n    return acc;\n  };\n  function setAnimateFunction(makeAnimator) {\n    animate2 = makeAnimator(visualElement);\n  }\n  function animateChanges(changedActiveType) {\n    const { props } = visualElement;\n    const context = getVariantContext(visualElement.parent) || {};\n    const animations2 = [];\n    const removedKeys = /* @__PURE__ */ new Set();\n    let encounteredKeys = {};\n    let removedVariantIndex = Infinity;\n    for (let i = 0; i < numAnimationTypes; i++) {\n      const type = reversePriorityOrder[i];\n      const typeState = state2[type];\n      const prop = props[type] !== void 0 ? props[type] : context[type];\n      const propIsVariant = isVariantLabel(prop);\n      const activeDelta = type === changedActiveType ? typeState.isActive : null;\n      if (activeDelta === false)\n        removedVariantIndex = i;\n      let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n      if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) {\n        isInherited = false;\n      }\n      typeState.protectedKeys = { ...encounteredKeys };\n      if (\n        // If it isn't active and hasn't *just* been set as inactive\n        !typeState.isActive && activeDelta === null || // If we didn't and don't have any defined prop for this animation type\n        !prop && !typeState.prevProp || // Or if the prop doesn't define an animation\n        isAnimationControls(prop) || typeof prop === \"boolean\"\n      ) {\n        continue;\n      }\n      const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n      let shouldAnimateType = variantDidChange || // If we're making this variant active, we want to always make it active\n      type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || // If we removed a higher-priority variant (i is in reverse order)\n      i > removedVariantIndex && propIsVariant;\n      let handledRemovedValues = false;\n      const definitionList = Array.isArray(prop) ? prop : [prop];\n      let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n      if (activeDelta === false)\n        resolvedValues = {};\n      const { prevResolvedValues = {} } = typeState;\n      const allKeys = {\n        ...prevResolvedValues,\n        ...resolvedValues\n      };\n      const markToAnimate = (key) => {\n        shouldAnimateType = true;\n        if (removedKeys.has(key)) {\n          handledRemovedValues = true;\n          removedKeys.delete(key);\n        }\n        typeState.needsAnimating[key] = true;\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = false;\n      };\n      for (const key in allKeys) {\n        const next = resolvedValues[key];\n        const prev = prevResolvedValues[key];\n        if (encounteredKeys.hasOwnProperty(key))\n          continue;\n        let valueHasChanged = false;\n        if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n          valueHasChanged = !shallowCompare(next, prev);\n        } else {\n          valueHasChanged = next !== prev;\n        }\n        if (valueHasChanged) {\n          if (next !== void 0 && next !== null) {\n            markToAnimate(key);\n          } else {\n            removedKeys.add(key);\n          }\n        } else if (next !== void 0 && removedKeys.has(key)) {\n          markToAnimate(key);\n        } else {\n          typeState.protectedKeys[key] = true;\n        }\n      }\n      typeState.prevProp = prop;\n      typeState.prevResolvedValues = resolvedValues;\n      if (typeState.isActive) {\n        encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n      }\n      if (isInitialRender && visualElement.blockInitialAnimation) {\n        shouldAnimateType = false;\n      }\n      const willAnimateViaParent = isInherited && variantDidChange;\n      const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n      if (shouldAnimateType && needsAnimating) {\n        animations2.push(...definitionList.map((animation) => ({\n          animation,\n          options: { type }\n        })));\n      }\n    }\n    if (removedKeys.size) {\n      const fallbackAnimation = {};\n      removedKeys.forEach((key) => {\n        const fallbackTarget = visualElement.getBaseTarget(key);\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = true;\n        fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n      });\n      animations2.push({ animation: fallbackAnimation });\n    }\n    let shouldAnimate = Boolean(animations2.length);\n    if (isInitialRender && (props.initial === false || props.initial === props.animate) && !visualElement.manuallyAnimateOnMount) {\n      shouldAnimate = false;\n    }\n    isInitialRender = false;\n    return shouldAnimate ? animate2(animations2) : Promise.resolve();\n  }\n  function setActive(type, isActive) {\n    var _a;\n    if (state2[type].isActive === isActive)\n      return Promise.resolve();\n    (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n      var _a2;\n      return (_a2 = child.animationState) === null || _a2 === void 0 ? void 0 : _a2.setActive(type, isActive);\n    });\n    state2[type].isActive = isActive;\n    const animations2 = animateChanges(type);\n    for (const key in state2) {\n      state2[key].protectedKeys = {};\n    }\n    return animations2;\n  }\n  return {\n    animateChanges,\n    setActive,\n    setAnimateFunction,\n    getState: () => state2,\n    reset: () => {\n      state2 = createState();\n      isInitialRender = true;\n    }\n  };\n}\nfunction checkVariantsDidChange(prev, next) {\n  if (typeof next === \"string\") {\n    return next !== prev;\n  } else if (Array.isArray(next)) {\n    return !shallowCompare(next, prev);\n  }\n  return false;\n}\nfunction createTypeState(isActive = false) {\n  return {\n    isActive,\n    protectedKeys: {},\n    needsAnimating: {},\n    prevResolvedValues: {}\n  };\n}\nfunction createState() {\n  return {\n    animate: createTypeState(true),\n    whileInView: createTypeState(),\n    whileHover: createTypeState(),\n    whileTap: createTypeState(),\n    whileDrag: createTypeState(),\n    whileFocus: createTypeState(),\n    exit: createTypeState()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs\nvar Feature = class {\n  constructor(node) {\n    this.isMounted = false;\n    this.node = node;\n  }\n  update() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs\nvar AnimationFeature = class extends Feature {\n  /**\n   * We dynamically generate the AnimationState manager as it contains a reference\n   * to the underlying animation library. We only want to load that if we load this,\n   * so people can optionally code split it out using the `m` component.\n   */\n  constructor(node) {\n    super(node);\n    node.animationState || (node.animationState = createAnimationState(node));\n  }\n  updateAnimationControlsSubscription() {\n    const { animate: animate2 } = this.node.getProps();\n    if (isAnimationControls(animate2)) {\n      this.unmountControls = animate2.subscribe(this.node);\n    }\n  }\n  /**\n   * Subscribe any provided AnimationControls to the component's VisualElement\n   */\n  mount() {\n    this.updateAnimationControlsSubscription();\n  }\n  update() {\n    const { animate: animate2 } = this.node.getProps();\n    const { animate: prevAnimate } = this.node.prevProps || {};\n    if (animate2 !== prevAnimate) {\n      this.updateAnimationControlsSubscription();\n    }\n  }\n  unmount() {\n    var _a;\n    this.node.animationState.reset();\n    (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs\nvar id = 0;\nvar ExitAnimationFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.id = id++;\n  }\n  update() {\n    if (!this.node.presenceContext)\n      return;\n    const { isPresent: isPresent2, onExitComplete } = this.node.presenceContext;\n    const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n    if (!this.node.animationState || isPresent2 === prevIsPresent) {\n      return;\n    }\n    const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent2);\n    if (onExitComplete && !isPresent2) {\n      exitAnimation.then(() => onExitComplete(this.id));\n    }\n  }\n  mount() {\n    const { register } = this.node.presenceContext || {};\n    if (register) {\n      this.unmount = register(this.id);\n    }\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nvar animations = {\n  animation: {\n    Feature: AnimationFeature\n  },\n  exit: {\n    Feature: ExitAnimationFeature\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs\nvar isPrimaryPointer = (event) => {\n  if (event.pointerType === \"mouse\") {\n    return typeof event.button !== \"number\" || event.button <= 0;\n  } else {\n    return event.isPrimary !== false;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/event-info.mjs\nfunction extractEventInfo(event, pointType = \"page\") {\n  return {\n    point: {\n      x: event[`${pointType}X`],\n      y: event[`${pointType}Y`]\n    }\n  };\n}\nvar addPointerInfo = (handler) => {\n  return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n  target.addEventListener(eventName, handler, options);\n  return () => target.removeEventListener(eventName, handler);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/distance.mjs\nvar distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n  const xDelta = distance(a.x, b.x);\n  const yDelta = distance(a.y, b.y);\n  return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs\nfunction createLock(name) {\n  let lock = null;\n  return () => {\n    const openLock = () => {\n      lock = null;\n    };\n    if (lock === null) {\n      lock = name;\n      return openLock;\n    }\n    return false;\n  };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag2) {\n  let lock = false;\n  if (drag2 === \"y\") {\n    lock = globalVerticalLock();\n  } else if (drag2 === \"x\") {\n    lock = globalHorizontalLock();\n  } else {\n    const openHorizontal = globalHorizontalLock();\n    const openVertical = globalVerticalLock();\n    if (openHorizontal && openVertical) {\n      lock = () => {\n        openHorizontal();\n        openVertical();\n      };\n    } else {\n      if (openHorizontal)\n        openHorizontal();\n      if (openVertical)\n        openVertical();\n    }\n  }\n  return lock;\n}\nfunction isDragActive() {\n  const openGestureLock = getGlobalLock(true);\n  if (!openGestureLock)\n    return true;\n  openGestureLock();\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs\nvar SCALE_PRECISION = 1e-4;\nvar SCALE_MIN = 1 - SCALE_PRECISION;\nvar SCALE_MAX = 1 + SCALE_PRECISION;\nvar TRANSLATE_PRECISION = 0.01;\nvar TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nvar TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n  return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n  return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n  delta.origin = origin;\n  delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n  delta.scale = calcLength(target) / calcLength(source);\n  delta.translate = mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n  if (delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX || isNaN(delta.scale)) {\n    delta.scale = 1;\n  }\n  if (delta.translate >= TRANSLATE_MIN && delta.translate <= TRANSLATE_MAX || isNaN(delta.translate)) {\n    delta.translate = 0;\n  }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n  calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);\n  calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n  target.min = parent.min + relative.min;\n  target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n  calcRelativeAxis(target.x, relative.x, parent.x);\n  calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout2, parent) {\n  target.min = layout2.min - parent.min;\n  target.max = target.min + calcLength(layout2);\n}\nfunction calcRelativePosition(target, layout2, parent) {\n  calcRelativeAxisPosition(target.x, layout2.x, parent.x);\n  calcRelativeAxisPosition(target.y, layout2.y, parent.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs\nvar createAxisDelta = () => ({\n  translate: 0,\n  scale: 1,\n  origin: 0,\n  originPoint: 0\n});\nvar createDelta = () => ({\n  x: createAxisDelta(),\n  y: createAxisDelta()\n});\nvar createAxis = () => ({ min: 0, max: 0 });\nvar createBox = () => ({\n  x: createAxis(),\n  y: createAxis()\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs\nimport { createContext } from \"react\";\nvar PresenceContext = createContext(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs\nimport { useContext, useId, useEffect, useCallback } from \"react\";\nfunction usePresence() {\n  const context = useContext(PresenceContext);\n  if (context === null)\n    return [true, null];\n  const { isPresent: isPresent2, onExitComplete, register } = context;\n  const id4 = useId();\n  useEffect(() => register(id4), []);\n  const safeToRemove = useCallback(() => onExitComplete && onExitComplete(id4), [id4, onExitComplete]);\n  return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];\n}\nfunction useIsPresent() {\n  return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n  return context === null ? true : context.isPresent;\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\nimport { createContext as createContext2 } from \"react\";\nvar LayoutGroupContext = createContext2({});\n\n// ../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs\nimport { createContext as createContext3 } from \"react\";\nvar SwitchLayoutGroupContext = createContext3({});\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs\nvar scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n  Object.assign(scaleCorrectors, correctors);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs\nvar compareByDepth = (a, b) => a.depth - b.depth;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs\nvar FlatTree = class {\n  constructor() {\n    this.children = [];\n    this.isDirty = false;\n  }\n  add(child) {\n    addUniqueItem(this.children, child);\n    this.isDirty = true;\n  }\n  remove(child) {\n    removeItem(this.children, child);\n    this.isDirty = true;\n  }\n  forEach(callback) {\n    this.isDirty && this.children.sort(compareByDepth);\n    this.isDirty = false;\n    this.children.forEach(callback);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs\nfunction resolveMotionValue(value) {\n  const unwrappedValue = isMotionValue(value) ? value.get() : value;\n  return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/delay.mjs\nfunction delay(callback, timeout) {\n  const start = time.now();\n  const checkElapsed = ({ timestamp }) => {\n    const elapsed = timestamp - start;\n    if (elapsed >= timeout) {\n      cancelFrame(checkElapsed);\n      callback(elapsed - timeout);\n    }\n  };\n  frame.read(checkElapsed, true);\n  return () => cancelFrame(checkElapsed);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\nimport { createContext as createContext4 } from \"react\";\nvar MotionConfigContext = createContext4({\n  transformPagePoint: (p) => p,\n  isStatic: false,\n  reducedMotion: \"never\"\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs\nimport { createContext as createContext5 } from \"react\";\nvar MotionContext = createContext5({});\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs\nvar isBrowser = typeof window !== \"undefined\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs\nimport { useLayoutEffect, useEffect as useEffect2 } from \"react\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect2;\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nimport { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useContext as useContext4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nimport { useContext as useContext2, useRef, useInsertionEffect, useEffect as useEffect3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs\nimport { createContext as createContext6 } from \"react\";\nvar LazyContext = createContext6({ strict: false });\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/microtask.mjs\nvar { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs\nfunction isRefObject(ref) {\n  return ref && typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nfunction useVisualElement(Component3, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n  var _a, _b;\n  const { visualElement: parent } = useContext2(MotionContext);\n  const lazyContext = useContext2(LazyContext);\n  const presenceContext = useContext2(PresenceContext);\n  const reducedMotionConfig = useContext2(MotionConfigContext).reducedMotion;\n  const visualElementRef = useRef();\n  createVisualElement = createVisualElement || lazyContext.renderer;\n  if (!visualElementRef.current && createVisualElement) {\n    visualElementRef.current = createVisualElement(Component3, {\n      visualState,\n      parent,\n      props,\n      presenceContext,\n      blockInitialAnimation: presenceContext ? presenceContext.initial === false : false,\n      reducedMotionConfig\n    });\n  }\n  const visualElement = visualElementRef.current;\n  const initialLayoutGroupConfig = useContext2(SwitchLayoutGroupContext);\n  if (visualElement && !visualElement.projection && ProjectionNodeConstructor && (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n    createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n  }\n  useInsertionEffect(() => {\n    visualElement && visualElement.update(props, presenceContext);\n  });\n  const optimisedAppearId = props[optimizedAppearDataAttribute];\n  const wantsHandoff = useRef(Boolean(optimisedAppearId) && !((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));\n  useIsomorphicLayoutEffect(() => {\n    if (!visualElement)\n      return;\n    window.MotionIsMounted = true;\n    visualElement.updateFeatures();\n    microtask.render(visualElement.render);\n    if (wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n  });\n  useEffect3(() => {\n    if (!visualElement)\n      return;\n    if (!wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n    if (wantsHandoff.current) {\n      queueMicrotask(() => {\n        var _a2;\n        (_a2 = window.MotionHandoffMarkAsComplete) === null || _a2 === void 0 ? void 0 : _a2.call(window, optimisedAppearId);\n      });\n      wantsHandoff.current = false;\n    }\n  });\n  return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n  const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot } = props;\n  visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"] ? void 0 : getClosestProjectingNode(visualElement.parent));\n  visualElement.projection.setOptions({\n    layoutId,\n    layout: layout2,\n    alwaysMeasureLayout: Boolean(drag2) || dragConstraints && isRefObject(dragConstraints),\n    visualElement,\n    /**\n     * TODO: Update options in an effect. This could be tricky as it'll be too late\n     * to update by the time layout animations run.\n     * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n     * ensuring it gets called if there's no potential layout animations.\n     *\n     */\n    animationType: typeof layout2 === \"string\" ? layout2 : \"both\",\n    initialPromotionConfig,\n    layoutScroll,\n    layoutRoot\n  });\n}\nfunction getClosestProjectingNode(visualElement) {\n  if (!visualElement)\n    return void 0;\n  return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nimport { useCallback as useCallback2 } from \"react\";\nfunction useMotionRef(visualState, visualElement, externalRef) {\n  return useCallback2(\n    (instance) => {\n      instance && visualState.mount && visualState.mount(instance);\n      if (visualElement) {\n        if (instance) {\n          visualElement.mount(instance);\n        } else {\n          visualElement.unmount();\n        }\n      }\n      if (externalRef) {\n        if (typeof externalRef === \"function\") {\n          externalRef(instance);\n        } else if (isRefObject(externalRef)) {\n          externalRef.current = instance;\n        }\n      }\n    },\n    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]\n  );\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nimport { useContext as useContext3, useMemo } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs\nfunction isControllingVariants(props) {\n  return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));\n}\nfunction isVariantNode(props) {\n  return Boolean(isControllingVariants(props) || props.variants);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs\nfunction getCurrentTreeVariants(props, context) {\n  if (isControllingVariants(props)) {\n    const { initial, animate: animate2 } = props;\n    return {\n      initial: initial === false || isVariantLabel(initial) ? initial : void 0,\n      animate: isVariantLabel(animate2) ? animate2 : void 0\n    };\n  }\n  return props.inherit !== false ? context : {};\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nfunction useCreateMotionContext(props) {\n  const { initial, animate: animate2 } = getCurrentTreeVariants(props, useContext3(MotionContext));\n  return useMemo(() => ({ initial, animate: animate2 }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate2)]);\n}\nfunction variantLabelsAsDependency(prop) {\n  return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs\nvar featureProps = {\n  animation: [\n    \"animate\",\n    \"variants\",\n    \"whileHover\",\n    \"whileTap\",\n    \"exit\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileDrag\"\n  ],\n  exit: [\"exit\"],\n  drag: [\"drag\", \"dragControls\"],\n  focus: [\"whileFocus\"],\n  hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n  tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n  pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n  inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n  layout: [\"layout\", \"layoutId\"]\n};\nvar featureDefinitions = {};\nfor (const key in featureProps) {\n  featureDefinitions[key] = {\n    isEnabled: (props) => featureProps[key].some((name) => !!props[name])\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs\nfunction loadFeatures(features) {\n  for (const key in features) {\n    featureDefinitions[key] = {\n      ...featureDefinitions[key],\n      ...features[key]\n    };\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs\nvar motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState: useVisualState2, Component: Component3 }) {\n  preloadedFeatures && loadFeatures(preloadedFeatures);\n  function MotionComponent(props, externalRef) {\n    let MeasureLayout2;\n    const configAndProps = {\n      ...useContext4(MotionConfigContext),\n      ...props,\n      layoutId: useLayoutId(props)\n    };\n    const { isStatic } = configAndProps;\n    const context = useCreateMotionContext(props);\n    const visualState = useVisualState2(props, isStatic);\n    if (!isStatic && isBrowser) {\n      useStrictMode(configAndProps, preloadedFeatures);\n      const layoutProjection = getProjectionFunctionality(configAndProps);\n      MeasureLayout2 = layoutProjection.MeasureLayout;\n      context.visualElement = useVisualElement(Component3, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n    }\n    return jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout2 && context.visualElement ? jsx(MeasureLayout2, { visualElement: context.visualElement, ...configAndProps }) : null, useRender(Component3, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] });\n  }\n  const ForwardRefMotionComponent = forwardRef(MotionComponent);\n  ForwardRefMotionComponent[motionComponentSymbol] = Component3;\n  return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n  const layoutGroupId = useContext4(LayoutGroupContext).id;\n  return layoutGroupId && layoutId !== void 0 ? layoutGroupId + \"-\" + layoutId : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n  const isStrict = useContext4(LazyContext).strict;\n  if (false) {\n    const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n    configAndProps.ignoreStrict ? warning(false, strictMessage) : invariant(false, strictMessage);\n  }\n}\nfunction getProjectionFunctionality(props) {\n  const { drag: drag2, layout: layout2 } = featureDefinitions;\n  if (!drag2 && !layout2)\n    return {};\n  const combined = { ...drag2, ...layout2 };\n  return {\n    MeasureLayout: (drag2 === null || drag2 === void 0 ? void 0 : drag2.isEnabled(props)) || (layout2 === null || layout2 === void 0 ? void 0 : layout2.isEnabled(props)) ? combined.MeasureLayout : void 0,\n    ProjectionNode: combined.ProjectionNode\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nimport { useContext as useContext5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs\nimport { useRef as useRef2 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef2(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nfunction makeState({ applyWillChange = false, scrapeMotionValuesFromProps: scrapeMotionValuesFromProps3, createRenderState, onMount }, props, context, presenceContext, isStatic) {\n  const state2 = {\n    latestValues: makeLatestValues(props, context, presenceContext, isStatic ? false : applyWillChange, scrapeMotionValuesFromProps3),\n    renderState: createRenderState()\n  };\n  if (onMount) {\n    state2.mount = (instance) => onMount(props, instance, state2);\n  }\n  return state2;\n}\nvar makeUseVisualState = (config) => (props, isStatic) => {\n  const context = useContext5(MotionContext);\n  const presenceContext = useContext5(PresenceContext);\n  const make = () => makeState(config, props, context, presenceContext, isStatic);\n  return isStatic ? make() : useConstant(make);\n};\nfunction forEachDefinition(props, definition, callback) {\n  const list = Array.isArray(definition) ? definition : [definition];\n  for (let i = 0; i < list.length; i++) {\n    const resolved = resolveVariantFromProps(props, list[i]);\n    if (resolved) {\n      const { transitionEnd, transition, ...target } = resolved;\n      callback(target, transitionEnd);\n    }\n  }\n}\nfunction makeLatestValues(props, context, presenceContext, shouldApplyWillChange, scrapeMotionValues) {\n  var _a;\n  const values = {};\n  let applyWillChange = shouldApplyWillChange && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.willChange) === void 0;\n  const motionValues = scrapeMotionValues(props, {});\n  for (const key in motionValues) {\n    values[key] = resolveMotionValue(motionValues[key]);\n  }\n  let { initial, animate: animate2 } = props;\n  const isControllingVariants$1 = isControllingVariants(props);\n  const isVariantNode$1 = isVariantNode(props);\n  if (context && isVariantNode$1 && !isControllingVariants$1 && props.inherit !== false) {\n    if (initial === void 0)\n      initial = context.initial;\n    if (animate2 === void 0)\n      animate2 = context.animate;\n  }\n  let isInitialAnimationBlocked = presenceContext ? presenceContext.initial === false : false;\n  isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n  const variantToSet = isInitialAnimationBlocked ? animate2 : initial;\n  if (variantToSet && typeof variantToSet !== \"boolean\" && !isAnimationControls(variantToSet)) {\n    forEachDefinition(props, variantToSet, (target, transitionEnd) => {\n      for (const key in target) {\n        let valueTarget = target[key];\n        if (Array.isArray(valueTarget)) {\n          const index = isInitialAnimationBlocked ? valueTarget.length - 1 : 0;\n          valueTarget = valueTarget[index];\n        }\n        if (valueTarget !== null) {\n          values[key] = valueTarget;\n        }\n      }\n      for (const key in transitionEnd) {\n        values[key] = transitionEnd[key];\n      }\n    });\n  }\n  if (applyWillChange) {\n    if (animate2 && initial !== false && !isAnimationControls(animate2)) {\n      forEachDefinition(props, animate2, (target) => {\n        for (const key in target) {\n          const willChangeName = getWillChangeName(key);\n          if (willChangeName) {\n            values.willChange = \"transform\";\n            return;\n          }\n        }\n      });\n    }\n  }\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs\nvar getValueAsType = (value, type) => {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nvar numTransforms = transformPropOrder.length;\nfunction buildTransform(latestValues, transform2, transformTemplate) {\n  let transformString = \"\";\n  let transformIsDefault = true;\n  for (let i = 0; i < numTransforms; i++) {\n    const key = transformPropOrder[i];\n    const value = latestValues[key];\n    if (value === void 0)\n      continue;\n    let valueIsDefault = true;\n    if (typeof value === \"number\") {\n      valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n    } else {\n      valueIsDefault = parseFloat(value) === 0;\n    }\n    if (!valueIsDefault || transformTemplate) {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (!valueIsDefault) {\n        transformIsDefault = false;\n        const transformName = translateAlias[key] || key;\n        transformString += `${transformName}(${valueAsType}) `;\n      }\n      if (transformTemplate) {\n        transform2[key] = valueAsType;\n      }\n    }\n  }\n  transformString = transformString.trim();\n  if (transformTemplate) {\n    transformString = transformTemplate(transform2, transformIsDefault ? \"\" : transformString);\n  } else if (transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs\nvar validMotionProps = /* @__PURE__ */ new Set([\n  \"animate\",\n  \"exit\",\n  \"variants\",\n  \"initial\",\n  \"style\",\n  \"values\",\n  \"variants\",\n  \"transition\",\n  \"transformTemplate\",\n  \"custom\",\n  \"inherit\",\n  \"onBeforeLayoutMeasure\",\n  \"onAnimationStart\",\n  \"onAnimationComplete\",\n  \"onUpdate\",\n  \"onDragStart\",\n  \"onDrag\",\n  \"onDragEnd\",\n  \"onMeasureDragConstraints\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"_dragX\",\n  \"_dragY\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"onViewportEnter\",\n  \"onViewportLeave\",\n  \"globalTapTarget\",\n  \"ignoreStrict\",\n  \"viewport\"\n]);\nfunction isValidMotionProp(key) {\n  return key.startsWith(\"while\") || key.startsWith(\"drag\") && key !== \"draggable\" || key.startsWith(\"layout\") || key.startsWith(\"onTap\") || key.startsWith(\"onPan\") || key.startsWith(\"onLayout\") || validMotionProps.has(key);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs\nvar shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n  if (!isValidProp)\n    return;\n  shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\ntry {\n  loadExternalIsValidProp(require_is_prop_valid_browser_cjs().default);\n} catch (_a) {\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n  const filteredProps = {};\n  for (const key in props) {\n    if (key === \"values\" && typeof props.values === \"object\")\n      continue;\n    if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || // If trying to use native HTML drag events, forward drag listeners\n    props[\"draggable\"] && key.startsWith(\"onDrag\")) {\n      filteredProps[key] = props[key];\n    }\n  }\n  return filteredProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/store.mjs\nvar visualElementStore = /* @__PURE__ */ new WeakMap();\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs\nvar prefersReducedMotion = { current: null };\nvar hasReducedMotionListener = { current: false };\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs\nfunction initPrefersReducedMotion() {\n  hasReducedMotionListener.current = true;\n  if (!isBrowser)\n    return;\n  if (window.matchMedia) {\n    const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n    const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;\n    motionMediaQuery.addListener(setReducedMotionPreferences);\n    setReducedMotionPreferences();\n  } else {\n    prefersReducedMotion.current = false;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs\nfunction updateMotionValuesFromProps(element, next, prev) {\n  for (const key in next) {\n    const nextValue = next[key];\n    const prevValue = prev[key];\n    if (isMotionValue(nextValue)) {\n      element.addValue(key, nextValue);\n      if (false) {\n        warnOnce(nextValue.version === \"11.11.7\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.11.7 may not work as expected.`);\n      }\n    } else if (isMotionValue(prevValue)) {\n      element.addValue(key, motionValue(nextValue, { owner: element }));\n    } else if (prevValue !== nextValue) {\n      if (element.hasValue(key)) {\n        const existingValue = element.getValue(key);\n        if (existingValue.liveStyle === true) {\n          existingValue.jump(nextValue);\n        } else if (!existingValue.hasAnimated) {\n          existingValue.set(nextValue);\n        }\n      } else {\n        const latestValue = element.getStaticValue(key);\n        element.addValue(key, motionValue(latestValue !== void 0 ? latestValue : nextValue, { owner: element }));\n      }\n    }\n  }\n  for (const key in prev) {\n    if (next[key] === void 0)\n      element.removeValue(key);\n  }\n  return next;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs\nvar valueTypes = [...dimensionValueTypes, color, complex];\nvar findValueType = (v) => valueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nvar propEventHandlers = [\n  \"AnimationStart\",\n  \"AnimationComplete\",\n  \"Update\",\n  \"BeforeLayoutMeasure\",\n  \"LayoutMeasure\",\n  \"LayoutAnimationStart\",\n  \"LayoutAnimationComplete\"\n];\nvar VisualElement = class {\n  /**\n   * This method takes React props and returns found MotionValues. For example, HTML\n   * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n   *\n   * This isn't an abstract method as it needs calling in the constructor, but it is\n   * intended to be one.\n   */\n  scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n    return {};\n  }\n  constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState }, options = {}) {\n    this.applyWillChange = false;\n    this.current = null;\n    this.children = /* @__PURE__ */ new Set();\n    this.isVariantNode = false;\n    this.isControllingVariants = false;\n    this.shouldReduceMotion = null;\n    this.values = /* @__PURE__ */ new Map();\n    this.KeyframeResolver = KeyframeResolver;\n    this.features = {};\n    this.valueSubscriptions = /* @__PURE__ */ new Map();\n    this.prevMotionValues = {};\n    this.events = {};\n    this.propEventSubscriptions = {};\n    this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n    this.render = () => {\n      if (!this.current)\n        return;\n      this.triggerBuild();\n      this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n    };\n    this.renderScheduledAt = 0;\n    this.scheduleRender = () => {\n      const now2 = time.now();\n      if (this.renderScheduledAt < now2) {\n        this.renderScheduledAt = now2;\n        frame.render(this.render, false, true);\n      }\n    };\n    const { latestValues, renderState } = visualState;\n    this.latestValues = latestValues;\n    this.baseTarget = { ...latestValues };\n    this.initialValues = props.initial ? { ...latestValues } : {};\n    this.renderState = renderState;\n    this.parent = parent;\n    this.props = props;\n    this.presenceContext = presenceContext;\n    this.depth = parent ? parent.depth + 1 : 0;\n    this.reducedMotionConfig = reducedMotionConfig;\n    this.options = options;\n    this.blockInitialAnimation = Boolean(blockInitialAnimation);\n    this.isControllingVariants = isControllingVariants(props);\n    this.isVariantNode = isVariantNode(props);\n    if (this.isVariantNode) {\n      this.variantChildren = /* @__PURE__ */ new Set();\n    }\n    this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n    const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n    for (const key in initialMotionValues) {\n      const value = initialMotionValues[key];\n      if (latestValues[key] !== void 0 && isMotionValue(value)) {\n        value.set(latestValues[key], false);\n      }\n    }\n  }\n  mount(instance) {\n    this.current = instance;\n    visualElementStore.set(instance, this);\n    if (this.projection && !this.projection.instance) {\n      this.projection.mount(instance);\n    }\n    if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n      this.removeFromVariantTree = this.parent.addVariantChild(this);\n    }\n    this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n    if (!hasReducedMotionListener.current) {\n      initPrefersReducedMotion();\n    }\n    this.shouldReduceMotion = this.reducedMotionConfig === \"never\" ? false : this.reducedMotionConfig === \"always\" ? true : prefersReducedMotion.current;\n    if (false) {\n      warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n    }\n    if (this.parent)\n      this.parent.children.add(this);\n    this.update(this.props, this.presenceContext);\n  }\n  unmount() {\n    visualElementStore.delete(this.current);\n    this.projection && this.projection.unmount();\n    cancelFrame(this.notifyUpdate);\n    cancelFrame(this.render);\n    this.valueSubscriptions.forEach((remove) => remove());\n    this.valueSubscriptions.clear();\n    this.removeFromVariantTree && this.removeFromVariantTree();\n    this.parent && this.parent.children.delete(this);\n    for (const key in this.events) {\n      this.events[key].clear();\n    }\n    for (const key in this.features) {\n      const feature = this.features[key];\n      if (feature) {\n        feature.unmount();\n        feature.isMounted = false;\n      }\n    }\n    this.current = null;\n  }\n  bindToMotionValue(key, value) {\n    if (this.valueSubscriptions.has(key)) {\n      this.valueSubscriptions.get(key)();\n    }\n    const valueIsTransform = transformProps.has(key);\n    const removeOnChange = value.on(\"change\", (latestValue) => {\n      this.latestValues[key] = latestValue;\n      this.props.onUpdate && frame.preRender(this.notifyUpdate);\n      if (valueIsTransform && this.projection) {\n        this.projection.isTransformDirty = true;\n      }\n    });\n    const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n    let removeSyncCheck;\n    if (window.MotionCheckAppearSync) {\n      removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n    }\n    this.valueSubscriptions.set(key, () => {\n      removeOnChange();\n      removeOnRenderRequest();\n      if (removeSyncCheck)\n        removeSyncCheck();\n      if (value.owner)\n        value.stop();\n    });\n  }\n  sortNodePosition(other) {\n    if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {\n      return 0;\n    }\n    return this.sortInstanceNodePosition(this.current, other.current);\n  }\n  updateFeatures() {\n    let key = \"animation\";\n    for (key in featureDefinitions) {\n      const featureDefinition = featureDefinitions[key];\n      if (!featureDefinition)\n        continue;\n      const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n      if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {\n        this.features[key] = new FeatureConstructor(this);\n      }\n      if (this.features[key]) {\n        const feature = this.features[key];\n        if (feature.isMounted) {\n          feature.update();\n        } else {\n          feature.mount();\n          feature.isMounted = true;\n        }\n      }\n    }\n  }\n  triggerBuild() {\n    this.build(this.renderState, this.latestValues, this.props);\n  }\n  /**\n   * Measure the current viewport box with or without transforms.\n   * Only measures axis-aligned boxes, rotate and skew must be manually\n   * removed with a re-render to work.\n   */\n  measureViewportBox() {\n    return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();\n  }\n  getStaticValue(key) {\n    return this.latestValues[key];\n  }\n  setStaticValue(key, value) {\n    this.latestValues[key] = value;\n  }\n  /**\n   * Update the provided props. Ensure any newly-added motion values are\n   * added to our map, old ones removed, and listeners updated.\n   */\n  update(props, presenceContext) {\n    if (props.transformTemplate || this.props.transformTemplate) {\n      this.scheduleRender();\n    }\n    this.prevProps = this.props;\n    this.props = props;\n    this.prevPresenceContext = this.presenceContext;\n    this.presenceContext = presenceContext;\n    for (let i = 0; i < propEventHandlers.length; i++) {\n      const key = propEventHandlers[i];\n      if (this.propEventSubscriptions[key]) {\n        this.propEventSubscriptions[key]();\n        delete this.propEventSubscriptions[key];\n      }\n      const listenerName = \"on\" + key;\n      const listener = props[listenerName];\n      if (listener) {\n        this.propEventSubscriptions[key] = this.on(key, listener);\n      }\n    }\n    this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n    if (this.handleChildMotionValue) {\n      this.handleChildMotionValue();\n    }\n  }\n  getProps() {\n    return this.props;\n  }\n  /**\n   * Returns the variant definition with a given name.\n   */\n  getVariant(name) {\n    return this.props.variants ? this.props.variants[name] : void 0;\n  }\n  /**\n   * Returns the defined default transition on this component.\n   */\n  getDefaultTransition() {\n    return this.props.transition;\n  }\n  getTransformPagePoint() {\n    return this.props.transformPagePoint;\n  }\n  getClosestVariantNode() {\n    return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : void 0;\n  }\n  /**\n   * Add a child visual element to our set of children.\n   */\n  addVariantChild(child) {\n    const closestVariantNode = this.getClosestVariantNode();\n    if (closestVariantNode) {\n      closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);\n      return () => closestVariantNode.variantChildren.delete(child);\n    }\n  }\n  /**\n   * Add a motion value and bind it to this visual element.\n   */\n  addValue(key, value) {\n    const existingValue = this.values.get(key);\n    if (value !== existingValue) {\n      if (existingValue)\n        this.removeValue(key);\n      this.bindToMotionValue(key, value);\n      this.values.set(key, value);\n      this.latestValues[key] = value.get();\n    }\n  }\n  /**\n   * Remove a motion value and unbind any active subscriptions.\n   */\n  removeValue(key) {\n    this.values.delete(key);\n    const unsubscribe = this.valueSubscriptions.get(key);\n    if (unsubscribe) {\n      unsubscribe();\n      this.valueSubscriptions.delete(key);\n    }\n    delete this.latestValues[key];\n    this.removeValueFromRenderState(key, this.renderState);\n  }\n  /**\n   * Check whether we have a motion value for this key\n   */\n  hasValue(key) {\n    return this.values.has(key);\n  }\n  getValue(key, defaultValue) {\n    if (this.props.values && this.props.values[key]) {\n      return this.props.values[key];\n    }\n    let value = this.values.get(key);\n    if (value === void 0 && defaultValue !== void 0) {\n      value = motionValue(defaultValue === null ? void 0 : defaultValue, { owner: this });\n      this.addValue(key, value);\n    }\n    return value;\n  }\n  /**\n   * If we're trying to animate to a previously unencountered value,\n   * we need to check for it in our state and as a last resort read it\n   * directly from the instance (which might have performance implications).\n   */\n  readValue(key, target) {\n    var _a;\n    let value = this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n    if (value !== void 0 && value !== null) {\n      if (typeof value === \"string\" && (isNumericalString(value) || isZeroValueString(value))) {\n        value = parseFloat(value);\n      } else if (!findValueType(value) && complex.test(target)) {\n        value = getAnimatableNone2(key, target);\n      }\n      this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n    }\n    return isMotionValue(value) ? value.get() : value;\n  }\n  /**\n   * Set the base target to later animate back to. This is currently\n   * only hydrated on creation and when we first read a value.\n   */\n  setBaseTarget(key, value) {\n    this.baseTarget[key] = value;\n  }\n  /**\n   * Find the base target for a value thats been removed from all animation\n   * props.\n   */\n  getBaseTarget(key) {\n    var _a;\n    const { initial } = this.props;\n    let valueFromInitial;\n    if (typeof initial === \"string\" || typeof initial === \"object\") {\n      const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n      if (variant) {\n        valueFromInitial = variant[key];\n      }\n    }\n    if (initial && valueFromInitial !== void 0) {\n      return valueFromInitial;\n    }\n    const target = this.getBaseTargetFromProps(this.props, key);\n    if (target !== void 0 && !isMotionValue(target))\n      return target;\n    return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    return this.events[eventName].add(callback);\n  }\n  notify(eventName, ...args) {\n    if (this.events[eventName]) {\n      this.events[eventName].notify(...args);\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs\nfunction createDOMMotionComponentProxy(componentFactory) {\n  if (typeof Proxy === \"undefined\") {\n    return componentFactory;\n  }\n  const componentCache = /* @__PURE__ */ new Map();\n  const deprecatedFactoryFunction = (...args) => {\n    if (false) {\n      warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n    }\n    return componentFactory(...args);\n  };\n  return new Proxy(deprecatedFactoryFunction, {\n    /**\n     * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n     * The prop name is passed through as `key` and we can use that to generate a `motion`\n     * DOM component with that name.\n     */\n    get: (_target, key) => {\n      if (key === \"create\")\n        return componentFactory;\n      if (!componentCache.has(key)) {\n        componentCache.set(key, componentFactory(key));\n      }\n      return componentCache.get(key);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs\nvar PanSession = class {\n  constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n    this.startEvent = null;\n    this.lastMoveEvent = null;\n    this.lastMoveEventInfo = null;\n    this.handlers = {};\n    this.contextWindow = window;\n    this.updatePoint = () => {\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const info2 = getPanInfo(this.lastMoveEventInfo, this.history);\n      const isPanStarted = this.startEvent !== null;\n      const isDistancePastThreshold = distance2D(info2.offset, { x: 0, y: 0 }) >= 3;\n      if (!isPanStarted && !isDistancePastThreshold)\n        return;\n      const { point: point3 } = info2;\n      const { timestamp: timestamp2 } = frameData;\n      this.history.push({ ...point3, timestamp: timestamp2 });\n      const { onStart, onMove } = this.handlers;\n      if (!isPanStarted) {\n        onStart && onStart(this.lastMoveEvent, info2);\n        this.startEvent = this.lastMoveEvent;\n      }\n      onMove && onMove(this.lastMoveEvent, info2);\n    };\n    this.handlePointerMove = (event2, info2) => {\n      this.lastMoveEvent = event2;\n      this.lastMoveEventInfo = transformPoint(info2, this.transformPagePoint);\n      frame.update(this.updatePoint, true);\n    };\n    this.handlePointerUp = (event2, info2) => {\n      this.end();\n      const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n      if (this.dragSnapToOrigin)\n        resumeAnimation && resumeAnimation();\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const panInfo = getPanInfo(event2.type === \"pointercancel\" ? this.lastMoveEventInfo : transformPoint(info2, this.transformPagePoint), this.history);\n      if (this.startEvent && onEnd) {\n        onEnd(event2, panInfo);\n      }\n      onSessionEnd && onSessionEnd(event2, panInfo);\n    };\n    if (!isPrimaryPointer(event))\n      return;\n    this.dragSnapToOrigin = dragSnapToOrigin;\n    this.handlers = handlers;\n    this.transformPagePoint = transformPagePoint;\n    this.contextWindow = contextWindow || window;\n    const info = extractEventInfo(event);\n    const initialInfo = transformPoint(info, this.transformPagePoint);\n    const { point: point2 } = initialInfo;\n    const { timestamp } = frameData;\n    this.history = [{ ...point2, timestamp }];\n    const { onSessionStart } = handlers;\n    onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history));\n    this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n  }\n  updateHandlers(handlers) {\n    this.handlers = handlers;\n  }\n  end() {\n    this.removeListeners && this.removeListeners();\n    cancelFrame(this.updatePoint);\n  }\n};\nfunction transformPoint(info, transformPagePoint) {\n  return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n  return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point: point2 }, history) {\n  return {\n    point: point2,\n    delta: subtractPoint(point2, lastDevicePoint(history)),\n    offset: subtractPoint(point2, startDevicePoint(history)),\n    velocity: getVelocity(history, 0.1)\n  };\n}\nfunction startDevicePoint(history) {\n  return history[0];\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n  if (history.length < 2) {\n    return { x: 0, y: 0 };\n  }\n  let i = history.length - 1;\n  let timestampedPoint = null;\n  const lastPoint = lastDevicePoint(history);\n  while (i >= 0) {\n    timestampedPoint = history[i];\n    if (lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta)) {\n      break;\n    }\n    i--;\n  }\n  if (!timestampedPoint) {\n    return { x: 0, y: 0 };\n  }\n  const time2 = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n  if (time2 === 0) {\n    return { x: 0, y: 0 };\n  }\n  const currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time2,\n    y: (lastPoint.y - timestampedPoint.y) / time2\n  };\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n  return currentVelocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs\nfunction applyConstraints(point2, { min, max }, elastic) {\n  if (min !== void 0 && point2 < min) {\n    point2 = elastic ? mixNumber(min, point2, elastic.min) : Math.max(point2, min);\n  } else if (max !== void 0 && point2 > max) {\n    point2 = elastic ? mixNumber(max, point2, elastic.max) : Math.min(point2, max);\n  }\n  return point2;\n}\nfunction calcRelativeAxisConstraints(axis, min, max) {\n  return {\n    min: min !== void 0 ? axis.min + min : void 0,\n    max: max !== void 0 ? axis.max + max - (axis.max - axis.min) : void 0\n  };\n}\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n  return {\n    x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n    y: calcRelativeAxisConstraints(layoutBox.y, top, bottom)\n  };\n}\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n  let min = constraintsAxis.min - layoutAxis.min;\n  let max = constraintsAxis.max - layoutAxis.max;\n  if (constraintsAxis.max - constraintsAxis.min < layoutAxis.max - layoutAxis.min) {\n    [min, max] = [max, min];\n  }\n  return { min, max };\n}\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n  return {\n    x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n    y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y)\n  };\n}\nfunction calcOrigin(source, target) {\n  let origin = 0.5;\n  const sourceLength = calcLength(source);\n  const targetLength = calcLength(target);\n  if (targetLength > sourceLength) {\n    origin = progress(target.min, target.max - sourceLength, source.min);\n  } else if (sourceLength > targetLength) {\n    origin = progress(source.min, source.max - targetLength, target.min);\n  }\n  return clamp(0, 1, origin);\n}\nfunction rebaseAxisConstraints(layout2, constraints) {\n  const relativeConstraints = {};\n  if (constraints.min !== void 0) {\n    relativeConstraints.min = constraints.min - layout2.min;\n  }\n  if (constraints.max !== void 0) {\n    relativeConstraints.max = constraints.max - layout2.min;\n  }\n  return relativeConstraints;\n}\nvar defaultElastic = 0.35;\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n  if (dragElastic === false) {\n    dragElastic = 0;\n  } else if (dragElastic === true) {\n    dragElastic = defaultElastic;\n  }\n  return {\n    x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n    y: resolveAxisElastic(dragElastic, \"top\", \"bottom\")\n  };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n  return {\n    min: resolvePointElastic(dragElastic, minLabel),\n    max: resolvePointElastic(dragElastic, maxLabel)\n  };\n}\nfunction resolvePointElastic(dragElastic, label) {\n  return typeof dragElastic === \"number\" ? dragElastic : dragElastic[label] || 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs\nfunction eachAxis(callback) {\n  return [callback(\"x\"), callback(\"y\")];\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs\nfunction convertBoundingBoxToBox({ top, left, right, bottom }) {\n  return {\n    x: { min: left, max: right },\n    y: { min: top, max: bottom }\n  };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n  return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\nfunction transformBoxPoints(point2, transformPoint2) {\n  if (!transformPoint2)\n    return point2;\n  const topLeft = transformPoint2({ x: point2.left, y: point2.top });\n  const bottomRight = transformPoint2({ x: point2.right, y: point2.bottom });\n  return {\n    top: topLeft.y,\n    left: topLeft.x,\n    bottom: bottomRight.y,\n    right: bottomRight.x\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs\nfunction isIdentityScale(scale2) {\n  return scale2 === void 0 || scale2 === 1;\n}\nfunction hasScale({ scale: scale2, scaleX, scaleY }) {\n  return !isIdentityScale(scale2) || !isIdentityScale(scaleX) || !isIdentityScale(scaleY);\n}\nfunction hasTransform(values) {\n  return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY || values.skewX || values.skewY;\n}\nfunction has2DTranslate(values) {\n  return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n  return value && value !== \"0%\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs\nfunction scalePoint(point2, scale2, originPoint) {\n  const distanceFromOrigin = point2 - originPoint;\n  const scaled = scale2 * distanceFromOrigin;\n  return originPoint + scaled;\n}\nfunction applyPointDelta(point2, translate, scale2, originPoint, boxScale) {\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, boxScale, originPoint);\n  }\n  return scalePoint(point2, scale2, originPoint) + translate;\n}\nfunction applyAxisDelta(axis, translate = 0, scale2 = 1, originPoint, boxScale) {\n  axis.min = applyPointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = applyPointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction applyBoxDelta(box, { x, y }) {\n  applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n  applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nvar TREE_SCALE_SNAP_MIN = 0.999999999999;\nvar TREE_SCALE_SNAP_MAX = 1.0000000000001;\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n  const treeLength = treePath.length;\n  if (!treeLength)\n    return;\n  treeScale.x = treeScale.y = 1;\n  let node;\n  let delta;\n  for (let i = 0; i < treeLength; i++) {\n    node = treePath[i];\n    delta = node.projectionDelta;\n    const { visualElement } = node.options;\n    if (visualElement && visualElement.props.style && visualElement.props.style.display === \"contents\") {\n      continue;\n    }\n    if (isSharedTransition && node.options.layoutScroll && node.scroll && node !== node.root) {\n      transformBox(box, {\n        x: -node.scroll.offset.x,\n        y: -node.scroll.offset.y\n      });\n    }\n    if (delta) {\n      treeScale.x *= delta.x.scale;\n      treeScale.y *= delta.y.scale;\n      applyBoxDelta(box, delta);\n    }\n    if (isSharedTransition && hasTransform(node.latestValues)) {\n      transformBox(box, node.latestValues);\n    }\n  }\n  if (treeScale.x < TREE_SCALE_SNAP_MAX && treeScale.x > TREE_SCALE_SNAP_MIN) {\n    treeScale.x = 1;\n  }\n  if (treeScale.y < TREE_SCALE_SNAP_MAX && treeScale.y > TREE_SCALE_SNAP_MIN) {\n    treeScale.y = 1;\n  }\n}\nfunction translateAxis(axis, distance2) {\n  axis.min = axis.min + distance2;\n  axis.max = axis.max + distance2;\n}\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n  const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n  applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\nfunction transformBox(box, transform2) {\n  transformAxis(box.x, transform2.x, transform2.scaleX, transform2.scale, transform2.originX);\n  transformAxis(box.y, transform2.y, transform2.scaleY, transform2.scale, transform2.originY);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs\nfunction measureViewportBox(instance, transformPoint2) {\n  return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint2));\n}\nfunction measurePageBox(element, rootProjectionNode2, transformPagePoint) {\n  const viewportBox = measureViewportBox(element, transformPagePoint);\n  const { scroll: scroll2 } = rootProjectionNode2;\n  if (scroll2) {\n    translateAxis(viewportBox.x, scroll2.offset.x);\n    translateAxis(viewportBox.y, scroll2.offset.y);\n  }\n  return viewportBox;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/get-context-window.mjs\nvar getContextWindow = ({ current }) => {\n  return current ? current.ownerDocument.defaultView : null;\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs\nvar elementDragControls = /* @__PURE__ */ new WeakMap();\nvar VisualElementDragControls = class {\n  constructor(visualElement) {\n    this.openGlobalLock = null;\n    this.isDragging = false;\n    this.currentDirection = null;\n    this.originPoint = { x: 0, y: 0 };\n    this.constraints = false;\n    this.hasMutatedConstraints = false;\n    this.elastic = createBox();\n    this.visualElement = visualElement;\n  }\n  start(originEvent, { snapToCursor = false } = {}) {\n    const { presenceContext } = this.visualElement;\n    if (presenceContext && presenceContext.isPresent === false)\n      return;\n    const onSessionStart = (event) => {\n      const { dragSnapToOrigin: dragSnapToOrigin2 } = this.getProps();\n      dragSnapToOrigin2 ? this.pauseAnimation() : this.stopAnimation();\n      if (snapToCursor) {\n        this.snapToCursor(extractEventInfo(event, \"page\").point);\n      }\n    };\n    const onStart = (event, info) => {\n      const { drag: drag2, dragPropagation, onDragStart } = this.getProps();\n      if (drag2 && !dragPropagation) {\n        if (this.openGlobalLock)\n          this.openGlobalLock();\n        this.openGlobalLock = getGlobalLock(drag2);\n        if (!this.openGlobalLock)\n          return;\n      }\n      this.isDragging = true;\n      this.currentDirection = null;\n      this.resolveConstraints();\n      if (this.visualElement.projection) {\n        this.visualElement.projection.isAnimationBlocked = true;\n        this.visualElement.projection.target = void 0;\n      }\n      eachAxis((axis) => {\n        let current = this.getAxisMotionValue(axis).get() || 0;\n        if (percent.test(current)) {\n          const { projection } = this.visualElement;\n          if (projection && projection.layout) {\n            const measuredAxis = projection.layout.layoutBox[axis];\n            if (measuredAxis) {\n              const length = calcLength(measuredAxis);\n              current = length * (parseFloat(current) / 100);\n            }\n          }\n        }\n        this.originPoint[axis] = current;\n      });\n      if (onDragStart) {\n        frame.postRender(() => onDragStart(event, info));\n      }\n      addValueToWillChange(this.visualElement, \"transform\");\n      const { animationState } = this.visualElement;\n      animationState && animationState.setActive(\"whileDrag\", true);\n    };\n    const onMove = (event, info) => {\n      const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps();\n      if (!dragPropagation && !this.openGlobalLock)\n        return;\n      const { offset } = info;\n      if (dragDirectionLock && this.currentDirection === null) {\n        this.currentDirection = getCurrentDirection(offset);\n        if (this.currentDirection !== null) {\n          onDirectionLock && onDirectionLock(this.currentDirection);\n        }\n        return;\n      }\n      this.updateAxis(\"x\", info.point, offset);\n      this.updateAxis(\"y\", info.point, offset);\n      this.visualElement.render();\n      onDrag && onDrag(event, info);\n    };\n    const onSessionEnd = (event, info) => this.stop(event, info);\n    const resumeAnimation = () => eachAxis((axis) => {\n      var _a;\n      return this.getAnimationState(axis) === \"paused\" && ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n    });\n    const { dragSnapToOrigin } = this.getProps();\n    this.panSession = new PanSession(originEvent, {\n      onSessionStart,\n      onStart,\n      onMove,\n      onSessionEnd,\n      resumeAnimation\n    }, {\n      transformPagePoint: this.visualElement.getTransformPagePoint(),\n      dragSnapToOrigin,\n      contextWindow: getContextWindow(this.visualElement)\n    });\n  }\n  stop(event, info) {\n    const isDragging = this.isDragging;\n    this.cancel();\n    if (!isDragging)\n      return;\n    const { velocity } = info;\n    this.startAnimation(velocity);\n    const { onDragEnd } = this.getProps();\n    if (onDragEnd) {\n      frame.postRender(() => onDragEnd(event, info));\n    }\n  }\n  cancel() {\n    this.isDragging = false;\n    const { projection, animationState } = this.visualElement;\n    if (projection) {\n      projection.isAnimationBlocked = false;\n    }\n    this.panSession && this.panSession.end();\n    this.panSession = void 0;\n    const { dragPropagation } = this.getProps();\n    if (!dragPropagation && this.openGlobalLock) {\n      this.openGlobalLock();\n      this.openGlobalLock = null;\n    }\n    animationState && animationState.setActive(\"whileDrag\", false);\n  }\n  updateAxis(axis, _point, offset) {\n    const { drag: drag2 } = this.getProps();\n    if (!offset || !shouldDrag(axis, drag2, this.currentDirection))\n      return;\n    const axisValue = this.getAxisMotionValue(axis);\n    let next = this.originPoint[axis] + offset[axis];\n    if (this.constraints && this.constraints[axis]) {\n      next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n    }\n    axisValue.set(next);\n  }\n  resolveConstraints() {\n    var _a;\n    const { dragConstraints, dragElastic } = this.getProps();\n    const layout2 = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(false) : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n    const prevConstraints = this.constraints;\n    if (dragConstraints && isRefObject(dragConstraints)) {\n      if (!this.constraints) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    } else {\n      if (dragConstraints && layout2) {\n        this.constraints = calcRelativeConstraints(layout2.layoutBox, dragConstraints);\n      } else {\n        this.constraints = false;\n      }\n    }\n    this.elastic = resolveDragElastic(dragElastic);\n    if (prevConstraints !== this.constraints && layout2 && this.constraints && !this.hasMutatedConstraints) {\n      eachAxis((axis) => {\n        if (this.constraints !== false && this.getAxisMotionValue(axis)) {\n          this.constraints[axis] = rebaseAxisConstraints(layout2.layoutBox[axis], this.constraints[axis]);\n        }\n      });\n    }\n  }\n  resolveRefConstraints() {\n    const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n    if (!constraints || !isRefObject(constraints))\n      return false;\n    const constraintsElement = constraints.current;\n    invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n    const { projection } = this.visualElement;\n    if (!projection || !projection.layout)\n      return false;\n    const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n    let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n    if (onMeasureDragConstraints) {\n      const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n      this.hasMutatedConstraints = !!userConstraints;\n      if (userConstraints) {\n        measuredConstraints = convertBoundingBoxToBox(userConstraints);\n      }\n    }\n    return measuredConstraints;\n  }\n  startAnimation(velocity) {\n    const { drag: drag2, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd } = this.getProps();\n    const constraints = this.constraints || {};\n    const momentumAnimations = eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, this.currentDirection)) {\n        return;\n      }\n      let transition = constraints && constraints[axis] || {};\n      if (dragSnapToOrigin)\n        transition = { min: 0, max: 0 };\n      const bounceStiffness = dragElastic ? 200 : 1e6;\n      const bounceDamping = dragElastic ? 40 : 1e7;\n      const inertia2 = {\n        type: \"inertia\",\n        velocity: dragMomentum ? velocity[axis] : 0,\n        bounceStiffness,\n        bounceDamping,\n        timeConstant: 750,\n        restDelta: 1,\n        restSpeed: 10,\n        ...dragTransition,\n        ...transition\n      };\n      return this.startAxisValueAnimation(axis, inertia2);\n    });\n    return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n  }\n  startAxisValueAnimation(axis, transition) {\n    const axisValue = this.getAxisMotionValue(axis);\n    addValueToWillChange(this.visualElement, axis);\n    return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n  }\n  stopAnimation() {\n    eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n  }\n  pauseAnimation() {\n    eachAxis((axis) => {\n      var _a;\n      return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause();\n    });\n  }\n  getAnimationState(axis) {\n    var _a;\n    return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n  }\n  /**\n   * Drag works differently depending on which props are provided.\n   *\n   * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n   * - Otherwise, we apply the delta to the x/y motion values.\n   */\n  getAxisMotionValue(axis) {\n    const dragKey = `_drag${axis.toUpperCase()}`;\n    const props = this.visualElement.getProps();\n    const externalMotionValue = props[dragKey];\n    return externalMotionValue ? externalMotionValue : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : void 0) || 0);\n  }\n  snapToCursor(point2) {\n    eachAxis((axis) => {\n      const { drag: drag2 } = this.getProps();\n      if (!shouldDrag(axis, drag2, this.currentDirection))\n        return;\n      const { projection } = this.visualElement;\n      const axisValue = this.getAxisMotionValue(axis);\n      if (projection && projection.layout) {\n        const { min, max } = projection.layout.layoutBox[axis];\n        axisValue.set(point2[axis] - mixNumber(min, max, 0.5));\n      }\n    });\n  }\n  /**\n   * When the viewport resizes we want to check if the measured constraints\n   * have changed and, if so, reposition the element within those new constraints\n   * relative to where it was before the resize.\n   */\n  scalePositionWithinConstraints() {\n    if (!this.visualElement.current)\n      return;\n    const { drag: drag2, dragConstraints } = this.getProps();\n    const { projection } = this.visualElement;\n    if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n      return;\n    this.stopAnimation();\n    const boxProgress = { x: 0, y: 0 };\n    eachAxis((axis) => {\n      const axisValue = this.getAxisMotionValue(axis);\n      if (axisValue && this.constraints !== false) {\n        const latest = axisValue.get();\n        boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n      }\n    });\n    const { transformTemplate } = this.visualElement.getProps();\n    this.visualElement.current.style.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n    projection.root && projection.root.updateScroll();\n    projection.updateLayout();\n    this.resolveConstraints();\n    eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, null))\n        return;\n      const axisValue = this.getAxisMotionValue(axis);\n      const { min, max } = this.constraints[axis];\n      axisValue.set(mixNumber(min, max, boxProgress[axis]));\n    });\n  }\n  addListeners() {\n    if (!this.visualElement.current)\n      return;\n    elementDragControls.set(this.visualElement, this);\n    const element = this.visualElement.current;\n    const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n      const { drag: drag2, dragListener = true } = this.getProps();\n      drag2 && dragListener && this.start(event);\n    });\n    const measureDragConstraints = () => {\n      const { dragConstraints } = this.getProps();\n      if (isRefObject(dragConstraints) && dragConstraints.current) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    };\n    const { projection } = this.visualElement;\n    const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n    if (projection && !projection.layout) {\n      projection.root && projection.root.updateScroll();\n      projection.updateLayout();\n    }\n    frame.read(measureDragConstraints);\n    const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n    const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged }) => {\n      if (this.isDragging && hasLayoutChanged) {\n        eachAxis((axis) => {\n          const motionValue2 = this.getAxisMotionValue(axis);\n          if (!motionValue2)\n            return;\n          this.originPoint[axis] += delta[axis].translate;\n          motionValue2.set(motionValue2.get() + delta[axis].translate);\n        });\n        this.visualElement.render();\n      }\n    });\n    return () => {\n      stopResizeListener();\n      stopPointerListener();\n      stopMeasureLayoutListener();\n      stopLayoutUpdateListener && stopLayoutUpdateListener();\n    };\n  }\n  getProps() {\n    const props = this.visualElement.getProps();\n    const { drag: drag2 = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true } = props;\n    return {\n      ...props,\n      drag: drag2,\n      dragDirectionLock,\n      dragPropagation,\n      dragConstraints,\n      dragElastic,\n      dragMomentum\n    };\n  }\n};\nfunction shouldDrag(direction, drag2, currentDirection) {\n  return (drag2 === true || drag2 === direction) && (currentDirection === null || currentDirection === direction);\n}\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n  let direction = null;\n  if (Math.abs(offset.y) > lockThreshold) {\n    direction = \"y\";\n  } else if (Math.abs(offset.x) > lockThreshold) {\n    direction = \"x\";\n  }\n  return direction;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/index.mjs\nvar DragGesture = class extends Feature {\n  constructor(node) {\n    super(node);\n    this.removeGroupControls = noop;\n    this.removeListeners = noop;\n    this.controls = new VisualElementDragControls(node);\n  }\n  mount() {\n    const { dragControls } = this.node.getProps();\n    if (dragControls) {\n      this.removeGroupControls = dragControls.subscribe(this.controls);\n    }\n    this.removeListeners = this.controls.addListeners() || noop;\n  }\n  unmount() {\n    this.removeGroupControls();\n    this.removeListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs\nvar asyncHandler = (handler) => (event, info) => {\n  if (handler) {\n    frame.postRender(() => handler(event, info));\n  }\n};\nvar PanGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removePointerDownListener = noop;\n  }\n  onPointerDown(pointerDownEvent) {\n    this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n      transformPagePoint: this.node.getTransformPagePoint(),\n      contextWindow: getContextWindow(this.node)\n    });\n  }\n  createPanHandlers() {\n    const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n    return {\n      onSessionStart: asyncHandler(onPanSessionStart),\n      onStart: asyncHandler(onPanStart),\n      onMove: onPan,\n      onEnd: (event, info) => {\n        delete this.session;\n        if (onPanEnd) {\n          frame.postRender(() => onPanEnd(event, info));\n        }\n      }\n    };\n  }\n  mount() {\n    this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n  }\n  update() {\n    this.session && this.session.updateHandlers(this.createPanHandlers());\n  }\n  unmount() {\n    this.removePointerDownListener();\n    this.session && this.session.end();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nimport { useContext as useContext6, Component } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/state.mjs\nvar globalProjectionState = {\n  /**\n   * Global flag as to whether the tree has animated since the last time\n   * we resized the window\n   */\n  hasAnimatedSinceResize: true,\n  /**\n   * We set this to true once, on the first update. Any nodes added to the tree beyond that\n   * update will be given a `data-projection-id` attribute.\n   */\n  hasEverUpdated: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs\nfunction pixelsToPercent(pixels, axis) {\n  if (axis.max === axis.min)\n    return 0;\n  return pixels / (axis.max - axis.min) * 100;\n}\nvar correctBorderRadius = {\n  correct: (latest, node) => {\n    if (!node.target)\n      return latest;\n    if (typeof latest === \"string\") {\n      if (px.test(latest)) {\n        latest = parseFloat(latest);\n      } else {\n        return latest;\n      }\n    }\n    const x = pixelsToPercent(latest, node.target.x);\n    const y = pixelsToPercent(latest, node.target.y);\n    return `${x}% ${y}%`;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs\nvar correctBoxShadow = {\n  correct: (latest, { treeScale, projectionDelta }) => {\n    const original = latest;\n    const shadow = complex.parse(latest);\n    if (shadow.length > 5)\n      return original;\n    const template = complex.createTransformer(latest);\n    const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n    const xScale = projectionDelta.x.scale * treeScale.x;\n    const yScale = projectionDelta.y.scale * treeScale.y;\n    shadow[0 + offset] /= xScale;\n    shadow[1 + offset] /= yScale;\n    const averageScale = mixNumber(xScale, yScale, 0.5);\n    if (typeof shadow[2 + offset] === \"number\")\n      shadow[2 + offset] /= averageScale;\n    if (typeof shadow[3 + offset] === \"number\")\n      shadow[3 + offset] /= averageScale;\n    return template(shadow);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nvar MeasureLayoutWithContext = class extends Component {\n  /**\n   * This only mounts projection nodes for components that\n   * need measuring, we might want to do it for all components\n   * in order to incorporate transforms\n   */\n  componentDidMount() {\n    const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n    const { projection } = visualElement;\n    addScaleCorrector(defaultScaleCorrectors);\n    if (projection) {\n      if (layoutGroup.group)\n        layoutGroup.group.add(projection);\n      if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n        switchLayoutGroup.register(projection);\n      }\n      projection.root.didUpdate();\n      projection.addEventListener(\"animationComplete\", () => {\n        this.safeToRemove();\n      });\n      projection.setOptions({\n        ...projection.options,\n        onExitComplete: () => this.safeToRemove()\n      });\n    }\n    globalProjectionState.hasEverUpdated = true;\n  }\n  getSnapshotBeforeUpdate(prevProps) {\n    const { layoutDependency, visualElement, drag: drag2, isPresent: isPresent2 } = this.props;\n    const projection = visualElement.projection;\n    if (!projection)\n      return null;\n    projection.isPresent = isPresent2;\n    if (drag2 || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0) {\n      projection.willUpdate();\n    } else {\n      this.safeToRemove();\n    }\n    if (prevProps.isPresent !== isPresent2) {\n      if (isPresent2) {\n        projection.promote();\n      } else if (!projection.relegate()) {\n        frame.postRender(() => {\n          const stack = projection.getStack();\n          if (!stack || !stack.members.length) {\n            this.safeToRemove();\n          }\n        });\n      }\n    }\n    return null;\n  }\n  componentDidUpdate() {\n    const { projection } = this.props.visualElement;\n    if (projection) {\n      projection.root.didUpdate();\n      microtask.postRender(() => {\n        if (!projection.currentAnimation && projection.isLead()) {\n          this.safeToRemove();\n        }\n      });\n    }\n  }\n  componentWillUnmount() {\n    const { visualElement, layoutGroup, switchLayoutGroup: promoteContext } = this.props;\n    const { projection } = visualElement;\n    if (projection) {\n      projection.scheduleCheckAfterUnmount();\n      if (layoutGroup && layoutGroup.group)\n        layoutGroup.group.remove(projection);\n      if (promoteContext && promoteContext.deregister)\n        promoteContext.deregister(projection);\n    }\n  }\n  safeToRemove() {\n    const { safeToRemove } = this.props;\n    safeToRemove && safeToRemove();\n  }\n  render() {\n    return null;\n  }\n};\nfunction MeasureLayout(props) {\n  const [isPresent2, safeToRemove] = usePresence();\n  const layoutGroup = useContext6(LayoutGroupContext);\n  return jsx2(MeasureLayoutWithContext, { ...props, layoutGroup, switchLayoutGroup: useContext6(SwitchLayoutGroupContext), isPresent: isPresent2, safeToRemove });\n}\nvar defaultScaleCorrectors = {\n  borderRadius: {\n    ...correctBorderRadius,\n    applyTo: [\n      \"borderTopLeftRadius\",\n      \"borderTopRightRadius\",\n      \"borderBottomLeftRadius\",\n      \"borderBottomRightRadius\"\n    ]\n  },\n  borderTopLeftRadius: correctBorderRadius,\n  borderTopRightRadius: correctBorderRadius,\n  borderBottomLeftRadius: correctBorderRadius,\n  borderBottomRightRadius: correctBorderRadius,\n  boxShadow: correctBoxShadow\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nvar isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress2, shouldCrossfadeOpacity, isOnlyMember) {\n  if (shouldCrossfadeOpacity) {\n    target.opacity = mixNumber(\n      0,\n      // TODO Reinstate this if only child\n      lead.opacity !== void 0 ? lead.opacity : 1,\n      easeCrossfadeIn(progress2)\n    );\n    target.opacityExit = mixNumber(follow.opacity !== void 0 ? follow.opacity : 1, 0, easeCrossfadeOut(progress2));\n  } else if (isOnlyMember) {\n    target.opacity = mixNumber(follow.opacity !== void 0 ? follow.opacity : 1, lead.opacity !== void 0 ? lead.opacity : 1, progress2);\n  }\n  for (let i = 0; i < numBorders; i++) {\n    const borderLabel = `border${borders[i]}Radius`;\n    let followRadius = getRadius(follow, borderLabel);\n    let leadRadius = getRadius(lead, borderLabel);\n    if (followRadius === void 0 && leadRadius === void 0)\n      continue;\n    followRadius || (followRadius = 0);\n    leadRadius || (leadRadius = 0);\n    const canMix = followRadius === 0 || leadRadius === 0 || isPx(followRadius) === isPx(leadRadius);\n    if (canMix) {\n      target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress2), 0);\n      if (percent.test(leadRadius) || percent.test(followRadius)) {\n        target[borderLabel] += \"%\";\n      }\n    } else {\n      target[borderLabel] = leadRadius;\n    }\n  }\n  if (follow.rotate || lead.rotate) {\n    target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress2);\n  }\n}\nfunction getRadius(values, radiusName) {\n  return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;\n}\nvar easeCrossfadeIn = /* @__PURE__ */ compress(0, 0.5, circOut);\nvar easeCrossfadeOut = /* @__PURE__ */ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n  return (p) => {\n    if (p < min)\n      return 0;\n    if (p > max)\n      return 1;\n    return easing(progress(min, max, p));\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs\nfunction copyAxisInto(axis, originAxis) {\n  axis.min = originAxis.min;\n  axis.max = originAxis.max;\n}\nfunction copyBoxInto(box, originBox) {\n  copyAxisInto(box.x, originBox.x);\n  copyAxisInto(box.y, originBox.y);\n}\nfunction copyAxisDeltaInto(delta, originDelta) {\n  delta.translate = originDelta.translate;\n  delta.scale = originDelta.scale;\n  delta.originPoint = originDelta.originPoint;\n  delta.origin = originDelta.origin;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs\nfunction removePointDelta(point2, translate, scale2, originPoint, boxScale) {\n  point2 -= translate;\n  point2 = scalePoint(point2, 1 / scale2, originPoint);\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, 1 / boxScale, originPoint);\n  }\n  return point2;\n}\nfunction removeAxisDelta(axis, translate = 0, scale2 = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n  if (percent.test(translate)) {\n    translate = parseFloat(translate);\n    const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n    translate = relativeProgress - sourceAxis.min;\n  }\n  if (typeof translate !== \"number\")\n    return;\n  let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n  if (axis === originAxis)\n    originPoint -= translate;\n  axis.min = removePointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = removePointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n  removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n  removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : void 0, sourceBox ? sourceBox.x : void 0);\n  removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : void 0, sourceBox ? sourceBox.y : void 0);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs\nfunction isAxisDeltaZero(delta) {\n  return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n  return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n  return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n  return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n  return Math.round(a.min) === Math.round(b.min) && Math.round(a.max) === Math.round(b.max);\n}\nfunction boxEqualsRounded(a, b) {\n  return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n  return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n  return a.translate === b.translate && a.scale === b.scale && a.originPoint === b.originPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs\nvar NodeStack = class {\n  constructor() {\n    this.members = [];\n  }\n  add(node) {\n    addUniqueItem(this.members, node);\n    node.scheduleRender();\n  }\n  remove(node) {\n    removeItem(this.members, node);\n    if (node === this.prevLead) {\n      this.prevLead = void 0;\n    }\n    if (node === this.lead) {\n      const prevLead = this.members[this.members.length - 1];\n      if (prevLead) {\n        this.promote(prevLead);\n      }\n    }\n  }\n  relegate(node) {\n    const indexOfNode = this.members.findIndex((member) => node === member);\n    if (indexOfNode === 0)\n      return false;\n    let prevLead;\n    for (let i = indexOfNode; i >= 0; i--) {\n      const member = this.members[i];\n      if (member.isPresent !== false) {\n        prevLead = member;\n        break;\n      }\n    }\n    if (prevLead) {\n      this.promote(prevLead);\n      return true;\n    } else {\n      return false;\n    }\n  }\n  promote(node, preserveFollowOpacity) {\n    const prevLead = this.lead;\n    if (node === prevLead)\n      return;\n    this.prevLead = prevLead;\n    this.lead = node;\n    node.show();\n    if (prevLead) {\n      prevLead.instance && prevLead.scheduleRender();\n      node.scheduleRender();\n      node.resumeFrom = prevLead;\n      if (preserveFollowOpacity) {\n        node.resumeFrom.preserveOpacity = true;\n      }\n      if (prevLead.snapshot) {\n        node.snapshot = prevLead.snapshot;\n        node.snapshot.latestValues = prevLead.animationValues || prevLead.latestValues;\n      }\n      if (node.root && node.root.isUpdating) {\n        node.isLayoutDirty = true;\n      }\n      const { crossfade } = node.options;\n      if (crossfade === false) {\n        prevLead.hide();\n      }\n    }\n  }\n  exitAnimationComplete() {\n    this.members.forEach((node) => {\n      const { options, resumingFrom } = node;\n      options.onExitComplete && options.onExitComplete();\n      if (resumingFrom) {\n        resumingFrom.options.onExitComplete && resumingFrom.options.onExitComplete();\n      }\n    });\n  }\n  scheduleRender() {\n    this.members.forEach((node) => {\n      node.instance && node.scheduleRender(false);\n    });\n  }\n  /**\n   * Clear any leads that have been removed this render to prevent them from being\n   * used in future animations and to prevent memory leaks\n   */\n  removeLeadSnapshot() {\n    if (this.lead && this.lead.snapshot) {\n      this.lead.snapshot = void 0;\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n  let transform2 = \"\";\n  const xTranslate = delta.x.translate / treeScale.x;\n  const yTranslate = delta.y.translate / treeScale.y;\n  const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n  if (xTranslate || yTranslate || zTranslate) {\n    transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n  }\n  if (treeScale.x !== 1 || treeScale.y !== 1) {\n    transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n  }\n  if (latestTransform) {\n    const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n    if (transformPerspective)\n      transform2 = `perspective(${transformPerspective}px) ${transform2}`;\n    if (rotate)\n      transform2 += `rotate(${rotate}deg) `;\n    if (rotateX)\n      transform2 += `rotateX(${rotateX}deg) `;\n    if (rotateY)\n      transform2 += `rotateY(${rotateY}deg) `;\n    if (skewX)\n      transform2 += `skewX(${skewX}deg) `;\n    if (skewY)\n      transform2 += `skewY(${skewY}deg) `;\n  }\n  const elementScaleX = delta.x.scale * treeScale.x;\n  const elementScaleY = delta.y.scale * treeScale.y;\n  if (elementScaleX !== 1 || elementScaleY !== 1) {\n    transform2 += `scale(${elementScaleX}, ${elementScaleY})`;\n  }\n  return transform2 || \"none\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs\nfunction isSVGElement(element) {\n  return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/single-value.mjs\nfunction animateSingleValue(value, keyframes2, options) {\n  const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n  motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes2, options));\n  return motionValue$1.animation;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs\nvar metrics = {\n  type: \"projectionFrame\",\n  totalNodes: 0,\n  resolvedTargetDeltas: 0,\n  recalculatedProjection: 0\n};\nvar isDebug = typeof window !== \"undefined\" && window.MotionDebug !== void 0;\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nvar hiddenVisibility = { visibility: \"hidden\" };\nvar animationTarget = 1e3;\nvar id2 = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n  const { latestValues } = visualElement;\n  if (latestValues[key]) {\n    values[key] = latestValues[key];\n    visualElement.setStaticValue(key, 0);\n    if (sharedAnimationValues) {\n      sharedAnimationValues[key] = 0;\n    }\n  }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n  projectionNode.hasCheckedOptimisedAppear = true;\n  if (projectionNode.root === projectionNode)\n    return;\n  const { visualElement } = projectionNode.options;\n  if (!visualElement)\n    return;\n  const appearId = getOptimisedAppearId(visualElement);\n  if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n    const { layout: layout2, layoutId } = projectionNode.options;\n    window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout2 || layoutId));\n  }\n  const { parent } = projectionNode;\n  if (parent && !parent.hasCheckedOptimisedAppear) {\n    cancelTreeOptimisedTransformAnimations(parent);\n  }\n}\nfunction createProjectionNode2({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {\n  return class ProjectionNode {\n    constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n      this.id = id2++;\n      this.animationId = 0;\n      this.children = /* @__PURE__ */ new Set();\n      this.options = {};\n      this.isTreeAnimating = false;\n      this.isAnimationBlocked = false;\n      this.isLayoutDirty = false;\n      this.isProjectionDirty = false;\n      this.isSharedProjectionDirty = false;\n      this.isTransformDirty = false;\n      this.updateManuallyBlocked = false;\n      this.updateBlockedByResize = false;\n      this.isUpdating = false;\n      this.isSVG = false;\n      this.needsReset = false;\n      this.shouldResetTransform = false;\n      this.hasCheckedOptimisedAppear = false;\n      this.treeScale = { x: 1, y: 1 };\n      this.eventHandlers = /* @__PURE__ */ new Map();\n      this.hasTreeAnimated = false;\n      this.updateScheduled = false;\n      this.scheduleUpdate = () => this.update();\n      this.projectionUpdateScheduled = false;\n      this.checkUpdateFailed = () => {\n        if (this.isUpdating) {\n          this.isUpdating = false;\n          this.clearAllSnapshots();\n        }\n      };\n      this.updateProjection = () => {\n        this.projectionUpdateScheduled = false;\n        if (isDebug) {\n          metrics.totalNodes = metrics.resolvedTargetDeltas = metrics.recalculatedProjection = 0;\n        }\n        this.nodes.forEach(propagateDirtyNodes);\n        this.nodes.forEach(resolveTargetDelta);\n        this.nodes.forEach(calcProjection);\n        this.nodes.forEach(cleanDirtyNodes);\n        if (isDebug) {\n          window.MotionDebug.record(metrics);\n        }\n      };\n      this.resolvedRelativeTargetAt = 0;\n      this.hasProjected = false;\n      this.isVisible = true;\n      this.animationProgress = 0;\n      this.sharedNodes = /* @__PURE__ */ new Map();\n      this.latestValues = latestValues;\n      this.root = parent ? parent.root || parent : this;\n      this.path = parent ? [...parent.path, parent] : [];\n      this.parent = parent;\n      this.depth = parent ? parent.depth + 1 : 0;\n      for (let i = 0; i < this.path.length; i++) {\n        this.path[i].shouldResetTransform = true;\n      }\n      if (this.root === this)\n        this.nodes = new FlatTree();\n    }\n    addEventListener(name, handler) {\n      if (!this.eventHandlers.has(name)) {\n        this.eventHandlers.set(name, new SubscriptionManager());\n      }\n      return this.eventHandlers.get(name).add(handler);\n    }\n    notifyListeners(name, ...args) {\n      const subscriptionManager = this.eventHandlers.get(name);\n      subscriptionManager && subscriptionManager.notify(...args);\n    }\n    hasListeners(name) {\n      return this.eventHandlers.has(name);\n    }\n    /**\n     * Lifecycles\n     */\n    mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n      if (this.instance)\n        return;\n      this.isSVG = isSVGElement(instance);\n      this.instance = instance;\n      const { layoutId, layout: layout2, visualElement } = this.options;\n      if (visualElement && !visualElement.current) {\n        visualElement.mount(instance);\n      }\n      this.root.nodes.add(this);\n      this.parent && this.parent.children.add(this);\n      if (isLayoutDirty && (layout2 || layoutId)) {\n        this.isLayoutDirty = true;\n      }\n      if (attachResizeListener) {\n        let cancelDelay;\n        const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;\n        attachResizeListener(instance, () => {\n          this.root.updateBlockedByResize = true;\n          cancelDelay && cancelDelay();\n          cancelDelay = delay(resizeUnblockUpdate, 250);\n          if (globalProjectionState.hasAnimatedSinceResize) {\n            globalProjectionState.hasAnimatedSinceResize = false;\n            this.nodes.forEach(finishAnimation);\n          }\n        });\n      }\n      if (layoutId) {\n        this.root.registerSharedNode(layoutId, this);\n      }\n      if (this.options.animate !== false && visualElement && (layoutId || layout2)) {\n        this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout }) => {\n          if (this.isTreeAnimationBlocked()) {\n            this.target = void 0;\n            this.relativeTarget = void 0;\n            return;\n          }\n          const layoutTransition = this.options.transition || visualElement.getDefaultTransition() || defaultLayoutTransition;\n          const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();\n          const targetChanged = !this.targetLayout || !boxEqualsRounded(this.targetLayout, newLayout) || hasRelativeTargetChanged;\n          const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n          if (this.options.layoutRoot || this.resumeFrom && this.resumeFrom.instance || hasOnlyRelativeTargetChanged || hasLayoutChanged && (targetChanged || !this.currentAnimation)) {\n            if (this.resumeFrom) {\n              this.resumingFrom = this.resumeFrom;\n              this.resumingFrom.resumingFrom = void 0;\n            }\n            this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n            const animationOptions = {\n              ...getValueTransition(layoutTransition, \"layout\"),\n              onPlay: onLayoutAnimationStart,\n              onComplete: onLayoutAnimationComplete\n            };\n            if (visualElement.shouldReduceMotion || this.options.layoutRoot) {\n              animationOptions.delay = 0;\n              animationOptions.type = false;\n            }\n            this.startAnimation(animationOptions);\n          } else {\n            if (!hasLayoutChanged) {\n              finishAnimation(this);\n            }\n            if (this.isLead() && this.options.onExitComplete) {\n              this.options.onExitComplete();\n            }\n          }\n          this.targetLayout = newLayout;\n        });\n      }\n    }\n    unmount() {\n      this.options.layoutId && this.willUpdate();\n      this.root.nodes.remove(this);\n      const stack = this.getStack();\n      stack && stack.remove(this);\n      this.parent && this.parent.children.delete(this);\n      this.instance = void 0;\n      cancelFrame(this.updateProjection);\n    }\n    // only on the root\n    blockUpdate() {\n      this.updateManuallyBlocked = true;\n    }\n    unblockUpdate() {\n      this.updateManuallyBlocked = false;\n    }\n    isUpdateBlocked() {\n      return this.updateManuallyBlocked || this.updateBlockedByResize;\n    }\n    isTreeAnimationBlocked() {\n      return this.isAnimationBlocked || this.parent && this.parent.isTreeAnimationBlocked() || false;\n    }\n    // Note: currently only running on root node\n    startUpdate() {\n      if (this.isUpdateBlocked())\n        return;\n      this.isUpdating = true;\n      this.nodes && this.nodes.forEach(resetSkewAndRotation);\n      this.animationId++;\n    }\n    getTransformTemplate() {\n      const { visualElement } = this.options;\n      return visualElement && visualElement.getProps().transformTemplate;\n    }\n    willUpdate(shouldNotifyListeners = true) {\n      this.root.hasTreeAnimated = true;\n      if (this.root.isUpdateBlocked()) {\n        this.options.onExitComplete && this.options.onExitComplete();\n        return;\n      }\n      if (window.MotionCancelOptimisedAnimation && !this.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(this);\n      }\n      !this.root.isUpdating && this.root.startUpdate();\n      if (this.isLayoutDirty)\n        return;\n      this.isLayoutDirty = true;\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        node.shouldResetTransform = true;\n        node.updateScroll(\"snapshot\");\n        if (node.options.layoutRoot) {\n          node.willUpdate(false);\n        }\n      }\n      const { layoutId, layout: layout2 } = this.options;\n      if (layoutId === void 0 && !layout2)\n        return;\n      const transformTemplate = this.getTransformTemplate();\n      this.prevTransformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      this.updateSnapshot();\n      shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n    }\n    update() {\n      this.updateScheduled = false;\n      const updateWasBlocked = this.isUpdateBlocked();\n      if (updateWasBlocked) {\n        this.unblockUpdate();\n        this.clearAllSnapshots();\n        this.nodes.forEach(clearMeasurements);\n        return;\n      }\n      if (!this.isUpdating) {\n        this.nodes.forEach(clearIsLayoutDirty);\n      }\n      this.isUpdating = false;\n      this.nodes.forEach(resetTransformStyle);\n      this.nodes.forEach(updateLayout);\n      this.nodes.forEach(notifyLayoutUpdate);\n      this.clearAllSnapshots();\n      const now2 = time.now();\n      frameData.delta = clamp(0, 1e3 / 60, now2 - frameData.timestamp);\n      frameData.timestamp = now2;\n      frameData.isProcessing = true;\n      frameSteps.update.process(frameData);\n      frameSteps.preRender.process(frameData);\n      frameSteps.render.process(frameData);\n      frameData.isProcessing = false;\n    }\n    didUpdate() {\n      if (!this.updateScheduled) {\n        this.updateScheduled = true;\n        microtask.read(this.scheduleUpdate);\n      }\n    }\n    clearAllSnapshots() {\n      this.nodes.forEach(clearSnapshot);\n      this.sharedNodes.forEach(removeLeadSnapshots);\n    }\n    scheduleUpdateProjection() {\n      if (!this.projectionUpdateScheduled) {\n        this.projectionUpdateScheduled = true;\n        frame.preRender(this.updateProjection, false, true);\n      }\n    }\n    scheduleCheckAfterUnmount() {\n      frame.postRender(() => {\n        if (this.isLayoutDirty) {\n          this.root.didUpdate();\n        } else {\n          this.root.checkUpdateFailed();\n        }\n      });\n    }\n    /**\n     * Update measurements\n     */\n    updateSnapshot() {\n      if (this.snapshot || !this.instance)\n        return;\n      this.snapshot = this.measure();\n    }\n    updateLayout() {\n      if (!this.instance)\n        return;\n      this.updateScroll();\n      if (!(this.options.alwaysMeasureLayout && this.isLead()) && !this.isLayoutDirty) {\n        return;\n      }\n      if (this.resumeFrom && !this.resumeFrom.instance) {\n        for (let i = 0; i < this.path.length; i++) {\n          const node = this.path[i];\n          node.updateScroll();\n        }\n      }\n      const prevLayout = this.layout;\n      this.layout = this.measure(false);\n      this.layoutCorrected = createBox();\n      this.isLayoutDirty = false;\n      this.projectionDelta = void 0;\n      this.notifyListeners(\"measure\", this.layout.layoutBox);\n      const { visualElement } = this.options;\n      visualElement && visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : void 0);\n    }\n    updateScroll(phase = \"measure\") {\n      let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n      if (this.scroll && this.scroll.animationId === this.root.animationId && this.scroll.phase === phase) {\n        needsMeasurement = false;\n      }\n      if (needsMeasurement) {\n        const isRoot = checkIsScrollRoot(this.instance);\n        this.scroll = {\n          animationId: this.root.animationId,\n          phase,\n          isRoot,\n          offset: measureScroll(this.instance),\n          wasRoot: this.scroll ? this.scroll.isRoot : isRoot\n        };\n      }\n    }\n    resetTransform() {\n      if (!resetTransform)\n        return;\n      const isResetRequested = this.isLayoutDirty || this.shouldResetTransform || this.options.alwaysMeasureLayout;\n      const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n      const transformTemplate = this.getTransformTemplate();\n      const transformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n      if (isResetRequested && (hasProjection || hasTransform(this.latestValues) || transformTemplateHasChanged)) {\n        resetTransform(this.instance, transformTemplateValue);\n        this.shouldResetTransform = false;\n        this.scheduleRender();\n      }\n    }\n    measure(removeTransform = true) {\n      const pageBox = this.measurePageBox();\n      let layoutBox = this.removeElementScroll(pageBox);\n      if (removeTransform) {\n        layoutBox = this.removeTransform(layoutBox);\n      }\n      roundBox(layoutBox);\n      return {\n        animationId: this.root.animationId,\n        measuredBox: pageBox,\n        layoutBox,\n        latestValues: {},\n        source: this.id\n      };\n    }\n    measurePageBox() {\n      var _a;\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return createBox();\n      const box = visualElement.measureViewportBox();\n      const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n      if (!wasInScrollRoot) {\n        const { scroll: scroll2 } = this.root;\n        if (scroll2) {\n          translateAxis(box.x, scroll2.offset.x);\n          translateAxis(box.y, scroll2.offset.y);\n        }\n      }\n      return box;\n    }\n    removeElementScroll(box) {\n      var _a;\n      const boxWithoutScroll = createBox();\n      copyBoxInto(boxWithoutScroll, box);\n      if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n        return boxWithoutScroll;\n      }\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        const { scroll: scroll2, options } = node;\n        if (node !== this.root && scroll2 && options.layoutScroll) {\n          if (scroll2.wasRoot) {\n            copyBoxInto(boxWithoutScroll, box);\n          }\n          translateAxis(boxWithoutScroll.x, scroll2.offset.x);\n          translateAxis(boxWithoutScroll.y, scroll2.offset.y);\n        }\n      }\n      return boxWithoutScroll;\n    }\n    applyTransform(box, transformOnly = false) {\n      const withTransforms = createBox();\n      copyBoxInto(withTransforms, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!transformOnly && node.options.layoutScroll && node.scroll && node !== node.root) {\n          transformBox(withTransforms, {\n            x: -node.scroll.offset.x,\n            y: -node.scroll.offset.y\n          });\n        }\n        if (!hasTransform(node.latestValues))\n          continue;\n        transformBox(withTransforms, node.latestValues);\n      }\n      if (hasTransform(this.latestValues)) {\n        transformBox(withTransforms, this.latestValues);\n      }\n      return withTransforms;\n    }\n    removeTransform(box) {\n      const boxWithoutTransform = createBox();\n      copyBoxInto(boxWithoutTransform, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!node.instance)\n          continue;\n        if (!hasTransform(node.latestValues))\n          continue;\n        hasScale(node.latestValues) && node.updateSnapshot();\n        const sourceBox = createBox();\n        const nodeBox = node.measurePageBox();\n        copyBoxInto(sourceBox, nodeBox);\n        removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : void 0, sourceBox);\n      }\n      if (hasTransform(this.latestValues)) {\n        removeBoxTransforms(boxWithoutTransform, this.latestValues);\n      }\n      return boxWithoutTransform;\n    }\n    setTargetDelta(delta) {\n      this.targetDelta = delta;\n      this.root.scheduleUpdateProjection();\n      this.isProjectionDirty = true;\n    }\n    setOptions(options) {\n      this.options = {\n        ...this.options,\n        ...options,\n        crossfade: options.crossfade !== void 0 ? options.crossfade : true\n      };\n    }\n    clearMeasurements() {\n      this.scroll = void 0;\n      this.layout = void 0;\n      this.snapshot = void 0;\n      this.prevTransformTemplateValue = void 0;\n      this.targetDelta = void 0;\n      this.target = void 0;\n      this.isLayoutDirty = false;\n    }\n    forceRelativeParentToResolveTarget() {\n      if (!this.relativeParent)\n        return;\n      if (this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp) {\n        this.relativeParent.resolveTargetDelta(true);\n      }\n    }\n    resolveTargetDelta(forceRecalculation = false) {\n      var _a;\n      const lead = this.getLead();\n      this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n      this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n      this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      const canSkip = !(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize);\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      this.resolvedRelativeTargetAt = frameData.timestamp;\n      if (!this.targetDelta && !this.relativeTarget) {\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (!this.relativeTarget && !this.targetDelta)\n        return;\n      if (!this.target) {\n        this.target = createBox();\n        this.targetWithTransforms = createBox();\n      }\n      if (this.relativeTarget && this.relativeTargetOrigin && this.relativeParent && this.relativeParent.target) {\n        this.forceRelativeParentToResolveTarget();\n        calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n      } else if (this.targetDelta) {\n        if (Boolean(this.resumingFrom)) {\n          this.target = this.applyTransform(this.layout.layoutBox);\n        } else {\n          copyBoxInto(this.target, this.layout.layoutBox);\n        }\n        applyBoxDelta(this.target, this.targetDelta);\n      } else {\n        copyBoxInto(this.target, this.layout.layoutBox);\n      }\n      if (this.attemptToResolveRelativeTarget) {\n        this.attemptToResolveRelativeTarget = false;\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (isDebug) {\n        metrics.resolvedTargetDeltas++;\n      }\n    }\n    getClosestProjectingParent() {\n      if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues)) {\n        return void 0;\n      }\n      if (this.parent.isProjecting()) {\n        return this.parent;\n      } else {\n        return this.parent.getClosestProjectingParent();\n      }\n    }\n    isProjecting() {\n      return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);\n    }\n    calcProjection() {\n      var _a;\n      const lead = this.getLead();\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      let canSkip = true;\n      if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n        canSkip = false;\n      }\n      if (isShared && (this.isSharedProjectionDirty || this.isTransformDirty)) {\n        canSkip = false;\n      }\n      if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n        canSkip = false;\n      }\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      this.isTreeAnimating = Boolean(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation);\n      if (!this.isTreeAnimating) {\n        this.targetDelta = this.relativeTarget = void 0;\n      }\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n      const prevTreeScaleX = this.treeScale.x;\n      const prevTreeScaleY = this.treeScale.y;\n      applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n      if (lead.layout && !lead.target && (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n        lead.target = lead.layout.layoutBox;\n        lead.targetWithTransforms = createBox();\n      }\n      const { target } = lead;\n      if (!target) {\n        if (this.prevProjectionDelta) {\n          this.createProjectionDeltas();\n          this.scheduleRender();\n        }\n        return;\n      }\n      if (!this.projectionDelta || !this.prevProjectionDelta) {\n        this.createProjectionDeltas();\n      } else {\n        copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n        copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n      }\n      calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n      if (this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY || !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) || !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n        this.hasProjected = true;\n        this.scheduleRender();\n        this.notifyListeners(\"projectionUpdate\", target);\n      }\n      if (isDebug) {\n        metrics.recalculatedProjection++;\n      }\n    }\n    hide() {\n      this.isVisible = false;\n    }\n    show() {\n      this.isVisible = true;\n    }\n    scheduleRender(notifyAll2 = true) {\n      var _a;\n      (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n      if (notifyAll2) {\n        const stack = this.getStack();\n        stack && stack.scheduleRender();\n      }\n      if (this.resumingFrom && !this.resumingFrom.instance) {\n        this.resumingFrom = void 0;\n      }\n    }\n    createProjectionDeltas() {\n      this.prevProjectionDelta = createDelta();\n      this.projectionDelta = createDelta();\n      this.projectionDeltaWithTransform = createDelta();\n    }\n    setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n      const snapshot = this.snapshot;\n      const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n      const mixedValues = { ...this.latestValues };\n      const targetDelta = createDelta();\n      if (!this.relativeParent || !this.relativeParent.options.layoutRoot) {\n        this.relativeTarget = this.relativeTargetOrigin = void 0;\n      }\n      this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n      const relativeLayout = createBox();\n      const snapshotSource = snapshot ? snapshot.source : void 0;\n      const layoutSource = this.layout ? this.layout.source : void 0;\n      const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n      const stack = this.getStack();\n      const isOnlyMember = !stack || stack.members.length <= 1;\n      const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));\n      this.animationProgress = 0;\n      let prevRelativeTarget;\n      this.mixTargetDelta = (latest) => {\n        const progress2 = latest / 1e3;\n        mixAxisDelta(targetDelta.x, delta.x, progress2);\n        mixAxisDelta(targetDelta.y, delta.y, progress2);\n        this.setTargetDelta(targetDelta);\n        if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {\n          calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n          mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress2);\n          if (prevRelativeTarget && boxEquals(this.relativeTarget, prevRelativeTarget)) {\n            this.isProjectionDirty = false;\n          }\n          if (!prevRelativeTarget)\n            prevRelativeTarget = createBox();\n          copyBoxInto(prevRelativeTarget, this.relativeTarget);\n        }\n        if (isSharedLayoutAnimation) {\n          this.animationValues = mixedValues;\n          mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress2, shouldCrossfadeOpacity, isOnlyMember);\n        }\n        this.root.scheduleUpdateProjection();\n        this.scheduleRender();\n        this.animationProgress = progress2;\n      };\n      this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);\n    }\n    startAnimation(options) {\n      this.notifyListeners(\"animationStart\");\n      this.currentAnimation && this.currentAnimation.stop();\n      if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n        this.resumingFrom.currentAnimation.stop();\n      }\n      if (this.pendingAnimation) {\n        cancelFrame(this.pendingAnimation);\n        this.pendingAnimation = void 0;\n      }\n      this.pendingAnimation = frame.update(() => {\n        globalProjectionState.hasAnimatedSinceResize = true;\n        this.currentAnimation = animateSingleValue(0, animationTarget, {\n          ...options,\n          onUpdate: (latest) => {\n            this.mixTargetDelta(latest);\n            options.onUpdate && options.onUpdate(latest);\n          },\n          onComplete: () => {\n            options.onComplete && options.onComplete();\n            this.completeAnimation();\n          }\n        });\n        if (this.resumingFrom) {\n          this.resumingFrom.currentAnimation = this.currentAnimation;\n        }\n        this.pendingAnimation = void 0;\n      });\n    }\n    completeAnimation() {\n      if (this.resumingFrom) {\n        this.resumingFrom.currentAnimation = void 0;\n        this.resumingFrom.preserveOpacity = void 0;\n      }\n      const stack = this.getStack();\n      stack && stack.exitAnimationComplete();\n      this.resumingFrom = this.currentAnimation = this.animationValues = void 0;\n      this.notifyListeners(\"animationComplete\");\n    }\n    finishAnimation() {\n      if (this.currentAnimation) {\n        this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n        this.currentAnimation.stop();\n      }\n      this.completeAnimation();\n    }\n    applyTransformsToTarget() {\n      const lead = this.getLead();\n      let { targetWithTransforms, target, layout: layout2, latestValues } = lead;\n      if (!targetWithTransforms || !target || !layout2)\n        return;\n      if (this !== lead && this.layout && layout2 && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout2.layoutBox)) {\n        target = this.target || createBox();\n        const xLength = calcLength(this.layout.layoutBox.x);\n        target.x.min = lead.target.x.min;\n        target.x.max = target.x.min + xLength;\n        const yLength = calcLength(this.layout.layoutBox.y);\n        target.y.min = lead.target.y.min;\n        target.y.max = target.y.min + yLength;\n      }\n      copyBoxInto(targetWithTransforms, target);\n      transformBox(targetWithTransforms, latestValues);\n      calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n    }\n    registerSharedNode(layoutId, node) {\n      if (!this.sharedNodes.has(layoutId)) {\n        this.sharedNodes.set(layoutId, new NodeStack());\n      }\n      const stack = this.sharedNodes.get(layoutId);\n      stack.add(node);\n      const config = node.options.initialPromotionConfig;\n      node.promote({\n        transition: config ? config.transition : void 0,\n        preserveFollowOpacity: config && config.shouldPreserveFollowOpacity ? config.shouldPreserveFollowOpacity(node) : void 0\n      });\n    }\n    isLead() {\n      const stack = this.getStack();\n      return stack ? stack.lead === this : true;\n    }\n    getLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n    }\n    getPrevLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : void 0;\n    }\n    getStack() {\n      const { layoutId } = this.options;\n      if (layoutId)\n        return this.root.sharedNodes.get(layoutId);\n    }\n    promote({ needsReset, transition, preserveFollowOpacity } = {}) {\n      const stack = this.getStack();\n      if (stack)\n        stack.promote(this, preserveFollowOpacity);\n      if (needsReset) {\n        this.projectionDelta = void 0;\n        this.needsReset = true;\n      }\n      if (transition)\n        this.setOptions({ transition });\n    }\n    relegate() {\n      const stack = this.getStack();\n      if (stack) {\n        return stack.relegate(this);\n      } else {\n        return false;\n      }\n    }\n    resetSkewAndRotation() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return;\n      let hasDistortingTransform = false;\n      const { latestValues } = visualElement;\n      if (latestValues.z || latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ || latestValues.skewX || latestValues.skewY) {\n        hasDistortingTransform = true;\n      }\n      if (!hasDistortingTransform)\n        return;\n      const resetValues = {};\n      if (latestValues.z) {\n        resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n      }\n      for (let i = 0; i < transformAxes.length; i++) {\n        resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n        resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n      }\n      visualElement.render();\n      for (const key in resetValues) {\n        visualElement.setStaticValue(key, resetValues[key]);\n        if (this.animationValues) {\n          this.animationValues[key] = resetValues[key];\n        }\n      }\n      visualElement.scheduleRender();\n    }\n    getProjectionStyles(styleProp) {\n      var _a, _b;\n      if (!this.instance || this.isSVG)\n        return void 0;\n      if (!this.isVisible) {\n        return hiddenVisibility;\n      }\n      const styles = {\n        visibility: \"\"\n      };\n      const transformTemplate = this.getTransformTemplate();\n      if (this.needsReset) {\n        this.needsReset = false;\n        styles.opacity = \"\";\n        styles.pointerEvents = resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n        styles.transform = transformTemplate ? transformTemplate(this.latestValues, \"\") : \"none\";\n        return styles;\n      }\n      const lead = this.getLead();\n      if (!this.projectionDelta || !this.layout || !lead.target) {\n        const emptyStyles = {};\n        if (this.options.layoutId) {\n          emptyStyles.opacity = this.latestValues.opacity !== void 0 ? this.latestValues.opacity : 1;\n          emptyStyles.pointerEvents = resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n        }\n        if (this.hasProjected && !hasTransform(this.latestValues)) {\n          emptyStyles.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n          this.hasProjected = false;\n        }\n        return emptyStyles;\n      }\n      const valuesToRender = lead.animationValues || lead.latestValues;\n      this.applyTransformsToTarget();\n      styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n      if (transformTemplate) {\n        styles.transform = transformTemplate(valuesToRender, styles.transform);\n      }\n      const { x, y } = this.projectionDelta;\n      styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n      if (lead.animationValues) {\n        styles.opacity = lead === this ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit;\n      } else {\n        styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : \"\" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;\n      }\n      for (const key in scaleCorrectors) {\n        if (valuesToRender[key] === void 0)\n          continue;\n        const { correct, applyTo } = scaleCorrectors[key];\n        const corrected = styles.transform === \"none\" ? valuesToRender[key] : correct(valuesToRender[key], lead);\n        if (applyTo) {\n          const num = applyTo.length;\n          for (let i = 0; i < num; i++) {\n            styles[applyTo[i]] = corrected;\n          }\n        } else {\n          styles[key] = corrected;\n        }\n      }\n      if (this.options.layoutId) {\n        styles.pointerEvents = lead === this ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\" : \"none\";\n      }\n      return styles;\n    }\n    clearSnapshot() {\n      this.resumeFrom = this.snapshot = void 0;\n    }\n    // Only run on root\n    resetTree() {\n      this.root.nodes.forEach((node) => {\n        var _a;\n        return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n      });\n      this.root.nodes.forEach(clearMeasurements);\n      this.root.sharedNodes.clear();\n    }\n  };\n}\nfunction updateLayout(node) {\n  node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n  var _a;\n  const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n  if (node.isLead() && node.layout && snapshot && node.hasListeners(\"didUpdate\")) {\n    const { layoutBox: layout2, measuredBox: measuredLayout } = node.layout;\n    const { animationType } = node.options;\n    const isShared = snapshot.source !== node.layout.source;\n    if (animationType === \"size\") {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(axisSnapshot);\n        axisSnapshot.min = layout2[axis].min;\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout2)) {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(layout2[axis]);\n        axisSnapshot.max = axisSnapshot.min + length;\n        if (node.relativeTarget && !node.currentAnimation) {\n          node.isProjectionDirty = true;\n          node.relativeTarget[axis].max = node.relativeTarget[axis].min + length;\n        }\n      });\n    }\n    const layoutDelta = createDelta();\n    calcBoxDelta(layoutDelta, layout2, snapshot.layoutBox);\n    const visualDelta = createDelta();\n    if (isShared) {\n      calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n    } else {\n      calcBoxDelta(visualDelta, layout2, snapshot.layoutBox);\n    }\n    const hasLayoutChanged = !isDeltaZero(layoutDelta);\n    let hasRelativeTargetChanged = false;\n    if (!node.resumeFrom) {\n      const relativeParent = node.getClosestProjectingParent();\n      if (relativeParent && !relativeParent.resumeFrom) {\n        const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n        if (parentSnapshot && parentLayout) {\n          const relativeSnapshot = createBox();\n          calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n          const relativeLayout = createBox();\n          calcRelativePosition(relativeLayout, layout2, parentLayout.layoutBox);\n          if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n            hasRelativeTargetChanged = true;\n          }\n          if (relativeParent.options.layoutRoot) {\n            node.relativeTarget = relativeLayout;\n            node.relativeTargetOrigin = relativeSnapshot;\n            node.relativeParent = relativeParent;\n          }\n        }\n      }\n    }\n    node.notifyListeners(\"didUpdate\", {\n      layout: layout2,\n      snapshot,\n      delta: visualDelta,\n      layoutDelta,\n      hasLayoutChanged,\n      hasRelativeTargetChanged\n    });\n  } else if (node.isLead()) {\n    const { onExitComplete } = node.options;\n    onExitComplete && onExitComplete();\n  }\n  node.options.transition = void 0;\n}\nfunction propagateDirtyNodes(node) {\n  if (isDebug) {\n    metrics.totalNodes++;\n  }\n  if (!node.parent)\n    return;\n  if (!node.isProjecting()) {\n    node.isProjectionDirty = node.parent.isProjectionDirty;\n  }\n  node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || node.parent.isProjectionDirty || node.parent.isSharedProjectionDirty));\n  node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n  node.isProjectionDirty = node.isSharedProjectionDirty = node.isTransformDirty = false;\n}\nfunction clearSnapshot(node) {\n  node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n  node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n  node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n  const { visualElement } = node.options;\n  if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n    visualElement.notify(\"BeforeLayoutMeasure\");\n  }\n  node.resetTransform();\n}\nfunction finishAnimation(node) {\n  node.finishAnimation();\n  node.targetDelta = node.relativeTarget = node.target = void 0;\n  node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n  node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n  node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n  node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n  stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n  output.translate = mixNumber(delta.translate, 0, p);\n  output.scale = mixNumber(delta.scale, 1, p);\n  output.origin = delta.origin;\n  output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n  output.min = mixNumber(from.min, to.min, p);\n  output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n  mixAxis(output.x, from.x, to.x, p);\n  mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n  return node.animationValues && node.animationValues.opacityExit !== void 0;\n}\nvar defaultLayoutTransition = {\n  duration: 0.45,\n  ease: [0.4, 0, 0.1, 1]\n};\nvar userAgentContains = (string) => typeof navigator !== \"undefined\" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(string);\nvar roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\") ? Math.round : noop;\nfunction roundAxis(axis) {\n  axis.min = roundPoint(axis.min);\n  axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n  roundAxis(box.x);\n  roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout2) {\n  return animationType === \"position\" || animationType === \"preserve-aspect\" && !isNear(aspectRatio(snapshot), aspectRatio(layout2), 0.2);\n}\nfunction checkNodeWasScrollRoot(node) {\n  var _a;\n  return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs\nvar DocumentProjectionNode = createProjectionNode2({\n  attachResizeListener: (ref, notify2) => addDomEvent(ref, \"resize\", notify2),\n  measureScroll: () => ({\n    x: document.documentElement.scrollLeft || document.body.scrollLeft,\n    y: document.documentElement.scrollTop || document.body.scrollTop\n  }),\n  checkIsScrollRoot: () => true\n});\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs\nvar rootProjectionNode = {\n  current: void 0\n};\nvar HTMLProjectionNode = createProjectionNode2({\n  measureScroll: (instance) => ({\n    x: instance.scrollLeft,\n    y: instance.scrollTop\n  }),\n  defaultParent: () => {\n    if (!rootProjectionNode.current) {\n      const documentNode = new DocumentProjectionNode({});\n      documentNode.mount(window);\n      documentNode.setOptions({ layoutScroll: true });\n      rootProjectionNode.current = documentNode;\n    }\n    return rootProjectionNode.current;\n  },\n  resetTransform: (instance, value) => {\n    instance.style.transform = value !== void 0 ? value : \"none\";\n  },\n  checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\")\n});\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/drag.mjs\nvar drag = {\n  pan: {\n    Feature: PanGesture\n  },\n  drag: {\n    Feature: DragGesture,\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/hover.mjs\nfunction addHoverEvent(node, isActive) {\n  const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n  const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n  const handleEvent = (event, info) => {\n    if (event.pointerType === \"touch\" || isDragActive())\n      return;\n    const props = node.getProps();\n    if (node.animationState && props.whileHover) {\n      node.animationState.setActive(\"whileHover\", isActive);\n    }\n    const callback = props[callbackName];\n    if (callback) {\n      frame.postRender(() => callback(event, info));\n    }\n  };\n  return addPointerEvent(node.current, eventName, handleEvent, {\n    passive: !node.getProps()[callbackName]\n  });\n}\nvar HoverGesture = class extends Feature {\n  mount() {\n    this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/focus.mjs\nvar FocusGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.isActive = false;\n  }\n  onFocus() {\n    let isFocusVisible = false;\n    try {\n      isFocusVisible = this.node.current.matches(\":focus-visible\");\n    } catch (e) {\n      isFocusVisible = true;\n    }\n    if (!isFocusVisible || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", true);\n    this.isActive = true;\n  }\n  onBlur() {\n    if (!this.isActive || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", false);\n    this.isActive = false;\n  }\n  mount() {\n    this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs\nvar isNodeOrChild = (parent, child) => {\n  if (!child) {\n    return false;\n  } else if (parent === child) {\n    return true;\n  } else {\n    return isNodeOrChild(parent, child.parentElement);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/press.mjs\nfunction fireSyntheticPointerEvent(name, handler) {\n  if (!handler)\n    return;\n  const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n  handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nvar PressGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removeStartListeners = noop;\n    this.removeEndListeners = noop;\n    this.removeAccessibleListeners = noop;\n    this.startPointerPress = (startEvent, startInfo) => {\n      if (this.isPressing)\n        return;\n      this.removeEndListeners();\n      const props = this.node.getProps();\n      const endPointerPress = (endEvent, endInfo) => {\n        if (!this.checkPressEnd())\n          return;\n        const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\n        const handler = !globalTapTarget && !isNodeOrChild(this.node.current, endEvent.target) ? onTapCancel : onTap;\n        if (handler) {\n          frame.update(() => handler(endEvent, endInfo));\n        }\n      };\n      const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n        passive: !(props.onTap || props[\"onPointerUp\"])\n      });\n      const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n        passive: !(props.onTapCancel || props[\"onPointerCancel\"])\n      });\n      this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n      this.startPress(startEvent, startInfo);\n    };\n    this.startAccessiblePress = () => {\n      const handleKeydown = (keydownEvent) => {\n        if (keydownEvent.key !== \"Enter\" || this.isPressing)\n          return;\n        const handleKeyup = (keyupEvent) => {\n          if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n            return;\n          fireSyntheticPointerEvent(\"up\", (event, info) => {\n            const { onTap } = this.node.getProps();\n            if (onTap) {\n              frame.postRender(() => onTap(event, info));\n            }\n          });\n        };\n        this.removeEndListeners();\n        this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n        fireSyntheticPointerEvent(\"down\", (event, info) => {\n          this.startPress(event, info);\n        });\n      };\n      const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n      const handleBlur = () => {\n        if (!this.isPressing)\n          return;\n        fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n      };\n      const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n      this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n    };\n  }\n  startPress(event, info) {\n    this.isPressing = true;\n    const { onTapStart, whileTap } = this.node.getProps();\n    if (whileTap && this.node.animationState) {\n      this.node.animationState.setActive(\"whileTap\", true);\n    }\n    if (onTapStart) {\n      frame.postRender(() => onTapStart(event, info));\n    }\n  }\n  checkPressEnd() {\n    this.removeEndListeners();\n    this.isPressing = false;\n    const props = this.node.getProps();\n    if (props.whileTap && this.node.animationState) {\n      this.node.animationState.setActive(\"whileTap\", false);\n    }\n    return !isDragActive();\n  }\n  cancelPress(event, info) {\n    if (!this.checkPressEnd())\n      return;\n    const { onTapCancel } = this.node.getProps();\n    if (onTapCancel) {\n      frame.postRender(() => onTapCancel(event, info));\n    }\n  }\n  mount() {\n    const props = this.node.getProps();\n    const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n      passive: !(props.onTapStart || props[\"onPointerStart\"])\n    });\n    const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n    this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n  }\n  unmount() {\n    this.removeStartListeners();\n    this.removeEndListeners();\n    this.removeAccessibleListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs\nvar observerCallbacks = /* @__PURE__ */ new WeakMap();\nvar observers = /* @__PURE__ */ new WeakMap();\nvar fireObserverCallback = (entry) => {\n  const callback = observerCallbacks.get(entry.target);\n  callback && callback(entry);\n};\nvar fireAllObserverCallbacks = (entries) => {\n  entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n  const lookupRoot = root || document;\n  if (!observers.has(lookupRoot)) {\n    observers.set(lookupRoot, {});\n  }\n  const rootObservers = observers.get(lookupRoot);\n  const key = JSON.stringify(options);\n  if (!rootObservers[key]) {\n    rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n  }\n  return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n  const rootInteresectionObserver = initIntersectionObserver(options);\n  observerCallbacks.set(element, callback);\n  rootInteresectionObserver.observe(element);\n  return () => {\n    observerCallbacks.delete(element);\n    rootInteresectionObserver.unobserve(element);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs\nvar thresholdNames = {\n  some: 0,\n  all: 1\n};\nvar InViewFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.hasEnteredView = false;\n    this.isInView = false;\n  }\n  startObserver() {\n    this.unmount();\n    const { viewport = {} } = this.node.getProps();\n    const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n    const options = {\n      root: root ? root.current : void 0,\n      rootMargin,\n      threshold: typeof amount === \"number\" ? amount : thresholdNames[amount]\n    };\n    const onIntersectionUpdate = (entry) => {\n      const { isIntersecting } = entry;\n      if (this.isInView === isIntersecting)\n        return;\n      this.isInView = isIntersecting;\n      if (once && !isIntersecting && this.hasEnteredView) {\n        return;\n      } else if (isIntersecting) {\n        this.hasEnteredView = true;\n      }\n      if (this.node.animationState) {\n        this.node.animationState.setActive(\"whileInView\", isIntersecting);\n      }\n      const { onViewportEnter, onViewportLeave } = this.node.getProps();\n      const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n      callback && callback(entry);\n    };\n    return observeIntersection(this.node.current, options, onIntersectionUpdate);\n  }\n  mount() {\n    this.startObserver();\n  }\n  update() {\n    if (typeof IntersectionObserver === \"undefined\")\n      return;\n    const { props, prevProps } = this.node;\n    const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n    if (hasOptionsChanged) {\n      this.startObserver();\n    }\n  }\n  unmount() {\n  }\n};\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n  return (name) => viewport[name] !== prevViewport[name];\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs\nvar gestureAnimations = {\n  inView: {\n    Feature: InViewFeature\n  },\n  tap: {\n    Feature: PressGesture\n  },\n  focus: {\n    Feature: FocusGesture\n  },\n  hover: {\n    Feature: HoverGesture\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout.mjs\nvar layout = {\n  layout: {\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs\nvar lowercaseSVGElements = [\n  \"animate\",\n  \"circle\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"g\",\n  \"image\",\n  \"line\",\n  \"filter\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"rect\",\n  \"stop\",\n  \"switch\",\n  \"symbol\",\n  \"svg\",\n  \"text\",\n  \"tspan\",\n  \"use\",\n  \"view\"\n];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs\nfunction isSVGComponent(Component3) {\n  if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component3 !== \"string\" || /**\n     * If it contains a dash, the element is a custom HTML webcomponent.\n     */\n    Component3.includes(\"-\")\n  ) {\n    return false;\n  } else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component3) > -1 || /**\n     * If it contains a capital letter, it's an SVG component\n     */\n    /[A-Z]/u.test(Component3)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs\nfunction renderHTML(element, { style, vars }, styleProp, projection) {\n  Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n  for (const key in vars) {\n    element.style.setProperty(key, vars[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs\nvar camelCaseAttributes = /* @__PURE__ */ new Set([\n  \"baseFrequency\",\n  \"diffuseConstant\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerWidth\",\n  \"numOctaves\",\n  \"targetX\",\n  \"targetY\",\n  \"surfaceScale\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"stdDeviation\",\n  \"tableValues\",\n  \"viewBox\",\n  \"gradientTransform\",\n  \"pathLength\",\n  \"startOffset\",\n  \"textLength\",\n  \"lengthAdjust\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs\nfunction renderSVG(element, renderState, _styleProp, projection) {\n  renderHTML(element, renderState, void 0, projection);\n  for (const key in renderState.attrs) {\n    element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs\nfunction isForcedMotionValue(key, { layout: layout2, layoutId }) {\n  return transformProps.has(key) || key.startsWith(\"origin\") || (layout2 || layoutId !== void 0) && (!!scaleCorrectors[key] || key === \"opacity\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n  var _a;\n  const { style } = props;\n  const newValues = {};\n  for (const key in style) {\n    if (isMotionValue(style[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props) || ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== void 0) {\n      newValues[key] = style[key];\n    }\n  }\n  if (visualElement && style && typeof style.willChange === \"string\") {\n    visualElement.applyWillChange = false;\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps2(props, prevProps, visualElement) {\n  const newValues = scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  for (const key in props) {\n    if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n      const targetKey = transformPropOrder.indexOf(key) !== -1 ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1) : key;\n      newValues[targetKey] = props[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs\nvar createHtmlRenderState = () => ({\n  style: {},\n  transform: {},\n  transformOrigin: {},\n  vars: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs\nvar createSvgRenderState = () => ({\n  ...createHtmlRenderState(),\n  attrs: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs\nfunction buildHTMLStyles(state2, latestValues, transformTemplate) {\n  const { style, vars, transformOrigin } = state2;\n  let hasTransform2 = false;\n  let hasTransformOrigin = false;\n  for (const key in latestValues) {\n    const value = latestValues[key];\n    if (transformProps.has(key)) {\n      hasTransform2 = true;\n      continue;\n    } else if (isCSSVariableName(key)) {\n      vars[key] = value;\n      continue;\n    } else {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (key.startsWith(\"origin\")) {\n        hasTransformOrigin = true;\n        transformOrigin[key] = valueAsType;\n      } else {\n        style[key] = valueAsType;\n      }\n    }\n  }\n  if (!latestValues.transform) {\n    if (hasTransform2 || transformTemplate) {\n      style.transform = buildTransform(latestValues, state2.transform, transformTemplate);\n    } else if (style.transform) {\n      style.transform = \"none\";\n    }\n  }\n  if (hasTransformOrigin) {\n    const { originX = \"50%\", originY = \"50%\", originZ = 0 } = transformOrigin;\n    style.transformOrigin = `${originX} ${originY} ${originZ}`;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs\nfunction calcOrigin2(origin, offset, size) {\n  return typeof origin === \"string\" ? origin : px.transform(offset + size * origin);\n}\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n  const pxOriginX = calcOrigin2(originX, dimensions.x, dimensions.width);\n  const pxOriginY = calcOrigin2(originY, dimensions.y, dimensions.height);\n  return `${pxOriginX} ${pxOriginY}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs\nvar dashKeys = {\n  offset: \"stroke-dashoffset\",\n  array: \"stroke-dasharray\"\n};\nvar camelKeys = {\n  offset: \"strokeDashoffset\",\n  array: \"strokeDasharray\"\n};\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n  attrs.pathLength = 1;\n  const keys2 = useDashCase ? dashKeys : camelKeys;\n  attrs[keys2.offset] = px.transform(-offset);\n  const pathLength = px.transform(length);\n  const pathSpacing = px.transform(spacing);\n  attrs[keys2.array] = `${pathLength} ${pathSpacing}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs\nfunction buildSVGAttrs(state2, {\n  attrX,\n  attrY,\n  attrScale,\n  originX,\n  originY,\n  pathLength,\n  pathSpacing = 1,\n  pathOffset = 0,\n  // This is object creation, which we try to avoid per-frame.\n  ...latest\n}, isSVGTag2, transformTemplate) {\n  buildHTMLStyles(state2, latest, transformTemplate);\n  if (isSVGTag2) {\n    if (state2.style.viewBox) {\n      state2.attrs.viewBox = state2.style.viewBox;\n    }\n    return;\n  }\n  state2.attrs = state2.style;\n  state2.style = {};\n  const { attrs, style, dimensions } = state2;\n  if (attrs.transform) {\n    if (dimensions)\n      style.transform = attrs.transform;\n    delete attrs.transform;\n  }\n  if (dimensions && (originX !== void 0 || originY !== void 0 || style.transform)) {\n    style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== void 0 ? originX : 0.5, originY !== void 0 ? originY : 0.5);\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (attrScale !== void 0)\n    attrs.scale = attrScale;\n  if (pathLength !== void 0) {\n    buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs\nvar isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs\nvar svgMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeMotionValuesFromProps2,\n    createRenderState: createSvgRenderState,\n    onMount: (props, instance, { renderState, latestValues }) => {\n      frame.read(() => {\n        try {\n          renderState.dimensions = typeof instance.getBBox === \"function\" ? instance.getBBox() : instance.getBoundingClientRect();\n        } catch (e) {\n          renderState.dimensions = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0\n          };\n        }\n      });\n      frame.render(() => {\n        buildSVGAttrs(renderState, latestValues, isSVGTag(instance.tagName), props.transformTemplate);\n        renderSVG(instance, renderState);\n      });\n    }\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs\nvar htmlMotionConfig = {\n  useVisualState: makeUseVisualState({\n    applyWillChange: true,\n    scrapeMotionValuesFromProps,\n    createRenderState: createHtmlRenderState\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nimport { Fragment, useMemo as useMemo4, createElement } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nimport { useMemo as useMemo2 } from \"react\";\nfunction copyRawValuesOnly(target, source, props) {\n  for (const key in source) {\n    if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n      target[key] = source[key];\n    }\n  }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n  return useMemo2(() => {\n    const state2 = createHtmlRenderState();\n    buildHTMLStyles(state2, visualState, transformTemplate);\n    return Object.assign({}, state2.vars, state2.style);\n  }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n  const styleProp = props.style || {};\n  const style = {};\n  copyRawValuesOnly(style, styleProp, props);\n  Object.assign(style, useInitialMotionValues(props, visualState));\n  return style;\n}\nfunction useHTMLProps(props, visualState) {\n  const htmlProps = {};\n  const style = useStyle(props, visualState);\n  if (props.drag && props.dragListener !== false) {\n    htmlProps.draggable = false;\n    style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout = \"none\";\n    style.touchAction = props.drag === true ? \"none\" : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n  }\n  if (props.tabIndex === void 0 && (props.onTap || props.onTapStart || props.whileTap)) {\n    htmlProps.tabIndex = 0;\n  }\n  htmlProps.style = style;\n  return htmlProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nimport { useMemo as useMemo3 } from \"react\";\nfunction useSVGProps(props, visualState, _isStatic, Component3) {\n  const visualProps = useMemo3(() => {\n    const state2 = createSvgRenderState();\n    buildSVGAttrs(state2, visualState, isSVGTag(Component3), props.transformTemplate);\n    return {\n      ...state2.attrs,\n      style: { ...state2.style }\n    };\n  }, [visualState]);\n  if (props.style) {\n    const rawStyles = {};\n    copyRawValuesOnly(rawStyles, props.style, props);\n    visualProps.style = { ...rawStyles, ...visualProps.style };\n  }\n  return visualProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nfunction createUseRender(forwardMotionProps = false) {\n  const useRender = (Component3, props, ref, { latestValues }, isStatic) => {\n    const useVisualProps = isSVGComponent(Component3) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component3);\n    const filteredProps = filterProps(props, typeof Component3 === \"string\", forwardMotionProps);\n    const elementProps = Component3 !== Fragment ? { ...filteredProps, ...visualProps, ref } : {};\n    const { children } = props;\n    const renderedChildren = useMemo4(() => isMotionValue(children) ? children.get() : children, [children]);\n    return createElement(Component3, {\n      ...elementProps,\n      children: renderedChildren\n    });\n  };\n  return useRender;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-factory.mjs\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n  return function createMotionComponent2(Component3, { forwardMotionProps } = { forwardMotionProps: false }) {\n    const baseConfig = isSVGComponent(Component3) ? svgMotionConfig : htmlMotionConfig;\n    const config = {\n      ...baseConfig,\n      preloadedFeatures,\n      useRender: createUseRender(forwardMotionProps),\n      createVisualElement,\n      Component: Component3\n    };\n    return createRendererMotionComponent(config);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nimport { Fragment as Fragment2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs\nvar DOMVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.KeyframeResolver = DOMKeyframesResolver;\n  }\n  sortInstanceNodePosition(a, b) {\n    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props.style ? props.style[key] : void 0;\n  }\n  removeValueFromRenderState(key, { vars, style }) {\n    delete vars[key];\n    delete style[key];\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs\nfunction getComputedStyle2(element) {\n  return window.getComputedStyle(element);\n}\nvar HTMLVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"html\";\n    this.applyWillChange = true;\n    this.renderInstance = renderHTML;\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    } else {\n      const computedStyle = getComputedStyle2(instance);\n      const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;\n      return typeof value === \"string\" ? value.trim() : value;\n    }\n  }\n  measureInstanceViewportBox(instance, { transformPagePoint }) {\n    return measureViewportBox(instance, transformPagePoint);\n  }\n  build(renderState, latestValues, props) {\n    buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  }\n  handleChildMotionValue() {\n    if (this.childSubscription) {\n      this.childSubscription();\n      delete this.childSubscription;\n    }\n    const { children } = this.props;\n    if (isMotionValue(children)) {\n      this.childSubscription = children.on(\"change\", (latest) => {\n        if (this.current)\n          this.current.textContent = `${latest}`;\n      });\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs\nvar SVGVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"svg\";\n    this.isSVGTag = false;\n    this.measureInstanceViewportBox = createBox;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props[key];\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    }\n    key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n    return instance.getAttribute(key);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps2(props, prevProps, visualElement);\n  }\n  build(renderState, latestValues, props) {\n    buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderSVG(instance, renderState, styleProp, projection);\n  }\n  mount(instance) {\n    this.isSVGTag = isSVGTag(instance.tagName);\n    super.mount(instance);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nvar createDomVisualElement = (Component3, options) => {\n  return isSVGComponent(Component3) ? new SVGVisualElement(options) : new HTMLVisualElement(options, {\n    allowProjection: Component3 !== Fragment2\n  });\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/create.mjs\nvar createMotionComponent = /* @__PURE__ */ createMotionComponentFactory({\n  ...animations,\n  ...gestureAnimations,\n  ...drag,\n  ...layout\n}, createDomVisualElement);\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\nvar motion = /* @__PURE__ */ createDOMMotionComponentProxy(createMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/create.mjs\nvar createMinimalMotionComponent = /* @__PURE__ */ createMotionComponentFactory();\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\nvar m = /* @__PURE__ */ createDOMMotionComponentProxy(createMinimalMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nimport { jsx as jsx5, Fragment as Fragment3 } from \"react/jsx-runtime\";\nimport { useMemo as useMemo6, useRef as useRef4, useState, useContext as useContext8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nimport * as React2 from \"react\";\nimport { useId as useId3, useCallback as useCallback3, useMemo as useMemo5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { useId as useId2, useRef as useRef3, useContext as useContext7, useInsertionEffect as useInsertionEffect2 } from \"react\";\nvar PopChildMeasure = class extends React.Component {\n  getSnapshotBeforeUpdate(prevProps) {\n    const element = this.props.childRef.current;\n    if (element && prevProps.isPresent && !this.props.isPresent) {\n      const size = this.props.sizeRef.current;\n      size.height = element.offsetHeight || 0;\n      size.width = element.offsetWidth || 0;\n      size.top = element.offsetTop;\n      size.left = element.offsetLeft;\n    }\n    return null;\n  }\n  /**\n   * Required with getSnapshotBeforeUpdate to stop React complaining.\n   */\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\nfunction PopChild({ children, isPresent: isPresent2 }) {\n  const id4 = useId2();\n  const ref = useRef3(null);\n  const size = useRef3({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  });\n  const { nonce } = useContext7(MotionConfigContext);\n  useInsertionEffect2(() => {\n    const { width, height, top, left } = size.current;\n    if (isPresent2 || !ref.current || !width || !height)\n      return;\n    ref.current.dataset.motionPopId = id4;\n    const style = document.createElement(\"style\");\n    if (nonce)\n      style.nonce = nonce;\n    document.head.appendChild(style);\n    if (style.sheet) {\n      style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id4}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n    }\n    return () => {\n      document.head.removeChild(style);\n    };\n  }, [isPresent2]);\n  return jsx3(PopChildMeasure, { isPresent: isPresent2, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nvar PresenceChild = ({ children, initial, isPresent: isPresent2, onExitComplete, custom, presenceAffectsLayout, mode }) => {\n  const presenceChildren = useConstant(newChildrenMap);\n  const id4 = useId3();\n  const memoizedOnExitComplete = useCallback3((childId) => {\n    presenceChildren.set(childId, true);\n    for (const isComplete of presenceChildren.values()) {\n      if (!isComplete)\n        return;\n    }\n    onExitComplete && onExitComplete();\n  }, [presenceChildren, onExitComplete]);\n  const context = useMemo5(\n    () => ({\n      id: id4,\n      initial,\n      isPresent: isPresent2,\n      custom,\n      onExitComplete: memoizedOnExitComplete,\n      register: (childId) => {\n        presenceChildren.set(childId, false);\n        return () => presenceChildren.delete(childId);\n      }\n    }),\n    /**\n     * If the presence of a child affects the layout of the components around it,\n     * we want to make a new context value to ensure they get re-rendered\n     * so they can detect that layout change.\n     */\n    presenceAffectsLayout ? [Math.random(), memoizedOnExitComplete] : [isPresent2, memoizedOnExitComplete]\n  );\n  useMemo5(() => {\n    presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n  }, [isPresent2]);\n  React2.useEffect(() => {\n    !isPresent2 && !presenceChildren.size && onExitComplete && onExitComplete();\n  }, [isPresent2]);\n  if (mode === \"popLayout\") {\n    children = jsx4(PopChild, { isPresent: isPresent2, children });\n  }\n  return jsx4(PresenceContext.Provider, { value: context, children });\n};\nfunction newChildrenMap() {\n  return /* @__PURE__ */ new Map();\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs\nimport { Children, isValidElement } from \"react\";\nvar getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n  const filtered = [];\n  Children.forEach(children, (child) => {\n    if (isValidElement(child))\n      filtered.push(child);\n  });\n  return filtered;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nvar AnimatePresence = ({ children, exitBeforeEnter, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\" }) => {\n  invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n  const presentChildren = useMemo6(() => onlyElements(children), [children]);\n  const presentKeys = presentChildren.map(getChildKey);\n  const isInitialRender = useRef4(true);\n  const pendingPresentChildren = useRef4(presentChildren);\n  const exitComplete = useConstant(() => /* @__PURE__ */ new Map());\n  const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n  const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n  useIsomorphicLayoutEffect(() => {\n    isInitialRender.current = false;\n    pendingPresentChildren.current = presentChildren;\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const key = getChildKey(renderedChildren[i]);\n      if (!presentKeys.includes(key)) {\n        if (exitComplete.get(key) !== true) {\n          exitComplete.set(key, false);\n        }\n      } else {\n        exitComplete.delete(key);\n      }\n    }\n  }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n  const exitingChildren = [];\n  if (presentChildren !== diffedChildren) {\n    let nextChildren = [...presentChildren];\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const child = renderedChildren[i];\n      const key = getChildKey(child);\n      if (!presentKeys.includes(key)) {\n        nextChildren.splice(i, 0, child);\n        exitingChildren.push(child);\n      }\n    }\n    if (mode === \"wait\" && exitingChildren.length) {\n      nextChildren = exitingChildren;\n    }\n    setRenderedChildren(onlyElements(nextChildren));\n    setDiffedChildren(presentChildren);\n    return;\n  }\n  if (false) {\n    console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n  }\n  const { forceRender } = useContext8(LayoutGroupContext);\n  return jsx5(Fragment3, { children: renderedChildren.map((child) => {\n    const key = getChildKey(child);\n    const isPresent2 = presentChildren === renderedChildren || presentKeys.includes(key);\n    const onExit = () => {\n      if (exitComplete.has(key)) {\n        exitComplete.set(key, true);\n      } else {\n        return;\n      }\n      let isEveryExitComplete = true;\n      exitComplete.forEach((isExitComplete) => {\n        if (!isExitComplete)\n          isEveryExitComplete = false;\n      });\n      if (isEveryExitComplete) {\n        forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n        setRenderedChildren(pendingPresentChildren.current);\n        onExitComplete && onExitComplete();\n      }\n    };\n    return jsx5(PresenceChild, { isPresent: isPresent2, initial: !isInitialRender.current || initial ? void 0 : false, custom: isPresent2 ? void 0 : custom, presenceAffectsLayout, mode, onExitComplete: isPresent2 ? void 0 : onExit, children: child }, key);\n  }) });\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs\nimport { jsx as jsx6 } from \"react/jsx-runtime\";\nimport { useContext as useContext9, useMemo as useMemo7 } from \"react\";\nfunction MotionConfig({ children, isValidProp, ...config }) {\n  isValidProp && loadExternalIsValidProp(isValidProp);\n  config = { ...useContext9(MotionConfigContext), ...config };\n  config.isStatic = useConstant(() => config.isStatic);\n  const context = useMemo7(() => config, [\n    JSON.stringify(config.transition),\n    config.transformPagePoint,\n    config.reducedMotion\n  ]);\n  return jsx6(MotionConfigContext.Provider, { value: context, children });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nimport { jsx as jsx7 } from \"react/jsx-runtime\";\nimport { useState as useState2, useRef as useRef5, useEffect as useEffect5 } from \"react\";\nfunction LazyMotion({ children, features, strict = false }) {\n  const [, setIsLoaded] = useState2(!isLazyBundle(features));\n  const loadedRenderer = useRef5(void 0);\n  if (!isLazyBundle(features)) {\n    const { renderer, ...loadedFeatures } = features;\n    loadedRenderer.current = renderer;\n    loadFeatures(loadedFeatures);\n  }\n  useEffect5(() => {\n    if (isLazyBundle(features)) {\n      features().then(({ renderer, ...loadedFeatures }) => {\n        loadFeatures(loadedFeatures);\n        loadedRenderer.current = renderer;\n        setIsLoaded(true);\n      });\n    }\n  }, []);\n  return jsx7(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict }, children });\n}\nfunction isLazyBundle(features) {\n  return typeof features === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs\nimport { createContext as createContext7 } from \"react\";\nvar DeprecatedLayoutGroupContext = createContext7(null);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nimport { useState as useState3, useCallback as useCallback4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs\nimport { useRef as useRef6 } from \"react\";\nfunction useIsMounted() {\n  const isMounted = useRef6(false);\n  useIsomorphicLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nfunction useForceUpdate() {\n  const isMounted = useIsMounted();\n  const [forcedRenderCount, setForcedRenderCount] = useState3(0);\n  const forceRender = useCallback4(() => {\n    isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n  }, [forcedRenderCount]);\n  const deferredForceRender = useCallback4(() => frame.postRender(forceRender), [forceRender]);\n  return [deferredForceRender, forcedRenderCount];\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nimport { jsx as jsx8 } from \"react/jsx-runtime\";\nimport { useContext as useContext10, useRef as useRef7, useMemo as useMemo8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/group.mjs\nvar notify = (node) => !node.isLayoutDirty && node.willUpdate(false);\nfunction nodeGroup() {\n  const nodes = /* @__PURE__ */ new Set();\n  const subscriptions = /* @__PURE__ */ new WeakMap();\n  const dirtyAll = () => nodes.forEach(notify);\n  return {\n    add: (node) => {\n      nodes.add(node);\n      subscriptions.set(node, node.addEventListener(\"willUpdate\", dirtyAll));\n    },\n    remove: (node) => {\n      nodes.delete(node);\n      const unsubscribe = subscriptions.get(node);\n      if (unsubscribe) {\n        unsubscribe();\n        subscriptions.delete(node);\n      }\n      dirtyAll();\n    },\n    dirty: dirtyAll\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nvar shouldInheritGroup = (inherit) => inherit === true;\nvar shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === \"id\";\nvar LayoutGroup = ({ children, id: id4, inherit = true }) => {\n  const layoutGroupContext = useContext10(LayoutGroupContext);\n  const deprecatedLayoutGroupContext = useContext10(DeprecatedLayoutGroupContext);\n  const [forceRender, key] = useForceUpdate();\n  const context = useRef7(null);\n  const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;\n  if (context.current === null) {\n    if (shouldInheritId(inherit) && upstreamId) {\n      id4 = id4 ? upstreamId + \"-\" + id4 : upstreamId;\n    }\n    context.current = {\n      id: id4,\n      group: shouldInheritGroup(inherit) ? layoutGroupContext.group || nodeGroup() : nodeGroup()\n    };\n  }\n  const memoizedContext = useMemo8(() => ({ ...context.current, forceRender }), [key]);\n  return jsx8(LayoutGroupContext.Provider, { value: memoizedContext, children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-min.mjs\nvar domMin = {\n  renderer: createDomVisualElement,\n  ...animations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\nvar domAnimation = {\n  renderer: createDomVisualElement,\n  ...animations,\n  ...gestureAnimations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-max.mjs\nvar domMax = {\n  ...domAnimation,\n  ...drag,\n  ...layout\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-value.mjs\nimport { useContext as useContext11, useState as useState4, useEffect as useEffect6 } from \"react\";\nfunction useMotionValue(initial) {\n  const value = useConstant(() => motionValue(initial));\n  const { isStatic } = useContext11(MotionConfigContext);\n  if (isStatic) {\n    const [, setLatest] = useState4(initial);\n    useEffect6(() => value.on(\"change\", setLatest), []);\n  }\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-combine-values.mjs\nfunction useCombineMotionValues(values, combineValues) {\n  const value = useMotionValue(combineValues());\n  const updateValue = () => value.set(combineValues());\n  updateValue();\n  useIsomorphicLayoutEffect(() => {\n    const scheduleUpdate = () => frame.preRender(updateValue, false, true);\n    const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n    return () => {\n      subscriptions.forEach((unsubscribe) => unsubscribe());\n      cancelFrame(updateValue);\n    };\n  });\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-template.mjs\nfunction useMotionTemplate(fragments, ...values) {\n  const numFragments = fragments.length;\n  function buildValue() {\n    let output = ``;\n    for (let i = 0; i < numFragments; i++) {\n      output += fragments[i];\n      const value = values[i];\n      if (value) {\n        output += isMotionValue(value) ? value.get() : value;\n      }\n    }\n    return output;\n  }\n  return useCombineMotionValues(values.filter(isMotionValue), buildValue);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/transform.mjs\nvar isCustomValueType = (v) => {\n  return v && typeof v === \"object\" && v.mix;\n};\nvar getMixer2 = (v) => isCustomValueType(v) ? v.mix : void 0;\nfunction transform(...args) {\n  const useImmediate = !Array.isArray(args[0]);\n  const argOffset = useImmediate ? 0 : -1;\n  const inputValue = args[0 + argOffset];\n  const inputRange = args[1 + argOffset];\n  const outputRange = args[2 + argOffset];\n  const options = args[3 + argOffset];\n  const interpolator = interpolate(inputRange, outputRange, {\n    mixer: getMixer2(outputRange[0]),\n    ...options\n  });\n  return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-computed.mjs\nfunction useComputed(compute) {\n  collectMotionValues.current = [];\n  compute();\n  const value = useCombineMotionValues(collectMotionValues.current, compute);\n  collectMotionValues.current = void 0;\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n  if (typeof input === \"function\") {\n    return useComputed(input);\n  }\n  const transformer = typeof inputRangeOrTransformer === \"function\" ? inputRangeOrTransformer : transform(inputRangeOrTransformer, outputRange, options);\n  return Array.isArray(input) ? useListTransform(input, transformer) : useListTransform([input], ([latest]) => transformer(latest));\n}\nfunction useListTransform(values, transformer) {\n  const latest = useConstant(() => []);\n  return useCombineMotionValues(values, () => {\n    latest.length = 0;\n    const numValues = values.length;\n    for (let i = 0; i < numValues; i++) {\n      latest[i] = values[i].get();\n    }\n    return transformer(latest);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-spring.mjs\nimport { useContext as useContext12, useRef as useRef8, useInsertionEffect as useInsertionEffect3 } from \"react\";\nfunction toNumber(v) {\n  if (typeof v === \"number\")\n    return v;\n  return parseFloat(v);\n}\nfunction useSpring(source, config = {}) {\n  const { isStatic } = useContext12(MotionConfigContext);\n  const activeSpringAnimation = useRef8(null);\n  const value = useMotionValue(isMotionValue(source) ? toNumber(source.get()) : source);\n  const latestValue = useRef8(value.get());\n  const latestSetter = useRef8(() => {\n  });\n  const startAnimation = () => {\n    const animation = activeSpringAnimation.current;\n    if (animation && animation.time === 0) {\n      animation.sample(frameData.delta);\n    }\n    stopAnimation2();\n    activeSpringAnimation.current = animateValue({\n      keyframes: [value.get(), latestValue.current],\n      velocity: value.getVelocity(),\n      type: \"spring\",\n      restDelta: 1e-3,\n      restSpeed: 0.01,\n      ...config,\n      onUpdate: latestSetter.current\n    });\n  };\n  const stopAnimation2 = () => {\n    if (activeSpringAnimation.current) {\n      activeSpringAnimation.current.stop();\n    }\n  };\n  useInsertionEffect3(() => {\n    return value.attach((v, set) => {\n      if (isStatic)\n        return set(v);\n      latestValue.current = v;\n      latestSetter.current = set;\n      frame.update(startAnimation);\n      return value.get();\n    }, stopAnimation2);\n  }, [JSON.stringify(config)]);\n  useIsomorphicLayoutEffect(() => {\n    if (isMotionValue(source)) {\n      return source.on(\"change\", (v) => value.set(toNumber(v)));\n    }\n  }, [value]);\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs\nimport { useInsertionEffect as useInsertionEffect4 } from \"react\";\nfunction useMotionValueEvent(value, event, callback) {\n  useInsertionEffect4(() => value.on(event, callback), [value, event, callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-velocity.mjs\nfunction useVelocity(value) {\n  const velocity = useMotionValue(value.getVelocity());\n  const updateVelocity = () => {\n    const latest = value.getVelocity();\n    velocity.set(latest);\n    if (latest)\n      frame.update(updateVelocity);\n  };\n  useMotionValueEvent(value, \"change\", () => {\n    frame.update(updateVelocity, false, true);\n  });\n  return velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/resolve-element.mjs\nfunction resolveElements(elements, scope, selectorCache) {\n  var _a;\n  if (typeof elements === \"string\") {\n    let root = document;\n    if (scope) {\n      invariant(Boolean(scope.current), \"Scope provided, but no element detected.\");\n      root = scope.current;\n    }\n    if (selectorCache) {\n      (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = root.querySelectorAll(elements);\n      elements = selectorCache[elements];\n    } else {\n      elements = root.querySelectorAll(elements);\n    }\n  } else if (elements instanceof Element) {\n    elements = [elements];\n  }\n  return Array.from(elements || []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-element.mjs\nvar resizeHandlers = /* @__PURE__ */ new WeakMap();\nvar observer;\nfunction getElementSize(target, borderBoxSize) {\n  if (borderBoxSize) {\n    const { inlineSize, blockSize } = borderBoxSize[0];\n    return { width: inlineSize, height: blockSize };\n  } else if (target instanceof SVGElement && \"getBBox\" in target) {\n    return target.getBBox();\n  } else {\n    return {\n      width: target.offsetWidth,\n      height: target.offsetHeight\n    };\n  }\n}\nfunction notifyTarget({ target, contentRect, borderBoxSize }) {\n  var _a;\n  (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => {\n    handler({\n      target,\n      contentSize: contentRect,\n      get size() {\n        return getElementSize(target, borderBoxSize);\n      }\n    });\n  });\n}\nfunction notifyAll(entries) {\n  entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n  if (typeof ResizeObserver === \"undefined\")\n    return;\n  observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n  if (!observer)\n    createResizeObserver();\n  const elements = resolveElements(target);\n  elements.forEach((element) => {\n    let elementHandlers = resizeHandlers.get(element);\n    if (!elementHandlers) {\n      elementHandlers = /* @__PURE__ */ new Set();\n      resizeHandlers.set(element, elementHandlers);\n    }\n    elementHandlers.add(handler);\n    observer === null || observer === void 0 ? void 0 : observer.observe(element);\n  });\n  return () => {\n    elements.forEach((element) => {\n      const elementHandlers = resizeHandlers.get(element);\n      elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler);\n      if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) {\n        observer === null || observer === void 0 ? void 0 : observer.unobserve(element);\n      }\n    });\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-window.mjs\nvar windowCallbacks = /* @__PURE__ */ new Set();\nvar windowResizeHandler;\nfunction createWindowResizeHandler() {\n  windowResizeHandler = () => {\n    const size = {\n      width: window.innerWidth,\n      height: window.innerHeight\n    };\n    const info = {\n      target: window,\n      size,\n      contentSize: size\n    };\n    windowCallbacks.forEach((callback) => callback(info));\n  };\n  window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n  windowCallbacks.add(callback);\n  if (!windowResizeHandler)\n    createWindowResizeHandler();\n  return () => {\n    windowCallbacks.delete(callback);\n    if (!windowCallbacks.size && windowResizeHandler) {\n      windowResizeHandler = void 0;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/index.mjs\nfunction resize(a, b) {\n  return typeof a === \"function\" ? resizeWindow(a) : resizeElement(a, b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs\nvar maxElapsed2 = 50;\nvar createAxisInfo = () => ({\n  current: 0,\n  offset: [],\n  progress: 0,\n  scrollLength: 0,\n  targetOffset: 0,\n  targetLength: 0,\n  containerLength: 0,\n  velocity: 0\n});\nvar createScrollInfo = () => ({\n  time: 0,\n  x: createAxisInfo(),\n  y: createAxisInfo()\n});\nvar keys = {\n  x: {\n    length: \"Width\",\n    position: \"Left\"\n  },\n  y: {\n    length: \"Height\",\n    position: \"Top\"\n  }\n};\nfunction updateAxisInfo(element, axisName, info, time2) {\n  const axis = info[axisName];\n  const { length, position } = keys[axisName];\n  const prev = axis.current;\n  const prevTime = info.time;\n  axis.current = element[`scroll${position}`];\n  axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];\n  axis.offset.length = 0;\n  axis.offset[0] = 0;\n  axis.offset[1] = axis.scrollLength;\n  axis.progress = progress(0, axis.scrollLength, axis.current);\n  const elapsed = time2 - prevTime;\n  axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time2) {\n  updateAxisInfo(element, \"x\", info, time2);\n  updateAxisInfo(element, \"y\", info, time2);\n  info.time = time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs\nfunction calcInset(element, container) {\n  const inset = { x: 0, y: 0 };\n  let current = element;\n  while (current && current !== container) {\n    if (current instanceof HTMLElement) {\n      inset.x += current.offsetLeft;\n      inset.y += current.offsetTop;\n      current = current.offsetParent;\n    } else if (current.tagName === \"svg\") {\n      const svgBoundingBox = current.getBoundingClientRect();\n      current = current.parentElement;\n      const parentBoundingBox = current.getBoundingClientRect();\n      inset.x += svgBoundingBox.left - parentBoundingBox.left;\n      inset.y += svgBoundingBox.top - parentBoundingBox.top;\n    } else if (current instanceof SVGGraphicsElement) {\n      const { x, y } = current.getBBox();\n      inset.x += x;\n      inset.y += y;\n      let svg = null;\n      let parent = current.parentNode;\n      while (!svg) {\n        if (parent.tagName === \"svg\") {\n          svg = parent;\n        }\n        parent = current.parentNode;\n      }\n      current = svg;\n    } else {\n      break;\n    }\n  }\n  return inset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs\nvar ScrollOffset = {\n  Enter: [\n    [0, 1],\n    [1, 1]\n  ],\n  Exit: [\n    [0, 0],\n    [1, 0]\n  ],\n  Any: [\n    [1, 0],\n    [0, 1]\n  ],\n  All: [\n    [0, 0],\n    [1, 1]\n  ]\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs\nvar namedEdges = {\n  start: 0,\n  center: 0.5,\n  end: 1\n};\nfunction resolveEdge(edge, length, inset = 0) {\n  let delta = 0;\n  if (edge in namedEdges) {\n    edge = namedEdges[edge];\n  }\n  if (typeof edge === \"string\") {\n    const asNumber2 = parseFloat(edge);\n    if (edge.endsWith(\"px\")) {\n      delta = asNumber2;\n    } else if (edge.endsWith(\"%\")) {\n      edge = asNumber2 / 100;\n    } else if (edge.endsWith(\"vw\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientWidth;\n    } else if (edge.endsWith(\"vh\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientHeight;\n    } else {\n      edge = asNumber2;\n    }\n  }\n  if (typeof edge === \"number\") {\n    delta = length * edge;\n  }\n  return inset + delta;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs\nvar defaultOffset2 = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n  let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;\n  let targetPoint = 0;\n  let containerPoint = 0;\n  if (typeof offset === \"number\") {\n    offsetDefinition = [offset, offset];\n  } else if (typeof offset === \"string\") {\n    offset = offset.trim();\n    if (offset.includes(\" \")) {\n      offsetDefinition = offset.split(\" \");\n    } else {\n      offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];\n    }\n  }\n  targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n  containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n  return targetPoint - containerPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs\nvar point = { x: 0, y: 0 };\nfunction getTargetSize(target) {\n  return \"getBBox\" in target && target.tagName !== \"svg\" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };\n}\nfunction resolveOffsets(container, info, options) {\n  const { offset: offsetDefinition = ScrollOffset.All } = options;\n  const { target = container, axis = \"y\" } = options;\n  const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n  const inset = target !== container ? calcInset(target, container) : point;\n  const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);\n  const containerSize = {\n    width: container.clientWidth,\n    height: container.clientHeight\n  };\n  info[axis].offset.length = 0;\n  let hasChanged = !info[axis].interpolate;\n  const numOffsets = offsetDefinition.length;\n  for (let i = 0; i < numOffsets; i++) {\n    const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n    if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n      hasChanged = true;\n    }\n    info[axis].offset[i] = offset;\n  }\n  if (hasChanged) {\n    info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition));\n    info[axis].interpolatorOffsets = [...info[axis].offset];\n  }\n  info[axis].progress = info[axis].interpolate(info[axis].current);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs\nfunction measure(container, target = container, info) {\n  info.x.targetOffset = 0;\n  info.y.targetOffset = 0;\n  if (target !== container) {\n    let node = target;\n    while (node && node !== container) {\n      info.x.targetOffset += node.offsetLeft;\n      info.y.targetOffset += node.offsetTop;\n      node = node.offsetParent;\n    }\n  }\n  info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;\n  info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;\n  info.x.containerLength = container.clientWidth;\n  info.y.containerLength = container.clientHeight;\n  if (false) {\n    if (container && target && target !== container) {\n      warnOnce(getComputedStyle(container).position !== \"static\", \"Please ensure that the container has a non-static position, like 'relative', 'fixed', or 'absolute' to ensure scroll offset is calculated correctly.\");\n    }\n  }\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n  return {\n    measure: () => measure(element, options.target, info),\n    update: (time2) => {\n      updateScrollInfo(element, info, time2);\n      if (options.offset || options.target) {\n        resolveOffsets(element, info, options);\n      }\n    },\n    notify: () => onScroll(info)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getEventTarget = (element) => element === document.documentElement ? window : element;\nfunction scrollInfo(onScroll, { container = document.documentElement, ...options } = {}) {\n  let containerHandlers = onScrollHandlers.get(container);\n  if (!containerHandlers) {\n    containerHandlers = /* @__PURE__ */ new Set();\n    onScrollHandlers.set(container, containerHandlers);\n  }\n  const info = createScrollInfo();\n  const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n  containerHandlers.add(containerHandler);\n  if (!scrollListeners.has(container)) {\n    const measureAll = () => {\n      for (const handler of containerHandlers)\n        handler.measure();\n    };\n    const updateAll = () => {\n      for (const handler of containerHandlers) {\n        handler.update(frameData.timestamp);\n      }\n    };\n    const notifyAll2 = () => {\n      for (const handler of containerHandlers)\n        handler.notify();\n    };\n    const listener2 = () => {\n      frame.read(measureAll, false, true);\n      frame.read(updateAll, false, true);\n      frame.update(notifyAll2, false, true);\n    };\n    scrollListeners.set(container, listener2);\n    const target = getEventTarget(container);\n    window.addEventListener(\"resize\", listener2, { passive: true });\n    if (container !== document.documentElement) {\n      resizeListeners.set(container, resize(container, listener2));\n    }\n    target.addEventListener(\"scroll\", listener2, { passive: true });\n  }\n  const listener = scrollListeners.get(container);\n  frame.read(listener, false, true);\n  return () => {\n    var _a;\n    cancelFrame(listener);\n    const currentHandlers = onScrollHandlers.get(container);\n    if (!currentHandlers)\n      return;\n    currentHandlers.delete(containerHandler);\n    if (currentHandlers.size)\n      return;\n    const scrollListener = scrollListeners.get(container);\n    scrollListeners.delete(container);\n    if (scrollListener) {\n      getEventTarget(container).removeEventListener(\"scroll\", scrollListener);\n      (_a = resizeListeners.get(container)) === null || _a === void 0 ? void 0 : _a();\n      window.removeEventListener(\"resize\", scrollListener);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs\nfunction observeTimeline(update, timeline) {\n  let prevProgress;\n  const onFrame = () => {\n    const { currentTime } = timeline;\n    const percentage = currentTime === null ? 0 : currentTime.value;\n    const progress2 = percentage / 100;\n    if (prevProgress !== progress2) {\n      update(progress2);\n    }\n    prevProgress = progress2;\n  };\n  frame.update(onFrame, true);\n  return () => cancelFrame(onFrame);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs\nfunction scrollTimelineFallback({ source, container, axis = \"y\" }) {\n  if (source)\n    container = source;\n  const currentTime = { value: 0 };\n  const cancel = scrollInfo((info) => {\n    currentTime.value = info[axis].progress * 100;\n  }, { container, axis });\n  return { currentTime, cancel };\n}\nvar timelineCache = /* @__PURE__ */ new Map();\nfunction getTimeline({ source, container = document.documentElement, axis = \"y\" } = {}) {\n  if (source)\n    container = source;\n  if (!timelineCache.has(container)) {\n    timelineCache.set(container, {});\n  }\n  const elementCache = timelineCache.get(container);\n  if (!elementCache[axis]) {\n    elementCache[axis] = supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ source: container, axis });\n  }\n  return elementCache[axis];\n}\nfunction isOnScrollWithInfo(onScroll) {\n  return onScroll.length === 2;\n}\nfunction needsElementTracking(options) {\n  return options && (options.target || options.offset);\n}\nfunction scrollFunction(onScroll, options) {\n  if (isOnScrollWithInfo(onScroll) || needsElementTracking(options)) {\n    return scrollInfo((info) => {\n      onScroll(info[options.axis].progress, info);\n    }, options);\n  } else {\n    return observeTimeline(onScroll, getTimeline(options));\n  }\n}\nfunction scrollAnimation(animation, options) {\n  if (needsElementTracking(options)) {\n    animation.pause();\n    return scrollInfo((info) => {\n      animation.time = animation.duration * info[options.axis].progress;\n    }, options);\n  } else {\n    const timeline = getTimeline(options);\n    return animation.attachTimeline(timeline, (valueAnimation) => {\n      valueAnimation.pause();\n      return observeTimeline((progress2) => {\n        valueAnimation.time = valueAnimation.duration * progress2;\n      }, timeline);\n    });\n  }\n}\nfunction scroll(onScroll, { axis = \"y\", ...options } = {}) {\n  const optionsWithDefaults = { axis, ...options };\n  return typeof onScroll === \"function\" ? scrollFunction(onScroll, optionsWithDefaults) : scrollAnimation(onScroll, optionsWithDefaults);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-scroll.mjs\nimport { useEffect as useEffect7 } from \"react\";\nfunction refWarning(name, ref) {\n  warning(Boolean(!ref || ref.current), `You have defined a ${name} options but the provided ref is not yet hydrated, probably because it's defined higher up the tree. Try calling useScroll() in the same component as the ref, or setting its \\`layoutEffect: false\\` option.`);\n}\nvar createScrollMotionValues = () => ({\n  scrollX: motionValue(0),\n  scrollY: motionValue(0),\n  scrollXProgress: motionValue(0),\n  scrollYProgress: motionValue(0)\n});\nfunction useScroll({ container, target, layoutEffect = true, ...options } = {}) {\n  const values = useConstant(createScrollMotionValues);\n  const useLifecycleEffect = layoutEffect ? useIsomorphicLayoutEffect : useEffect7;\n  useLifecycleEffect(() => {\n    refWarning(\"target\", target);\n    refWarning(\"container\", container);\n    return scroll((_progress, { x, y }) => {\n      values.scrollX.set(x.current);\n      values.scrollXProgress.set(x.progress);\n      values.scrollY.set(y.current);\n      values.scrollYProgress.set(y.progress);\n    }, {\n      ...options,\n      container: (container === null || container === void 0 ? void 0 : container.current) || void 0,\n      target: (target === null || target === void 0 ? void 0 : target.current) || void 0\n    });\n  }, [container, target, JSON.stringify(options.offset)]);\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.mjs\nfunction useElementScroll(ref) {\n  if (false) {\n    warnOnce(false, \"useElementScroll is deprecated. Convert to useScroll({ container: ref }).\");\n  }\n  return useScroll({ container: ref });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs\nfunction useViewportScroll() {\n  if (false) {\n    warnOnce(false, \"useViewportScroll is deprecated. Convert to useScroll().\");\n  }\n  return useScroll();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs\nimport { useRef as useRef9, useContext as useContext13, useEffect as useEffect8 } from \"react\";\nfunction useAnimationFrame(callback) {\n  const initialTimestamp = useRef9(0);\n  const { isStatic } = useContext13(MotionConfigContext);\n  useEffect8(() => {\n    if (isStatic)\n      return;\n    const provideTimeSinceStart = ({ timestamp, delta }) => {\n      if (!initialTimestamp.current)\n        initialTimestamp.current = timestamp;\n      callback(timestamp - initialTimestamp.current, delta);\n    };\n    frame.update(provideTimeSinceStart, true);\n    return () => cancelFrame(provideTimeSinceStart);\n  }, [callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-time.mjs\nfunction useTime() {\n  const time2 = useMotionValue(0);\n  useAnimationFrame((t) => time2.set(t));\n  return time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs\nvar WillChangeMotionValue = class extends MotionValue {\n  constructor() {\n    super(...arguments);\n    this.values = [];\n  }\n  add(name) {\n    const styleName = getWillChangeName(name);\n    if (styleName) {\n      addUniqueItem(this.values, styleName);\n      this.update();\n    }\n  }\n  update() {\n    this.set(this.values.length ? this.values.join(\", \") : \"auto\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/index.mjs\nfunction useWillChange() {\n  return useConstant(() => new WillChangeMotionValue(\"auto\"));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs\nimport { useState as useState5 } from \"react\";\nfunction useReducedMotion() {\n  !hasReducedMotionListener.current && initPrefersReducedMotion();\n  const [shouldReduceMotion] = useState5(prefersReducedMotion.current);\n  if (false) {\n    warnOnce(shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n  }\n  return shouldReduceMotion;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs\nimport { useContext as useContext14 } from \"react\";\nfunction useReducedMotionConfig() {\n  const reducedMotionPreference = useReducedMotion();\n  const { reducedMotion } = useContext14(MotionConfigContext);\n  if (reducedMotion === \"never\") {\n    return false;\n  } else if (reducedMotion === \"always\") {\n    return true;\n  } else {\n    return reducedMotionPreference;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs\nfunction stopAnimation(visualElement) {\n  visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n  const reversedLabels = [...variantLabels].reverse();\n  reversedLabels.forEach((key) => {\n    const variant = visualElement.getVariant(key);\n    variant && setTarget(visualElement, variant);\n    if (visualElement.variantChildren) {\n      visualElement.variantChildren.forEach((child) => {\n        setVariants(child, variantLabels);\n      });\n    }\n  });\n}\nfunction setValues(visualElement, definition) {\n  if (Array.isArray(definition)) {\n    return setVariants(visualElement, definition);\n  } else if (typeof definition === \"string\") {\n    return setVariants(visualElement, [definition]);\n  } else {\n    setTarget(visualElement, definition);\n  }\n}\nfunction animationControls() {\n  let hasMounted = false;\n  const subscribers = /* @__PURE__ */ new Set();\n  const controls = {\n    subscribe(visualElement) {\n      subscribers.add(visualElement);\n      return () => void subscribers.delete(visualElement);\n    },\n    start(definition, transitionOverride) {\n      invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      const animations2 = [];\n      subscribers.forEach((visualElement) => {\n        animations2.push(animateVisualElement(visualElement, definition, {\n          transitionOverride\n        }));\n      });\n      return Promise.all(animations2);\n    },\n    set(definition) {\n      invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      return subscribers.forEach((visualElement) => {\n        setValues(visualElement, definition);\n      });\n    },\n    stop() {\n      subscribers.forEach((visualElement) => {\n        stopAnimation(visualElement);\n      });\n    },\n    mount() {\n      hasMounted = true;\n      return () => {\n        hasMounted = false;\n        controls.stop();\n      };\n    }\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs\nimport { useEffect as useEffect9 } from \"react\";\nfunction useUnmountEffect(callback) {\n  return useEffect9(() => () => callback(), []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/wrap.mjs\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/create-generator-easing.mjs\nfunction createGeneratorEasing(options, scale2 = 100, createGenerator) {\n  const generator = createGenerator({ ...options, keyframes: [0, scale2] });\n  const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n  return {\n    type: \"keyframes\",\n    ease: (progress2) => generator.next(duration * progress2).value / scale2,\n    duration: millisecondsToSeconds(duration)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs\nfunction isDOMKeyframes(keyframes2) {\n  return typeof keyframes2 === \"object\" && !Array.isArray(keyframes2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs\nfunction resolveSubjects(subject, keyframes2, scope, selectorCache) {\n  if (typeof subject === \"string\" && isDOMKeyframes(keyframes2)) {\n    return resolveElements(subject, scope, selectorCache);\n  } else if (subject instanceof NodeList) {\n    return Array.from(subject);\n  } else if (Array.isArray(subject)) {\n    return subject;\n  } else {\n    return [subject];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs\nfunction calcNextTime(current, next, prev, labels) {\n  var _a;\n  if (typeof next === \"number\") {\n    return next;\n  } else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n    return Math.max(0, current + parseFloat(next));\n  } else if (next === \"<\") {\n    return prev;\n  } else {\n    return (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs\nfunction getEasingForSegment(easing, i) {\n  return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs\nfunction eraseKeyframes(sequence, startTime, endTime) {\n  for (let i = 0; i < sequence.length; i++) {\n    const keyframe = sequence[i];\n    if (keyframe.at > startTime && keyframe.at < endTime) {\n      removeItem(sequence, keyframe);\n      i--;\n    }\n  }\n}\nfunction addKeyframes(sequence, keyframes2, easing, offset, startTime, endTime) {\n  eraseKeyframes(sequence, startTime, endTime);\n  for (let i = 0; i < keyframes2.length; i++) {\n    sequence.push({\n      value: keyframes2[i],\n      at: mixNumber(startTime, endTime, offset[i]),\n      easing: getEasingForSegment(easing, i)\n    });\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs\nfunction compareByTime(a, b) {\n  if (a.at === b.at) {\n    if (a.value === null)\n      return 1;\n    if (b.value === null)\n      return -1;\n    return 0;\n  } else {\n    return a.at - b.at;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/create.mjs\nvar defaultSegmentEasing = \"easeInOut\";\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators2) {\n  const defaultDuration = defaultTransition.duration || 0.3;\n  const animationDefinitions = /* @__PURE__ */ new Map();\n  const sequences = /* @__PURE__ */ new Map();\n  const elementCache = {};\n  const timeLabels = /* @__PURE__ */ new Map();\n  let prevTime = 0;\n  let currentTime = 0;\n  let totalDuration = 0;\n  for (let i = 0; i < sequence.length; i++) {\n    const segment = sequence[i];\n    if (typeof segment === \"string\") {\n      timeLabels.set(segment, currentTime);\n      continue;\n    } else if (!Array.isArray(segment)) {\n      timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n      continue;\n    }\n    let [subject, keyframes2, transition = {}] = segment;\n    if (transition.at !== void 0) {\n      currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n    }\n    let maxDuration3 = 0;\n    const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {\n      const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n      const { delay: delay2 = 0, times = defaultOffset(valueKeyframesAsList), type = \"keyframes\", ...remainingTransition } = valueTransition;\n      let { ease: ease2 = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n      const calculatedDelay = typeof delay2 === \"function\" ? delay2(elementIndex, numSubjects) : delay2;\n      const numKeyframes = valueKeyframesAsList.length;\n      const createGenerator = isGenerator(type) ? type : generators2 === null || generators2 === void 0 ? void 0 : generators2[type];\n      if (numKeyframes <= 2 && createGenerator) {\n        let absoluteDelta = 100;\n        if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {\n          const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n          absoluteDelta = Math.abs(delta);\n        }\n        const springTransition = { ...remainingTransition };\n        if (duration !== void 0) {\n          springTransition.duration = secondsToMilliseconds(duration);\n        }\n        const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);\n        ease2 = springEasing.ease;\n        duration = springEasing.duration;\n      }\n      duration !== null && duration !== void 0 ? duration : duration = defaultDuration;\n      const startTime = currentTime + calculatedDelay;\n      const targetTime = startTime + duration;\n      if (times.length === 1 && times[0] === 0) {\n        times[1] = 1;\n      }\n      const remainder = times.length - valueKeyframesAsList.length;\n      remainder > 0 && fillOffset(times, remainder);\n      valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);\n      addKeyframes(valueSequence, valueKeyframesAsList, ease2, times, startTime, targetTime);\n      maxDuration3 = Math.max(calculatedDelay + duration, maxDuration3);\n      totalDuration = Math.max(targetTime, totalDuration);\n    };\n    if (isMotionValue(subject)) {\n      const subjectSequence = getSubjectSequence(subject, sequences);\n      resolveValueSequence(keyframes2, transition, getValueSequence(\"default\", subjectSequence));\n    } else {\n      const subjects = resolveSubjects(subject, keyframes2, scope, elementCache);\n      const numSubjects = subjects.length;\n      for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) {\n        keyframes2 = keyframes2;\n        transition = transition;\n        const thisSubject = subjects[subjectIndex];\n        const subjectSequence = getSubjectSequence(thisSubject, sequences);\n        for (const key in keyframes2) {\n          resolveValueSequence(keyframes2[key], getValueTransition2(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);\n        }\n      }\n    }\n    prevTime = currentTime;\n    currentTime += maxDuration3;\n  }\n  sequences.forEach((valueSequences, element) => {\n    for (const key in valueSequences) {\n      const valueSequence = valueSequences[key];\n      valueSequence.sort(compareByTime);\n      const keyframes2 = [];\n      const valueOffset = [];\n      const valueEasing = [];\n      for (let i = 0; i < valueSequence.length; i++) {\n        const { at, value, easing } = valueSequence[i];\n        keyframes2.push(value);\n        valueOffset.push(progress(0, totalDuration, at));\n        valueEasing.push(easing || \"easeOut\");\n      }\n      if (valueOffset[0] !== 0) {\n        valueOffset.unshift(0);\n        keyframes2.unshift(keyframes2[0]);\n        valueEasing.unshift(defaultSegmentEasing);\n      }\n      if (valueOffset[valueOffset.length - 1] !== 1) {\n        valueOffset.push(1);\n        keyframes2.push(null);\n      }\n      if (!animationDefinitions.has(element)) {\n        animationDefinitions.set(element, {\n          keyframes: {},\n          transition: {}\n        });\n      }\n      const definition = animationDefinitions.get(element);\n      definition.keyframes[key] = keyframes2;\n      definition.transition[key] = {\n        ...defaultTransition,\n        duration: totalDuration,\n        ease: valueEasing,\n        times: valueOffset,\n        ...sequenceTransition\n      };\n    }\n  });\n  return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n  !sequences.has(subject) && sequences.set(subject, {});\n  return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n  if (!sequences[name])\n    sequences[name] = [];\n  return sequences[name];\n}\nfunction keyframesAsList(keyframes2) {\n  return Array.isArray(keyframes2) ? keyframes2 : [keyframes2];\n}\nfunction getValueTransition2(transition, key) {\n  return transition && transition[key] ? {\n    ...transition,\n    ...transition[key]\n  } : { ...transition };\n}\nvar isNumber = (keyframe) => typeof keyframe === \"number\";\nvar isNumberKeyframesArray = (keyframes2) => keyframes2.every(isNumber);\n\n// ../../../node_modules/framer-motion/dist/es/render/object/ObjectVisualElement.mjs\nfunction isObjectKey(key, object) {\n  return key in object;\n}\nvar ObjectVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"object\";\n  }\n  readValueFromInstance(instance, key) {\n    if (isObjectKey(key, instance)) {\n      const value = instance[key];\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        return value;\n      }\n    }\n    return void 0;\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  removeValueFromRenderState(key, renderState) {\n    delete renderState.output[key];\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  build(renderState, latestValues) {\n    Object.assign(renderState.output, latestValues);\n  }\n  renderInstance(instance, { output }) {\n    Object.assign(instance, output);\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs\nfunction createDOMVisualElement(element) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        transform: {},\n        transformOrigin: {},\n        style: {},\n        vars: {},\n        attrs: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = isSVGElement(element) ? new SVGVisualElement(options) : new HTMLVisualElement(options);\n  node.mount(element);\n  visualElementStore.set(element, node);\n}\nfunction createObjectVisualElement(subject) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        output: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = new ObjectVisualElement(options);\n  node.mount(subject);\n  visualElementStore.set(subject, node);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/subject.mjs\nfunction isSingleValue(subject, keyframes2) {\n  return isMotionValue(subject) || typeof subject === \"number\" || typeof subject === \"string\" && !isDOMKeyframes(keyframes2);\n}\nfunction animateSubject(subject, keyframes2, options, scope) {\n  const animations2 = [];\n  if (isSingleValue(subject, keyframes2)) {\n    animations2.push(animateSingleValue(subject, isDOMKeyframes(keyframes2) ? keyframes2.default || keyframes2 : keyframes2, options ? options.default || options : options));\n  } else {\n    const subjects = resolveSubjects(subject, keyframes2, scope);\n    const numSubjects = subjects.length;\n    invariant(Boolean(numSubjects), \"No valid elements provided.\");\n    for (let i = 0; i < numSubjects; i++) {\n      const thisSubject = subjects[i];\n      const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;\n      if (!visualElementStore.has(thisSubject)) {\n        createVisualElement(thisSubject);\n      }\n      const visualElement = visualElementStore.get(thisSubject);\n      const transition = { ...options };\n      if (\"delay\" in transition && typeof transition.delay === \"function\") {\n        transition.delay = transition.delay(i, numSubjects);\n      }\n      animations2.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));\n    }\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/sequence.mjs\nfunction animateSequence(sequence, options, scope) {\n  const animations2 = [];\n  const animationDefinitions = createAnimationsFromSequence(sequence, options, scope, { spring });\n  animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {\n    animations2.push(...animateSubject(subject, keyframes2, transition));\n  });\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/index.mjs\nfunction isSequence(value) {\n  return Array.isArray(value) && Array.isArray(value[0]);\n}\nfunction createScopedAnimate(scope) {\n  function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {\n    let animations2 = [];\n    if (isSequence(subjectOrSequence)) {\n      animations2 = animateSequence(subjectOrSequence, optionsOrKeyframes, scope);\n    } else {\n      animations2 = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope);\n    }\n    const animation = new GroupPlaybackControls(animations2);\n    if (scope) {\n      scope.animations.push(animation);\n    }\n    return animation;\n  }\n  return scopedAnimate;\n}\nvar animate = createScopedAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate.mjs\nfunction useAnimate() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs\nfunction setCSSVar(element, name, value) {\n  element.style.setProperty(`--${name}`, value);\n}\nfunction setStyle(element, name, value) {\n  element.style[name] = value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs\nvar supportsPartialKeyframes = /* @__PURE__ */ memo(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: [1] });\n  } catch (e) {\n    return false;\n  }\n  return true;\n});\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs\nvar state = /* @__PURE__ */ new WeakMap();\nfunction hydrateKeyframes(valueName, keyframes2, read) {\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] === null) {\n      keyframes2[i] = i === 0 ? read() : keyframes2[i - 1];\n    }\n    if (typeof keyframes2[i] === \"number\" && browserNumberValueTypes[valueName]) {\n      keyframes2[i] = browserNumberValueTypes[valueName].transform(keyframes2[i]);\n    }\n  }\n  if (!supportsPartialKeyframes() && keyframes2.length < 2) {\n    keyframes2.unshift(read());\n  }\n}\nvar defaultEasing2 = \"easeOut\";\nfunction getElementAnimationState(element) {\n  const animationState = state.get(element) || /* @__PURE__ */ new Map();\n  state.set(element, animationState);\n  return state.get(element);\n}\nvar NativeAnimation = class {\n  constructor(element, valueName, valueKeyframes, options) {\n    const isCSSVar = valueName.startsWith(\"--\");\n    this.setValue = isCSSVar ? setCSSVar : setStyle;\n    this.options = options;\n    this.updateFinishedPromise();\n    invariant(typeof options.type !== \"string\", `animateMini doesn't support \"type\" as a string. Did you mean to import { spring } from \"framer-motion\"?`);\n    const existingAnimation = getElementAnimationState(element).get(valueName);\n    existingAnimation && existingAnimation.stop();\n    const readInitialKeyframe = () => {\n      return valueName.startsWith(\"--\") ? element.style.getPropertyValue(valueName) : window.getComputedStyle(element)[valueName];\n    };\n    if (!Array.isArray(valueKeyframes)) {\n      valueKeyframes = [valueKeyframes];\n    }\n    hydrateKeyframes(valueName, valueKeyframes, readInitialKeyframe);\n    if (isGenerator(options.type)) {\n      const generatorOptions = createGeneratorEasing(options, 100, options.type);\n      options.ease = supportsLinearEasing() ? generatorOptions.ease : defaultEasing2;\n      options.duration = secondsToMilliseconds(generatorOptions.duration);\n      options.type = \"keyframes\";\n    } else {\n      options.ease = options.ease || defaultEasing2;\n    }\n    this.removeAnimation = () => {\n      var _a;\n      return (_a = state.get(element)) === null || _a === void 0 ? void 0 : _a.delete(valueName);\n    };\n    const onFinish = () => {\n      this.setValue(element, valueName, getFinalKeyframe(valueKeyframes, this.options));\n      this.cancel();\n      this.resolveFinishedPromise();\n    };\n    if (!supportsWaapi()) {\n      onFinish();\n    } else {\n      this.animation = startWaapiAnimation(element, valueName, valueKeyframes, options);\n      if (options.autoplay === false) {\n        this.animation.pause();\n      }\n      this.animation.onfinish = onFinish;\n      if (this.pendingTimeline) {\n        attachTimeline(this.animation, this.pendingTimeline);\n      }\n      getElementAnimationState(element).set(valueName, this);\n    }\n  }\n  get duration() {\n    return millisecondsToSeconds(this.options.duration || 300);\n  }\n  get time() {\n    var _a;\n    if (this.animation) {\n      return millisecondsToSeconds(((_a = this.animation) === null || _a === void 0 ? void 0 : _a.currentTime) || 0);\n    }\n    return 0;\n  }\n  set time(newTime) {\n    if (this.animation) {\n      this.animation.currentTime = secondsToMilliseconds(newTime);\n    }\n  }\n  get speed() {\n    return this.animation ? this.animation.playbackRate : 1;\n  }\n  set speed(newSpeed) {\n    if (this.animation) {\n      this.animation.playbackRate = newSpeed;\n    }\n  }\n  get state() {\n    return this.animation ? this.animation.playState : \"finished\";\n  }\n  get startTime() {\n    return this.animation ? this.animation.startTime : null;\n  }\n  play() {\n    if (this.state === \"finished\") {\n      this.updateFinishedPromise();\n    }\n    this.animation && this.animation.play();\n  }\n  pause() {\n    this.animation && this.animation.pause();\n  }\n  stop() {\n    if (!this.animation || this.state === \"idle\" || this.state === \"finished\") {\n      return;\n    }\n    if (this.animation.commitStyles) {\n      this.animation.commitStyles();\n    }\n    this.cancel();\n  }\n  complete() {\n    this.animation && this.animation.finish();\n  }\n  cancel() {\n    this.removeAnimation();\n    try {\n      this.animation && this.animation.cancel();\n    } catch (e) {\n    }\n  }\n  /**\n   * Allows the returned animation to be awaited or promise-chained. Currently\n   * resolves when the animation finishes at all but in a future update could/should\n   * reject if its cancels.\n   */\n  then(resolve, reject) {\n    return this.currentFinishedPromise.then(resolve, reject);\n  }\n  updateFinishedPromise() {\n    this.currentFinishedPromise = new Promise((resolve) => {\n      this.resolveFinishedPromise = resolve;\n    });\n  }\n  attachTimeline(timeline) {\n    if (!this.animation) {\n      this.pendingTimeline = timeline;\n    } else {\n      attachTimeline(this.animation, timeline);\n    }\n    return noop;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs\nfunction animateElements(elementOrSelector, keyframes2, options, scope) {\n  const elements = resolveElements(elementOrSelector, scope);\n  const numElements = elements.length;\n  invariant(Boolean(numElements), \"No valid element provided.\");\n  const animations2 = [];\n  for (let i = 0; i < numElements; i++) {\n    const element = elements[i];\n    const elementTransition = { ...options };\n    if (typeof elementTransition.delay === \"function\") {\n      elementTransition.delay = elementTransition.delay(i, numElements);\n    }\n    for (const valueName in keyframes2) {\n      const valueKeyframes = keyframes2[valueName];\n      const valueOptions = {\n        ...getValueTransition(options, valueName)\n      };\n      valueOptions.duration = valueOptions.duration ? secondsToMilliseconds(valueOptions.duration) : valueOptions.duration;\n      valueOptions.delay = secondsToMilliseconds(valueOptions.delay || 0);\n      animations2.push(new NativeAnimation(element, valueName, valueKeyframes, valueOptions));\n    }\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs\nvar createScopedWaapiAnimate = (scope) => {\n  function scopedAnimate(elementOrSelector, keyframes2, options) {\n    return new GroupPlaybackControls(animateElements(elementOrSelector, keyframes2, options, scope));\n  }\n  return scopedAnimate;\n};\nvar animateMini = /* @__PURE__ */ createScopedWaapiAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate-style.mjs\nfunction useAnimateMini() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedWaapiAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs\nfunction useAnimationControls() {\n  const controls = useConstant(animationControls);\n  useIsomorphicLayoutEffect(controls.mount, []);\n  return controls;\n}\nvar useAnimation = useAnimationControls;\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-cycle.mjs\nimport { useRef as useRef10, useState as useState6, useCallback as useCallback5 } from \"react\";\nfunction useCycle(...items) {\n  const index = useRef10(0);\n  const [item, setItem] = useState6(items[index.current]);\n  const runCycle = useCallback5(\n    (next) => {\n      index.current = typeof next !== \"number\" ? wrap(0, items.length, index.current + 1) : next;\n      setItem(items[index.current]);\n    },\n    // The array will change on each call, but by putting items.length at\n    // the front of this array, we guarantee the dependency comparison will match up\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [items.length, ...items]\n  );\n  return [item, runCycle];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs\nvar thresholds = {\n  some: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\n  const elements = resolveElements(elementOrSelector);\n  const activeIntersections = /* @__PURE__ */ new WeakMap();\n  const onIntersectionChange = (entries) => {\n    entries.forEach((entry) => {\n      const onEnd = activeIntersections.get(entry.target);\n      if (entry.isIntersecting === Boolean(onEnd))\n        return;\n      if (entry.isIntersecting) {\n        const newOnEnd = onStart(entry);\n        if (typeof newOnEnd === \"function\") {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer2.unobserve(entry.target);\n        }\n      } else if (onEnd) {\n        onEnd(entry);\n        activeIntersections.delete(entry.target);\n      }\n    });\n  };\n  const observer2 = new IntersectionObserver(onIntersectionChange, {\n    root,\n    rootMargin,\n    threshold: typeof amount === \"number\" ? amount : thresholds[amount]\n  });\n  elements.forEach((element) => observer2.observe(element));\n  return () => observer2.disconnect();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs\nimport { useState as useState7, useEffect as useEffect10 } from \"react\";\nfunction useInView(ref, { root, margin, amount, once = false } = {}) {\n  const [isInView, setInView] = useState7(false);\n  useEffect10(() => {\n    if (!ref.current || once && isInView)\n      return;\n    const onEnter = () => {\n      setInView(true);\n      return once ? void 0 : () => setInView(false);\n    };\n    const options = {\n      root: root && root.current || void 0,\n      margin,\n      amount\n    };\n    return inView(ref.current, onEnter, options);\n  }, [root, ref, margin, once, amount]);\n  return isInView;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs\nvar DragControls = class {\n  constructor() {\n    this.componentControls = /* @__PURE__ */ new Set();\n  }\n  /**\n   * Subscribe a component's internal `VisualElementDragControls` to the user-facing API.\n   *\n   * @internal\n   */\n  subscribe(controls) {\n    this.componentControls.add(controls);\n    return () => this.componentControls.delete(controls);\n  }\n  /**\n   * Start a drag gesture on every `motion` component that has this set of drag controls\n   * passed into it via the `dragControls` prop.\n   *\n   * ```jsx\n   * dragControls.start(e, {\n   *   snapToCursor: true\n   * })\n   * ```\n   *\n   * @param event - PointerEvent\n   * @param options - Options\n   *\n   * @public\n   */\n  start(event, options) {\n    this.componentControls.forEach((controls) => {\n      controls.start(event.nativeEvent || event, options);\n    });\n  }\n};\nvar createDragControls = () => new DragControls();\nfunction useDragControls() {\n  return useConstant(createDragControls);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs\nimport { useEffect as useEffect11 } from \"react\";\nfunction useDomEvent(ref, eventName, handler, options) {\n  useEffect11(() => {\n    const element = ref.current;\n    if (handler && element) {\n      return addDomEvent(element, eventName, handler, options);\n    }\n  }, [ref, eventName, handler, options]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-motion-component.mjs\nfunction isMotionComponent(component) {\n  return component !== null && typeof component === \"object\" && motionComponentSymbol in component;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs\nfunction unwrapMotionComponent(component) {\n  if (isMotionComponent(component)) {\n    return component[motionComponentSymbol];\n  }\n  return void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-instant-layout-transition.mjs\nfunction useInstantLayoutTransition() {\n  return startTransition;\n}\nfunction startTransition(callback) {\n  if (!rootProjectionNode.current)\n    return;\n  rootProjectionNode.current.isUpdating = false;\n  rootProjectionNode.current.blockUpdate();\n  callback && callback();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs\nimport { useRef as useRef11, useEffect as useEffect12 } from \"react\";\nfunction useInstantTransition() {\n  const [forceUpdate, forcedRenderCount] = useForceUpdate();\n  const startInstantLayoutTransition = useInstantLayoutTransition();\n  const unlockOnFrameRef = useRef11();\n  useEffect12(() => {\n    frame.postRender(() => frame.postRender(() => {\n      if (forcedRenderCount !== unlockOnFrameRef.current)\n        return;\n      instantAnimationState.current = false;\n    }));\n  }, [forcedRenderCount]);\n  return (callback) => {\n    startInstantLayoutTransition(() => {\n      instantAnimationState.current = true;\n      forceUpdate();\n      callback();\n      unlockOnFrameRef.current = forcedRenderCount + 1;\n    });\n  };\n}\nfunction disableInstantTransitions() {\n  instantAnimationState.current = false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-reset-projection.mjs\nimport { useCallback as useCallback6 } from \"react\";\nfunction useResetProjection() {\n  const reset = useCallback6(() => {\n    const root = rootProjectionNode.current;\n    if (!root)\n      return;\n    root.resetTree();\n  }, []);\n  return reset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs\nvar appearStoreId = (elementId, valueName) => {\n  const key = transformProps.has(valueName) ? \"transform\" : valueName;\n  return `${elementId}: ${key}`;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store.mjs\nvar appearAnimationStore = /* @__PURE__ */ new Map();\nvar appearComplete = /* @__PURE__ */ new Map();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs\nfunction handoffOptimizedAppearAnimation(elementId, valueName, frame2) {\n  var _a;\n  const storeId = appearStoreId(elementId, valueName);\n  const optimisedAnimation = appearAnimationStore.get(storeId);\n  if (!optimisedAnimation) {\n    return null;\n  }\n  const { animation, startTime } = optimisedAnimation;\n  function cancelAnimation() {\n    var _a2;\n    (_a2 = window.MotionCancelOptimisedAnimation) === null || _a2 === void 0 ? void 0 : _a2.call(window, elementId, valueName, frame2);\n  }\n  animation.onfinish = cancelAnimation;\n  if (startTime === null || ((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, elementId))) {\n    cancelAnimation();\n    return null;\n  } else {\n    return startTime;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs\nvar startFrameTime;\nvar readyAnimation;\nvar suspendedAnimations = /* @__PURE__ */ new Set();\nfunction resumeSuspendedAnimations() {\n  suspendedAnimations.forEach((data) => {\n    data.animation.play();\n    data.animation.startTime = data.startTime;\n  });\n  suspendedAnimations.clear();\n}\nfunction startOptimizedAppearAnimation(element, name, keyframes2, options, onReady) {\n  if (window.MotionIsMounted) {\n    return;\n  }\n  const id4 = element.dataset[optimizedAppearDataId];\n  if (!id4)\n    return;\n  window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n  const storeId = appearStoreId(id4, name);\n  if (!readyAnimation) {\n    readyAnimation = startWaapiAnimation(\n      element,\n      name,\n      [keyframes2[0], keyframes2[0]],\n      /**\n       * 10 secs is basically just a super-safe duration to give Chrome\n       * long enough to get the animation ready.\n       */\n      { duration: 1e4, ease: \"linear\" }\n    );\n    appearAnimationStore.set(storeId, {\n      animation: readyAnimation,\n      startTime: null\n    });\n    window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n    window.MotionHasOptimisedAnimation = (elementId, valueName) => {\n      if (!elementId)\n        return false;\n      if (!valueName) {\n        return appearComplete.has(elementId);\n      }\n      const animationId = appearStoreId(elementId, valueName);\n      return Boolean(appearAnimationStore.get(animationId));\n    };\n    window.MotionHandoffMarkAsComplete = (elementId) => {\n      if (appearComplete.has(elementId)) {\n        appearComplete.set(elementId, true);\n      }\n    };\n    window.MotionHandoffIsComplete = (elementId) => {\n      return appearComplete.get(elementId) === true;\n    };\n    window.MotionCancelOptimisedAnimation = (elementId, valueName, frame2, canResume) => {\n      const animationId = appearStoreId(elementId, valueName);\n      const data = appearAnimationStore.get(animationId);\n      if (!data)\n        return;\n      if (frame2 && canResume === void 0) {\n        frame2.postRender(() => {\n          frame2.postRender(() => {\n            data.animation.cancel();\n          });\n        });\n      } else {\n        data.animation.cancel();\n      }\n      if (frame2 && canResume) {\n        suspendedAnimations.add(data);\n        frame2.render(resumeSuspendedAnimations);\n      } else {\n        appearAnimationStore.delete(animationId);\n        if (!appearAnimationStore.size) {\n          window.MotionCancelOptimisedAnimation = void 0;\n        }\n      }\n    };\n    window.MotionCheckAppearSync = (visualElement, valueName, value) => {\n      var _a, _b;\n      const appearId = getOptimisedAppearId(visualElement);\n      if (!appearId)\n        return;\n      const valueIsOptimised = (_a = window.MotionHasOptimisedAnimation) === null || _a === void 0 ? void 0 : _a.call(window, appearId, valueName);\n      const externalAnimationValue = (_b = visualElement.props.values) === null || _b === void 0 ? void 0 : _b[valueName];\n      if (!valueIsOptimised || !externalAnimationValue)\n        return;\n      const removeSyncCheck = value.on(\"change\", (latestValue) => {\n        var _a2;\n        if (externalAnimationValue.get() !== latestValue) {\n          (_a2 = window.MotionCancelOptimisedAnimation) === null || _a2 === void 0 ? void 0 : _a2.call(window, appearId, valueName);\n          removeSyncCheck();\n        }\n      });\n      return removeSyncCheck;\n    };\n  }\n  const startAnimation = () => {\n    readyAnimation.cancel();\n    const appearAnimation = startWaapiAnimation(element, name, keyframes2, options);\n    if (startFrameTime === void 0) {\n      startFrameTime = performance.now();\n    }\n    appearAnimation.startTime = startFrameTime;\n    appearAnimationStore.set(storeId, {\n      animation: appearAnimation,\n      startTime: startFrameTime\n    });\n    if (onReady)\n      onReady(appearAnimation);\n  };\n  appearComplete.set(id4, false);\n  if (readyAnimation.ready) {\n    readyAnimation.ready.then(startAnimation).catch(noop);\n  } else {\n    startAnimation();\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs\nimport { useState as useState8, useLayoutEffect as useLayoutEffect2 } from \"react\";\nvar createObject = () => ({});\nvar StateVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.measureInstanceViewportBox = createBox;\n  }\n  build() {\n  }\n  resetTransform() {\n  }\n  restoreTransform() {\n  }\n  removeValueFromRenderState() {\n  }\n  renderInstance() {\n  }\n  scrapeMotionValuesFromProps() {\n    return createObject();\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  readValueFromInstance(_state, key, options) {\n    return options.initialState[key] || 0;\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\nvar useVisualState = makeUseVisualState({\n  scrapeMotionValuesFromProps: createObject,\n  createRenderState: createObject\n});\nfunction useAnimatedState(initialState) {\n  const [animationState, setAnimationState] = useState8(initialState);\n  const visualState = useVisualState({}, false);\n  const element = useConstant(() => {\n    return new StateVisualElement({\n      props: {\n        onUpdate: (v) => {\n          setAnimationState({ ...v });\n        }\n      },\n      visualState,\n      presenceContext: null\n    }, { initialState });\n  });\n  useLayoutEffect2(() => {\n    element.mount({});\n    return () => element.unmount();\n  }, [element]);\n  const startAnimation = useConstant(() => (animationDefinition) => {\n    return animateVisualElement(element, animationDefinition);\n  });\n  return [animationState, startAnimation];\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs\nimport { useContext as useContext15 } from \"react\";\nvar maxScale = 1e5;\nvar invertScale = (scale2) => scale2 > 1e-3 ? 1 / scale2 : maxScale;\nvar hasWarned = false;\nfunction useInvertedScale(scale2) {\n  let parentScaleX = useMotionValue(1);\n  let parentScaleY = useMotionValue(1);\n  const { visualElement } = useContext15(MotionContext);\n  invariant(!!(scale2 || visualElement), \"If no scale values are provided, useInvertedScale must be used within a child of another motion component.\");\n  warning(hasWarned, \"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead.\");\n  hasWarned = true;\n  if (scale2) {\n    parentScaleX = scale2.scaleX || parentScaleX;\n    parentScaleY = scale2.scaleY || parentScaleY;\n  } else if (visualElement) {\n    parentScaleX = visualElement.getValue(\"scaleX\", 1);\n    parentScaleY = visualElement.getValue(\"scaleY\", 1);\n  }\n  const scaleX = useTransform(parentScaleX, invertScale);\n  const scaleY = useTransform(parentScaleY, invertScale);\n  return { scaleX, scaleY };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimateSharedLayout.mjs\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nimport * as React3 from \"react\";\nvar id3 = 0;\nvar AnimateSharedLayout = ({ children }) => {\n  React3.useEffect(() => {\n    invariant(false, \"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations\");\n  }, []);\n  return jsx9(LayoutGroup, { id: useConstant(() => `asl-${id3++}`), children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/namespace.mjs\nvar namespace_exports = {};\n__export(namespace_exports, {\n  Group: () => ReorderGroup,\n  Item: () => ReorderItem\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef2, useRef as useRef12, useEffect as useEffect14 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/ReorderContext.mjs\nimport { createContext as createContext8 } from \"react\";\nvar ReorderContext = createContext8(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs\nfunction checkReorder(order, value, offset, velocity) {\n  if (!velocity)\n    return order;\n  const index = order.findIndex((item2) => item2.value === value);\n  if (index === -1)\n    return order;\n  const nextOffset = velocity > 0 ? 1 : -1;\n  const nextItem = order[index + nextOffset];\n  if (!nextItem)\n    return order;\n  const item = order[index];\n  const nextLayout = nextItem.layout;\n  const nextItemCenter = mixNumber(nextLayout.min, nextLayout.max, 0.5);\n  if (nextOffset === 1 && item.layout.max + offset > nextItemCenter || nextOffset === -1 && item.layout.min + offset < nextItemCenter) {\n    return moveItem(order, index, index + nextOffset);\n  }\n  return order;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nfunction ReorderGroupComponent({ children, as = \"ul\", axis = \"y\", onReorder, values, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const order = [];\n  const isReordering = useRef12(false);\n  invariant(Boolean(values), \"Reorder.Group must be provided a values prop\");\n  const context = {\n    axis,\n    registerItem: (value, layout2) => {\n      const idx = order.findIndex((entry) => value === entry.value);\n      if (idx !== -1) {\n        order[idx].layout = layout2[axis];\n      } else {\n        order.push({ value, layout: layout2[axis] });\n      }\n      order.sort(compareMin);\n    },\n    updateOrder: (item, offset, velocity) => {\n      if (isReordering.current)\n        return;\n      const newOrder = checkReorder(order, item, offset, velocity);\n      if (order !== newOrder) {\n        isReordering.current = true;\n        onReorder(newOrder.map(getValue).filter((value) => values.indexOf(value) !== -1));\n      }\n    }\n  };\n  useEffect14(() => {\n    isReordering.current = false;\n  });\n  return jsx10(Component3, { ...props, ref: externalRef, ignoreStrict: true, children: jsx10(ReorderContext.Provider, { value: context, children }) });\n}\nvar ReorderGroup = /* @__PURE__ */ forwardRef2(ReorderGroupComponent);\nfunction getValue(item) {\n  return item.value;\n}\nfunction compareMin(a, b) {\n  return a.layout.min - b.layout.min;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Item.mjs\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef3, useContext as useContext16 } from \"react\";\nfunction useDefaultMotionValue(value, defaultValue = 0) {\n  return isMotionValue(value) ? value : useMotionValue(defaultValue);\n}\nfunction ReorderItemComponent({ children, style = {}, value, as = \"li\", onDrag, layout: layout2 = true, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const context = useContext16(ReorderContext);\n  const point2 = {\n    x: useDefaultMotionValue(style.x),\n    y: useDefaultMotionValue(style.y)\n  };\n  const zIndex = useTransform([point2.x, point2.y], ([latestX, latestY]) => latestX || latestY ? 1 : \"unset\");\n  invariant(Boolean(context), \"Reorder.Item must be a child of Reorder.Group\");\n  const { axis, registerItem, updateOrder } = context;\n  return jsx11(Component3, { drag: axis, ...props, dragSnapToOrigin: true, style: { ...style, x: point2.x, y: point2.y, zIndex }, layout: layout2, onDrag: (event, gesturePoint) => {\n    const { velocity } = gesturePoint;\n    velocity[axis] && updateOrder(value, point2[axis].get(), velocity[axis]);\n    onDrag && onDrag(event, gesturePoint);\n  }, onLayoutMeasure: (measured) => registerItem(value, measured), ref: externalRef, ignoreStrict: true, children });\n}\nvar ReorderItem = /* @__PURE__ */ forwardRef3(ReorderItemComponent);\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/stagger.mjs\nfunction getOriginIndex(from, total) {\n  if (from === \"first\") {\n    return 0;\n  } else {\n    const lastIndex = total - 1;\n    return from === \"last\" ? lastIndex : lastIndex / 2;\n  }\n}\nfunction stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {\n  return (i, total) => {\n    const fromIndex = typeof from === \"number\" ? from : getOriginIndex(from, total);\n    const distance2 = Math.abs(fromIndex - i);\n    let delay2 = duration * distance2;\n    if (ease2) {\n      const maxDelay = total * duration;\n      const easingFunction = easingDefinitionToFunction(ease2);\n      delay2 = easingFunction(delay2 / maxDelay) * maxDelay;\n    }\n    return startDelay + delay2;\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/index-legacy.mjs\nvar sync = frame;\nvar cancelSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = (process2) => cancelFrame(process2);\n  return acc;\n}, {});\n\n// ../../../node_modules/framer-motion/dist/es/easing/steps.mjs\nfunction steps(numSteps, direction = \"end\") {\n  return (progress2) => {\n    progress2 = direction === \"end\" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);\n    const expanded = progress2 * numSteps;\n    const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n    return clamp(0, 1, rounded / numSteps);\n  };\n}\n\nexport {\n  MotionGlobalConfig,\n  frame,\n  cancelFrame,\n  frameData,\n  frameSteps,\n  cubicBezier,\n  mirrorEasing,\n  reverseEasing,\n  backOut,\n  backIn,\n  backInOut,\n  anticipate,\n  circIn,\n  circOut,\n  circInOut,\n  warning,\n  invariant,\n  clamp,\n  px,\n  color,\n  complex,\n  findSpring,\n  spring,\n  inertia,\n  easeIn,\n  easeOut,\n  easeInOut,\n  pipe,\n  progress,\n  mix,\n  interpolate,\n  keyframes,\n  animateValue,\n  AcceleratedAnimation,\n  MotionValue,\n  motionValue,\n  optimizedAppearDataAttribute,\n  isMotionValue,\n  animateVisualElement,\n  animations,\n  addPointerInfo,\n  addPointerEvent,\n  distance,\n  distance2D,\n  isDragActive,\n  calcLength,\n  createBox,\n  PresenceContext,\n  usePresence,\n  useIsPresent,\n  LayoutGroupContext,\n  SwitchLayoutGroupContext,\n  addScaleCorrector,\n  FlatTree,\n  resolveMotionValue,\n  delay,\n  MotionConfigContext,\n  MotionContext,\n  isBrowser,\n  useIsomorphicLayoutEffect,\n  createRendererMotionComponent,\n  makeUseVisualState,\n  buildTransform,\n  isValidMotionProp,\n  filterProps,\n  visualElementStore,\n  VisualElement,\n  motion,\n  m,\n  AnimatePresence,\n  MotionConfig,\n  LazyMotion,\n  DeprecatedLayoutGroupContext,\n  useForceUpdate,\n  LayoutGroup,\n  domMin,\n  domAnimation,\n  domMax,\n  useMotionValue,\n  useMotionTemplate,\n  transform,\n  useTransform,\n  useSpring,\n  useMotionValueEvent,\n  useVelocity,\n  scrollInfo,\n  scroll,\n  useScroll,\n  useElementScroll,\n  useViewportScroll,\n  useAnimationFrame,\n  useTime,\n  useWillChange,\n  useReducedMotion,\n  useReducedMotionConfig,\n  animationControls,\n  useUnmountEffect,\n  wrap,\n  createScopedAnimate,\n  animate,\n  useAnimate,\n  animateMini,\n  useAnimateMini,\n  useAnimationControls,\n  useAnimation,\n  useCycle,\n  inView,\n  useInView,\n  DragControls,\n  useDragControls,\n  useDomEvent,\n  isMotionComponent,\n  unwrapMotionComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  disableInstantTransitions,\n  useResetProjection,\n  startOptimizedAppearAnimation,\n  useAnimatedState,\n  useInvertedScale,\n  AnimateSharedLayout,\n  namespace_exports,\n  stagger,\n  sync,\n  cancelSync,\n  steps\n};\n//# sourceMappingURL=chunk-4Z6NVKPU.mjs.map\n", "import*as a from\"react\";import*as i from\"scheduler\";var u=\"default\"in a?a.default:a;var o=\"default\"in i?i.default:i;var s={};var w=u,x=o;function p(a){for(var i=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,u=1;u<arguments.length;u++)i+=\"&args[]=\"+encodeURIComponent(arguments[u]);return\"Minified React error #\"+a+\"; visit \"+i+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var C=new Set,z={};function fa(a,i){ha(a,i);ha(a+\"Capture\",i)}function ha(a,i){z[a]=i;for(a=0;a<i.length;a++)C.add(i[a])}var N=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),_=Object.prototype.hasOwnProperty,j=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,P={},T={};function oa(a){if(_.call(T,a))return!0;if(_.call(P,a))return!1;if(j.test(a))return T[a]=!0;P[a]=!0;return!1}function pa(a,i,u,o){if(null!==u&&0===u.type)return!1;switch(typeof i){case\"function\":case\"symbol\":return!0;case\"boolean\":if(o)return!1;if(null!==u)return!u.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}function qa(a,i,u,o){if(null===i||\"undefined\"===typeof i||pa(a,i,u,o))return!0;if(o)return!1;if(null!==u)switch(u.type){case 3:return!i;case 4:return!1===i;case 5:return isNaN(i);case 6:return isNaN(i)||1>i}return!1}function v(a,i,u,o,s,w,x){this.acceptsBooleans=2===i||3===i||4===i;this.attributeName=o;this.attributeNamespace=s;this.mustUseProperty=u;this.propertyName=a;this.type=i;this.sanitizeURL=w;this.removeEmptyString=x}var M={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(a){M[a]=new v(a,0,!1,a,null,!1,!1)}));[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(a){var i=a[0];M[i]=new v(i,1,!1,a[1],null,!1,!1)}));[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(a){M[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)}));[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(a){M[a]=new v(a,2,!1,a,null,!1,!1)}));\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(a){M[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)}));[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(a){M[a]=new v(a,3,!0,a,null,!1,!1)}));[\"capture\",\"download\"].forEach((function(a){M[a]=new v(a,4,!1,a,null,!1,!1)}));[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(a){M[a]=new v(a,6,!1,a,null,!1,!1)}));[\"rowSpan\",\"start\"].forEach((function(a){M[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)}));var F=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,null,!1,!1)}));\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)}));[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)}));[\"tabIndex\",\"crossOrigin\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)}));M.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)}));function ta(a,i,u,o){var s=M.hasOwnProperty(i)?M[i]:null;(null!==s?0!==s.type:o||!(2<i.length)||\"o\"!==i[0]&&\"O\"!==i[0]||\"n\"!==i[1]&&\"N\"!==i[1])&&(qa(i,u,s,o)&&(u=null),o||null===s?oa(i)&&(null===u?a.removeAttribute(i):a.setAttribute(i,\"\"+u)):s.mustUseProperty?a[s.propertyName]=null===u?3!==s.type&&\"\":u:(i=s.attributeName,o=s.attributeNamespace,null===u?a.removeAttribute(i):(s=s.type,u=3===s||4===s&&!0===u?\"\":\"\"+u,o?a.setAttributeNS(o,i,u):a.setAttribute(i,u))))}var R=w.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,O=Symbol.for(\"react.element\"),I=Symbol.for(\"react.portal\"),U=Symbol.for(\"react.fragment\"),V=Symbol.for(\"react.strict_mode\"),A=Symbol.for(\"react.profiler\"),B=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),$=Symbol.for(\"react.forward_ref\"),K=Symbol.for(\"react.suspense\"),Y=Symbol.for(\"react.suspense_list\"),Z=Symbol.for(\"react.memo\"),X=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");var ee=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var le=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=le&&a[le]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var ae,ie=Object.assign;function Ma(a){if(void 0===ae)try{throw Error()}catch(a){var i=a.stack.trim().match(/\\n( *(at )?)/);ae=i&&i[1]||\"\"}return\"\\n\"+ae+a}var ce=!1;function Oa(a,i){if(!a||ce)return\"\";ce=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(i,[])}catch(a){var o=a}Reflect.construct(a,[],i)}else{try{i.call()}catch(a){o=a}a.call(i.prototype)}else{try{throw Error()}catch(a){o=a}a()}}catch(i){if(i&&o&&\"string\"===typeof i.stack){for(var s=i.stack.split(\"\\n\"),w=o.stack.split(\"\\n\"),x=s.length-1,C=w.length-1;1<=x&&0<=C&&s[x]!==w[C];)C--;for(;1<=x&&0<=C;x--,C--)if(s[x]!==w[C]){if(1!==x||1!==C)do{if(x--,C--,0>C||s[x]!==w[C]){var z=\"\\n\"+s[x].replace(\" at new \",\" at \");a.displayName&&z.includes(\"<anonymous>\")&&(z=z.replace(\"<anonymous>\",a.displayName));return z}}while(1<=x&&0<=C);break}}}finally{ce=!1,Error.prepareStackTrace=u}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}function Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}function Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case U:return\"Fragment\";case I:return\"Portal\";case A:return\"Profiler\";case V:return\"StrictMode\";case K:return\"Suspense\";case Y:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case H:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case $:var i=a.render;a=a.displayName;a||(a=i.displayName||i.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Z:return i=a.displayName||null,null!==i?i:Qa(a.type)||\"Memo\";case X:i=a._payload;a=a._init;try{return Qa(a(i))}catch(a){}}return null}function Ra(a){var i=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(i.displayName||\"Context\")+\".Consumer\";case 10:return(i._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=i.render,a=a.displayName||a.name||\"\",i.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return i;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(i);case 8:return i===V?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof i)return i.displayName||i.name||null;if(\"string\"===typeof i)return i}return null}function Sa(a){switch(typeof a){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return a;case\"object\":return a;default:return\"\"}}function Ta(a){var i=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===i||\"radio\"===i)}function Ua(a){var i=Ta(a)?\"checked\":\"value\",u=Object.getOwnPropertyDescriptor(a.constructor.prototype,i),o=\"\"+a[i];if(!a.hasOwnProperty(i)&&\"undefined\"!==typeof u&&\"function\"===typeof u.get&&\"function\"===typeof u.set){var s=u.get,w=u.set;Object.defineProperty(a,i,{configurable:!0,get:function(){return s.call(this)},set:function(a){o=\"\"+a;w.call(this,a)}});Object.defineProperty(a,i,{enumerable:u.enumerable});return{getValue:function(){return o},setValue:function(a){o=\"\"+a},stopTracking:function(){a._valueTracker=null;delete a[i]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var i=a._valueTracker;if(!i)return!0;var u=i.getValue();var o=\"\";a&&(o=Ta(a)?a.checked?\"true\":\"false\":a.value);a=o;return a!==u&&(i.setValue(a),!0)}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(i){return a.body}}function Ya(a,i){var u=i.checked;return ie({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=u?u:a._wrapperState.initialChecked})}function Za(a,i){var u=null==i.defaultValue?\"\":i.defaultValue,o=null!=i.checked?i.checked:i.defaultChecked;u=Sa(null!=i.value?i.value:u);a._wrapperState={initialChecked:o,initialValue:u,controlled:\"checkbox\"===i.type||\"radio\"===i.type?null!=i.checked:null!=i.value}}function ab(a,i){i=i.checked;null!=i&&ta(a,\"checked\",i,!1)}function bb(a,i){ab(a,i);var u=Sa(i.value),o=i.type;if(null!=u)\"number\"===o?(0===u&&\"\"===a.value||a.value!=u)&&(a.value=\"\"+u):a.value!==\"\"+u&&(a.value=\"\"+u);else if(\"submit\"===o||\"reset\"===o){a.removeAttribute(\"value\");return}i.hasOwnProperty(\"value\")?cb(a,i.type,u):i.hasOwnProperty(\"defaultValue\")&&cb(a,i.type,Sa(i.defaultValue));null==i.checked&&null!=i.defaultChecked&&(a.defaultChecked=!!i.defaultChecked)}function db(a,i,u){if(i.hasOwnProperty(\"value\")||i.hasOwnProperty(\"defaultValue\")){var o=i.type;if(!(\"submit\"!==o&&\"reset\"!==o||void 0!==i.value&&null!==i.value))return;i=\"\"+a._wrapperState.initialValue;u||i===a.value||(a.value=i);a.defaultValue=i}u=a.name;\"\"!==u&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==u&&(a.name=u)}function cb(a,i,u){\"number\"===i&&Xa(a.ownerDocument)===a||(null==u?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+u&&(a.defaultValue=\"\"+u))}var fe=Array.isArray;function fb(a,i,u,o){a=a.options;if(i){i={};for(var s=0;s<u.length;s++)i[\"$\"+u[s]]=!0;for(u=0;u<a.length;u++)s=i.hasOwnProperty(\"$\"+a[u].value),a[u].selected!==s&&(a[u].selected=s),s&&o&&(a[u].defaultSelected=!0)}else{u=\"\"+Sa(u);i=null;for(s=0;s<a.length;s++){if(a[s].value===u){a[s].selected=!0;o&&(a[s].defaultSelected=!0);return}null!==i||a[s].disabled||(i=a[s])}null!==i&&(i.selected=!0)}}function gb(a,i){if(null!=i.dangerouslySetInnerHTML)throw Error(p(91));return ie({},i,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,i){var u=i.value;if(null==u){u=i.children;i=i.defaultValue;if(null!=u){if(null!=i)throw Error(p(92));if(fe(u)){if(1<u.length)throw Error(p(93));u=u[0]}i=u}null==i&&(i=\"\");u=i}a._wrapperState={initialValue:Sa(u)}}function ib(a,i){var u=Sa(i.value),o=Sa(i.defaultValue);null!=u&&(u=\"\"+u,u!==a.value&&(a.value=u),null==i.defaultValue&&a.defaultValue!==u&&(a.defaultValue=u));null!=o&&(a.defaultValue=\"\"+o)}function jb(a){var i=a.textContent;i===a._wrapperState.initialValue&&\"\"!==i&&null!==i&&(a.value=i)}function kb(a){switch(a){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function lb(a,i){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(i):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===i?\"http://www.w3.org/1999/xhtml\":a}var de,pe=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(i,u,o,s){MSApp.execUnsafeLocalFunction((function(){return a(i,u,o,s)}))}:a}((function(a,i){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=i;else{de=de||document.createElement(\"div\");de.innerHTML=\"<svg>\"+i.valueOf().toString()+\"</svg>\";for(i=de.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;i.firstChild;)a.appendChild(i.firstChild)}}));function ob(a,i){if(i){var u=a.firstChild;if(u&&u===a.lastChild&&3===u.nodeType){u.nodeValue=i;return}}a.textContent=i}var be={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(be).forEach((function(a){ye.forEach((function(i){i=i+a.charAt(0).toUpperCase()+a.substring(1);be[i]=be[a]}))}));function rb(a,i,u){return null==i||\"boolean\"===typeof i||\"\"===i?\"\":u||\"number\"!==typeof i||0===i||be.hasOwnProperty(a)&&be[a]?(\"\"+i).trim():i+\"px\"}function sb(a,i){a=a.style;for(var u in i)if(i.hasOwnProperty(u)){var o=0===u.indexOf(\"--\"),s=rb(u,i[u],o);\"float\"===u&&(u=\"cssFloat\");o?a.setProperty(u,s):a[u]=s}}var we=ie({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ub(a,i){if(i){if(we[a]&&(null!=i.children||null!=i.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=i.dangerouslySetInnerHTML){if(null!=i.children)throw Error(p(60));if(\"object\"!==typeof i.dangerouslySetInnerHTML||!(\"__html\"in i.dangerouslySetInnerHTML))throw Error(p(61))}if(null!=i.style&&\"object\"!==typeof i.style)throw Error(p(62))}}function vb(a,i){if(-1===a.indexOf(\"-\"))return\"string\"===typeof i.is;switch(a){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var Se=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xe=null,ze=null,_e=null;function Bb(a){if(a=Cb(a)){if(\"function\"!==typeof xe)throw Error(p(280));var i=a.stateNode;i&&(i=Db(i),xe(a.stateNode,a.type,i))}}function Eb(a){ze?_e?_e.push(a):_e=[a]:ze=a}function Fb(){if(ze){var a=ze,i=_e;_e=ze=null;Bb(a);if(i)for(a=0;a<i.length;a++)Bb(i[a])}}function Gb(a,i){return a(i)}function Hb(){}var Pe=!1;function Jb(a,i,u){if(Pe)return a(i,u);Pe=!0;try{return Gb(a,i,u)}finally{(Pe=!1,null!==ze||null!==_e)&&(Hb(),Fb())}}function Kb(a,i){var u=a.stateNode;if(null===u)return null;var o=Db(u);if(null===o)return null;u=o[i];e:switch(i){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(o=!o.disabled)||(a=a.type,o=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!o;break e;default:a=!1}if(a)return null;if(u&&\"function\"!==typeof u)throw Error(p(231,i,typeof u));return u}var Te=!1;if(N)try{var Re={};Object.defineProperty(Re,\"passive\",{get:function(){Te=!0}});window.addEventListener(\"test\",Re,Re);window.removeEventListener(\"test\",Re,Re)}catch(a){Te=!1}function Nb(a,i,u,o,s,w,x,C,z){var N=Array.prototype.slice.call(arguments,3);try{i.apply(u,N)}catch(a){this.onError(a)}}var We=!1,Qe=null,He=!1,$e=null,Ye={onError:function(a){We=!0;Qe=a}};function Tb(a,i,u,o,s,w,x,C,z){We=!1;Qe=null;Nb.apply(Ye,arguments)}function Ub(a,i,u,o,s,w,x,C,z){Tb.apply(this,arguments);if(We){if(!We)throw Error(p(198));var N=Qe;We=!1;Qe=null;He||(He=!0,$e=N)}}function Vb(a){var i=a,u=a;if(a.alternate)for(;i.return;)i=i.return;else{a=i;do{i=a,0!==(4098&i.flags)&&(u=i.return),a=i.return}while(a)}return 3===i.tag?u:null}function Wb(a){if(13===a.tag){var i=a.memoizedState;null===i&&(a=a.alternate,null!==a&&(i=a.memoizedState));if(null!==i)return i.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188))}function Yb(a){var i=a.alternate;if(!i){i=Vb(a);if(null===i)throw Error(p(188));return i!==a?null:a}for(var u=a,o=i;;){var s=u.return;if(null===s)break;var w=s.alternate;if(null===w){o=s.return;if(null!==o){u=o;continue}break}if(s.child===w.child){for(w=s.child;w;){if(w===u)return Xb(s),a;if(w===o)return Xb(s),i;w=w.sibling}throw Error(p(188))}if(u.return!==o.return)u=s,o=w;else{for(var x=!1,C=s.child;C;){if(C===u){x=!0;u=s;o=w;break}if(C===o){x=!0;o=s;u=w;break}C=C.sibling}if(!x){for(C=w.child;C;){if(C===u){x=!0;u=w;o=s;break}if(C===o){x=!0;o=w;u=s;break}C=C.sibling}if(!x)throw Error(p(189))}}if(u.alternate!==o)throw Error(p(190))}if(3!==u.tag)throw Error(p(188));return u.stateNode.current===u?a:i}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var i=$b(a);if(null!==i)return i;a=a.sibling}return null}var qe=x.unstable_scheduleCallback,Xe=x.unstable_cancelCallback,en=x.unstable_shouldYield,nn=x.unstable_requestPaint,tn=x.unstable_now,rn=x.unstable_getCurrentPriorityLevel,ln=x.unstable_ImmediatePriority,an=x.unstable_UserBlockingPriority,un=x.unstable_NormalPriority,on=x.unstable_LowPriority,sn=x.unstable_IdlePriority,cn=null,fn=null;function mc(a){if(fn&&\"function\"===typeof fn.onCommitFiberRoot)try{fn.onCommitFiberRoot(cn,a,void 0,128===(128&a.current.flags))}catch(a){}}var dn=Math.clz32?Math.clz32:nc,pn=Math.log,hn=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pn(a)/hn|0)|0}var gn=64,mn=4194304;function tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&a;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&a;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return a}}function uc(a,i){var u=a.pendingLanes;if(0===u)return 0;var o=0,s=a.suspendedLanes,w=a.pingedLanes,x=268435455&u;if(0!==x){var C=x&~s;0!==C?o=tc(C):(w&=x,0!==w&&(o=tc(w)))}else x=u&~s,0!==x?o=tc(x):0!==w&&(o=tc(w));if(0===o)return 0;if(0!==i&&i!==o&&0===(i&s)&&(s=o&-o,w=i&-i,s>=w||16===s&&0!==(4194240&w)))return i;0!==(4&o)&&(o|=16&u);i=a.entangledLanes;if(0!==i)for(a=a.entanglements,i&=o;0<i;)u=31-dn(i),s=1<<u,o|=a[u],i&=~s;return o}function vc(a,i){switch(a){case 1:case 2:case 4:return i+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function wc(a,i){for(var u=a.suspendedLanes,o=a.pingedLanes,s=a.expirationTimes,w=a.pendingLanes;0<w;){var x=31-dn(w),C=1<<x,z=s[x];-1===z?0!==(C&u)&&0===(C&o)||(s[x]=vc(C,i)):z<=i&&(a.expiredLanes|=C);w&=~C}}function xc(a){a=-1073741825&a.pendingLanes;return 0!==a?a:1073741824&a?1073741824:0}function yc(){var a=gn;gn<<=1;0===(4194240&gn)&&(gn=64);return a}function zc(a){for(var i=[],u=0;31>u;u++)i.push(a);return i}function Ac(a,i,u){a.pendingLanes|=i;536870912!==i&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;i=31-dn(i);a[i]=u}function Bc(a,i){var u=a.pendingLanes&~i;a.pendingLanes=i;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=i;a.mutableReadLanes&=i;a.entangledLanes&=i;i=a.entanglements;var o=a.eventTimes;for(a=a.expirationTimes;0<u;){var s=31-dn(u),w=1<<s;i[s]=0;o[s]=-1;a[s]=-1;u&=~w}}function Cc(a,i){var u=a.entangledLanes|=i;for(a=a.entanglements;u;){var o=31-dn(u),s=1<<o;s&i|a[o]&i&&(a[o]|=i);u&=~s}}var vn=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(268435455&a)?16:536870912:4:1}var bn,yn,kn,wn,Sn,En=!1,xn=[],Cn=null,zn=null,Nn=null,Ln=new Map,_n=new Map,jn=[],Pn=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Sc(a,i){switch(a){case\"focusin\":case\"focusout\":Cn=null;break;case\"dragenter\":case\"dragleave\":zn=null;break;case\"mouseover\":case\"mouseout\":Nn=null;break;case\"pointerover\":case\"pointerout\":Ln.delete(i.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":_n.delete(i.pointerId)}}function Tc(a,i,u,o,s,w){if(null===a||a.nativeEvent!==w)return a={blockedOn:i,domEventName:u,eventSystemFlags:o,nativeEvent:w,targetContainers:[s]},null!==i&&(i=Cb(i),null!==i&&yn(i)),a;a.eventSystemFlags|=o;i=a.targetContainers;null!==s&&-1===i.indexOf(s)&&i.push(s);return a}function Uc(a,i,u,o,s){switch(i){case\"focusin\":return Cn=Tc(Cn,a,i,u,o,s),!0;case\"dragenter\":return zn=Tc(zn,a,i,u,o,s),!0;case\"mouseover\":return Nn=Tc(Nn,a,i,u,o,s),!0;case\"pointerover\":var w=s.pointerId;Ln.set(w,Tc(Ln.get(w)||null,a,i,u,o,s));return!0;case\"gotpointercapture\":return w=s.pointerId,_n.set(w,Tc(_n.get(w)||null,a,i,u,o,s)),!0}return!1}function Vc(a){var i=Wc(a.target);if(null!==i){var u=Vb(i);if(null!==u)if(i=u.tag,13===i){if(i=Wb(u),null!==i){a.blockedOn=i;Sn(a.priority,(function(){kn(u)}));return}}else if(3===i&&u.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===u.tag?u.stateNode.containerInfo:null;return}}a.blockedOn=null}function Xc(a){if(null!==a.blockedOn)return!1;for(var i=a.targetContainers;0<i.length;){var u=Yc(a.domEventName,a.eventSystemFlags,i[0],a.nativeEvent);if(null!==u)return i=Cb(u),null!==i&&yn(i),a.blockedOn=u,!1;u=a.nativeEvent;var o=new u.constructor(u.type,u);Se=o;u.target.dispatchEvent(o);Se=null;i.shift()}return!0}function Zc(a,i,u){Xc(a)&&u.delete(i)}function $c(){En=!1;null!==Cn&&Xc(Cn)&&(Cn=null);null!==zn&&Xc(zn)&&(zn=null);null!==Nn&&Xc(Nn)&&(Nn=null);Ln.forEach(Zc);_n.forEach(Zc)}function ad(a,i){a.blockedOn===i&&(a.blockedOn=null,En||(En=!0,x.unstable_scheduleCallback(x.unstable_NormalPriority,$c)))}function bd(a){function b(i){return ad(i,a)}if(0<xn.length){ad(xn[0],a);for(var i=1;i<xn.length;i++){var u=xn[i];u.blockedOn===a&&(u.blockedOn=null)}}null!==Cn&&ad(Cn,a);null!==zn&&ad(zn,a);null!==Nn&&ad(Nn,a);Ln.forEach(b);_n.forEach(b);for(i=0;i<jn.length;i++)u=jn[i],u.blockedOn===a&&(u.blockedOn=null);for(;0<jn.length&&(i=jn[0],null===i.blockedOn);)Vc(i),null===i.blockedOn&&jn.shift()}var Tn=R.ReactCurrentBatchConfig,Dn=!0;function ed(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=1,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function gd(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=4,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function fd(a,i,u,o){if(Dn){var s=Yc(a,i,u,o);if(null===s)hd(a,i,o,Mn,u),Sc(a,o);else if(Uc(s,a,i,u,o))o.stopPropagation();else if(Sc(a,o),4&i&&-1<Pn.indexOf(a)){for(;null!==s;){var w=Cb(s);null!==w&&bn(w);w=Yc(a,i,u,o);null===w&&hd(a,i,o,Mn,u);if(w===s)break;s=w}null!==s&&o.stopPropagation()}else hd(a,i,o,null,u)}}var Mn=null;function Yc(a,i,u,o){Mn=null;a=xb(o);a=Wc(a);if(null!==a)if(i=Vb(a),null===i)a=null;else if(u=i.tag,13===u){a=Wb(i);if(null!==a)return a;a=null}else if(3===u){if(i.stateNode.current.memoizedState.isDehydrated)return 3===i.tag?i.stateNode.containerInfo:null;a=null}else i!==a&&(a=null);Mn=a;return null}function jd(a){switch(a){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(rn()){case ln:return 1;case an:return 4;case un:case on:return 16;case sn:return 536870912;default:return 16}default:return 16}}var Fn=null,Rn=null,On=null;function nd(){if(On)return On;var a,i,u=Rn,o=u.length,s=\"value\"in Fn?Fn.value:Fn.textContent,w=s.length;for(a=0;a<o&&u[a]===s[a];a++);var x=o-a;for(i=1;i<=x&&u[o-i]===s[w-i];i++);return On=s.slice(a,1<i?1-i:void 0)}function od(a){var i=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===i&&(a=13)):a=i;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}function rd(a){function b(i,u,o,s,w){this._reactName=i;this._targetInst=o;this.type=u;this.nativeEvent=s;this.target=w;this.currentTarget=null;for(var x in a)a.hasOwnProperty(x)&&(i=a[x],this[x]=i?i(s):s[x]);this.isDefaultPrevented=(null!=s.defaultPrevented?s.defaultPrevented:!1===s.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}ie(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}var In,Un,Vn,Wn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qn=rd(Wn),An=ie({},Wn,{view:0,detail:0}),Bn=rd(An),Hn=ie({},An,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in a)return a.movementX;a!==Vn&&(Vn&&\"mousemove\"===a.type?(In=a.screenX-Vn.screenX,Un=a.screenY-Vn.screenY):Un=In=0,Vn=a);return In},movementY:function(a){return\"movementY\"in a?a.movementY:Un}}),$n=rd(Hn),Kn=ie({},Hn,{dataTransfer:0}),Yn=rd(Kn),Zn=ie({},An,{relatedTarget:0}),Gn=rd(Zn),qn=ie({},Wn,{animationName:0,elapsedTime:0,pseudoElement:0}),Xn=rd(qn),Jn=ie({},Wn,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),et=rd(Jn),nt=ie({},Wn,{data:0}),tt=rd(nt),rt={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},lt={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},at={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var i=this.nativeEvent;return i.getModifierState?i.getModifierState(a):!!(a=at[a])&&!!i[a]}function zd(){return Pd}var it=ie({},An,{key:function(a){if(a.key){var i=rt[a.key]||a.key;if(\"Unidentified\"!==i)return i}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?lt[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),ut=rd(it),ot=ie({},Hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),st=rd(ot),ct=ie({},An,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),ft=rd(ct),dt=ie({},Wn,{propertyName:0,elapsedTime:0,pseudoElement:0}),pt=rd(dt),ht=ie({},Hn,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),gt=rd(ht),mt=[9,13,27,32],vt=N&&\"CompositionEvent\"in window,bt=null;N&&\"documentMode\"in document&&(bt=document.documentMode);var yt=N&&\"TextEvent\"in window&&!bt,kt=N&&(!vt||bt&&8<bt&&11>=bt),wt=String.fromCharCode(32),St=!1;function ge(a,i){switch(a){case\"keyup\":return-1!==mt.indexOf(i.keyCode);case\"keydown\":return 229!==i.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Et=!1;function je(a,i){switch(a){case\"compositionend\":return he(i);case\"keypress\":if(32!==i.which)return null;St=!0;return wt;case\"textInput\":return a=i.data,a===wt&&St?null:a;default:return null}}function ke(a,i){if(Et)return\"compositionend\"===a||!vt&&ge(a,i)?(a=nd(),On=Rn=Fn=null,Et=!1,a):null;switch(a){case\"paste\":return null;case\"keypress\":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1<i.char.length)return i.char;if(i.which)return String.fromCharCode(i.which)}return null;case\"compositionend\":return kt&&\"ko\"!==i.locale?null:i.data;default:return null}}var xt={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===i?!!xt[a.type]:\"textarea\"===i}function ne(a,i,u,o){Eb(o);i=oe(i,\"onChange\");0<i.length&&(u=new Qn(\"onChange\",\"change\",null,u,o),a.push({event:u,listeners:i}))}var Ct=null,zt=null;function re(a){se(a,0)}function te(a){var i=ue(a);if(Wa(i))return a}function ve(a,i){if(\"change\"===a)return i}var Nt=!1;if(N){var Lt;if(N){var _t=\"oninput\"in document;if(!_t){var jt=document.createElement(\"div\");jt.setAttribute(\"oninput\",\"return;\");_t=\"function\"===typeof jt.oninput}Lt=_t}else Lt=!1;Nt=Lt&&(!document.documentMode||9<document.documentMode)}function Ae(){Ct&&(Ct.detachEvent(\"onpropertychange\",Be),zt=Ct=null)}function Be(a){if(\"value\"===a.propertyName&&te(zt)){var i=[];ne(i,zt,a,xb(a));Jb(re,i)}}function Ce(a,i,u){\"focusin\"===a?(Ae(),Ct=i,zt=u,Ct.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(zt)}function Ee(a,i){if(\"click\"===a)return te(i)}function Fe(a,i){if(\"input\"===a||\"change\"===a)return te(i)}function Ge(a,i){return a===i&&(0!==a||1/a===1/i)||a!==a&&i!==i}var Pt=\"function\"===typeof Object.is?Object.is:Ge;function Ie(a,i){if(Pt(a,i))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof i||null===i)return!1;var u=Object.keys(a),o=Object.keys(i);if(u.length!==o.length)return!1;for(o=0;o<u.length;o++){var s=u[o];if(!_.call(i,s)||!Pt(a[s],i[s]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Ke(a,i){var u=Je(a);a=0;for(var o;u;){if(3===u.nodeType){o=a+u.textContent.length;if(a<=i&&o>=i)return{node:u,offset:i-a};a=o}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=Je(u)}}function Le(a,i){return!(!a||!i)&&(a===i||(!a||3!==a.nodeType)&&(i&&3===i.nodeType?Le(a,i.parentNode):\"contains\"in a?a.contains(i):!!a.compareDocumentPosition&&!!(16&a.compareDocumentPosition(i))))}function Me(){for(var a=window,i=Xa();i instanceof a.HTMLIFrameElement;){try{var u=\"string\"===typeof i.contentWindow.location.href}catch(a){u=!1}if(!u)break;a=i.contentWindow;i=Xa(a.document)}return i}function Ne(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(\"input\"===i&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===i||\"true\"===a.contentEditable)}function Oe(a){var i=Me(),u=a.focusedElem,o=a.selectionRange;if(i!==u&&u&&u.ownerDocument&&Le(u.ownerDocument.documentElement,u)){if(null!==o&&Ne(u))if(i=o.start,a=o.end,void 0===a&&(a=i),\"selectionStart\"in u)u.selectionStart=i,u.selectionEnd=Math.min(a,u.value.length);else if(a=(i=u.ownerDocument||document)&&i.defaultView||window,a.getSelection){a=a.getSelection();var s=u.textContent.length,w=Math.min(o.start,s);o=void 0===o.end?w:Math.min(o.end,s);!a.extend&&w>o&&(s=o,o=w,w=s);s=Ke(u,w);var x=Ke(u,o);s&&x&&(1!==a.rangeCount||a.anchorNode!==s.node||a.anchorOffset!==s.offset||a.focusNode!==x.node||a.focusOffset!==x.offset)&&(i=i.createRange(),i.setStart(s.node,s.offset),a.removeAllRanges(),w>o?(a.addRange(i),a.extend(x.node,x.offset)):(i.setEnd(x.node,x.offset),a.addRange(i)))}i=[];for(a=u;a=a.parentNode;)1===a.nodeType&&i.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof u.focus&&u.focus();for(u=0;u<i.length;u++)a=i[u],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}var Tt=N&&\"documentMode\"in document&&11>=document.documentMode,Dt=null,Mt=null,Ft=null,Rt=!1;function Ue(a,i,u){var o=u.window===u?u.document:9===u.nodeType?u:u.ownerDocument;Rt||null==Dt||Dt!==Xa(o)||(o=Dt,\"selectionStart\"in o&&Ne(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Ft&&Ie(Ft,o)||(Ft=o,o=oe(Mt,\"onSelect\"),0<o.length&&(i=new Qn(\"onSelect\",\"select\",null,i,u),a.push({event:i,listeners:o}),i.target=Dt)))}function Ve(a,i){var u={};u[a.toLowerCase()]=i.toLowerCase();u[\"Webkit\"+a]=\"webkit\"+i;u[\"Moz\"+a]=\"moz\"+i;return u}var Ot={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},It={},Ut={};N&&(Ut=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ot.animationend.animation,delete Ot.animationiteration.animation,delete Ot.animationstart.animation),\"TransitionEvent\"in window||delete Ot.transitionend.transition);function Ze(a){if(It[a])return It[a];if(!Ot[a])return a;var i,u=Ot[a];for(i in u)if(u.hasOwnProperty(i)&&i in Ut)return It[a]=u[i];return a}var Vt=Ze(\"animationend\"),Wt=Ze(\"animationiteration\"),Qt=Ze(\"animationstart\"),At=Ze(\"transitionend\"),Bt=new Map,Ht=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function ff(a,i){Bt.set(a,i);fa(i,[a])}for(var $t=0;$t<Ht.length;$t++){var Kt=Ht[$t],Yt=Kt.toLowerCase(),Zt=Kt[0].toUpperCase()+Kt.slice(1);ff(Yt,\"on\"+Zt)}ff(Vt,\"onAnimationEnd\");ff(Wt,\"onAnimationIteration\");ff(Qt,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(At,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Gt=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),qt=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Gt));function nf(a,i,u){var o=a.type||\"unknown-event\";a.currentTarget=u;Ub(o,i,void 0,a);a.currentTarget=null}function se(a,i){i=0!==(4&i);for(var u=0;u<a.length;u++){var o=a[u],s=o.event;o=o.listeners;e:{var w=void 0;if(i)for(var x=o.length-1;0<=x;x--){var C=o[x],z=C.instance,N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}else for(x=0;x<o.length;x++){C=o[x];z=C.instance;N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}}}if(He)throw a=$e,He=!1,$e=null,a}function D(a,i){var u=i[fr];void 0===u&&(u=i[fr]=new Set);var o=a+\"__bubble\";u.has(o)||(pf(i,a,2,!1),u.add(o))}function qf(a,i,u){var o=0;i&&(o|=4);pf(u,a,o,i)}var Xt=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[Xt]){a[Xt]=!0;C.forEach((function(i){\"selectionchange\"!==i&&(qt.has(i)||qf(i,!1,a),qf(i,!0,a))}));var i=9===a.nodeType?a:a.ownerDocument;null===i||i[Xt]||(i[Xt]=!0,qf(\"selectionchange\",!1,i))}}function pf(a,i,u,o){switch(jd(i)){case 1:var s=ed;break;case 4:s=gd;break;default:s=fd}u=s.bind(null,i,u,a);s=void 0;!Te||\"touchstart\"!==i&&\"touchmove\"!==i&&\"wheel\"!==i||(s=!0);o?void 0!==s?a.addEventListener(i,u,{capture:!0,passive:s}):a.addEventListener(i,u,!0):void 0!==s?a.addEventListener(i,u,{passive:s}):a.addEventListener(i,u,!1)}function hd(a,i,u,o,s){var w=o;if(0===(1&i)&&0===(2&i)&&null!==o)e:for(;;){if(null===o)return;var x=o.tag;if(3===x||4===x){var C=o.stateNode.containerInfo;if(C===s||8===C.nodeType&&C.parentNode===s)break;if(4===x)for(x=o.return;null!==x;){var z=x.tag;if((3===z||4===z)&&(z=x.stateNode.containerInfo,z===s||8===z.nodeType&&z.parentNode===s))return;x=x.return}for(;null!==C;){x=Wc(C);if(null===x)return;z=x.tag;if(5===z||6===z){o=w=x;continue e}C=C.parentNode}}o=o.return}Jb((function(){var o=w,s=xb(u),x=[];e:{var C=Bt.get(a);if(void 0!==C){var z=Qn,N=a;switch(a){case\"keypress\":if(0===od(u))break e;case\"keydown\":case\"keyup\":z=ut;break;case\"focusin\":N=\"focus\";z=Gn;break;case\"focusout\":N=\"blur\";z=Gn;break;case\"beforeblur\":case\"afterblur\":z=Gn;break;case\"click\":if(2===u.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":z=$n;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":z=Yn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":z=ft;break;case Vt:case Wt:case Qt:z=Xn;break;case At:z=pt;break;case\"scroll\":z=Bn;break;case\"wheel\":z=gt;break;case\"copy\":case\"cut\":case\"paste\":z=et;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":z=st}var _=0!==(4&i),j=!_&&\"scroll\"===a,P=_?null!==C?C+\"Capture\":null:C;_=[];for(var T,M=o;null!==M;){T=M;var F=T.stateNode;5===T.tag&&null!==F&&(T=F,null!==P&&(F=Kb(M,P),null!=F&&_.push(tf(M,F,T))));if(j)break;M=M.return}0<_.length&&(C=new z(C,N,null,u,s),x.push({event:C,listeners:_}))}}if(0===(7&i)){C=\"mouseover\"===a||\"pointerover\"===a;z=\"mouseout\"===a||\"pointerout\"===a;if((!C||u===Se||!(N=u.relatedTarget||u.fromElement)||!Wc(N)&&!N[cr])&&(z||C)){C=s.window===s?s:(C=s.ownerDocument)?C.defaultView||C.parentWindow:window;z?(N=u.relatedTarget||u.toElement,z=o,N=N?Wc(N):null,null!==N&&(j=Vb(N),N!==j||5!==N.tag&&6!==N.tag))&&(N=null):(z=null,N=o);if(z!==N){_=$n;F=\"onMouseLeave\";P=\"onMouseEnter\";M=\"mouse\";\"pointerout\"!==a&&\"pointerover\"!==a||(_=st,F=\"onPointerLeave\",P=\"onPointerEnter\",M=\"pointer\");j=null==z?C:ue(z);T=null==N?C:ue(N);C=new _(F,M+\"leave\",z,u,s);C.target=j;C.relatedTarget=T;F=null;Wc(s)===o&&(_=new _(P,M+\"enter\",N,u,s),_.target=T,_.relatedTarget=j,F=_);j=F;if(z&&N)e:{_=z;P=N;M=0;for(T=_;T;T=vf(T))M++;T=0;for(F=P;F;F=vf(F))T++;for(;0<M-T;)_=vf(_),M--;for(;0<T-M;)P=vf(P),T--;for(;M--;){if(_===P||null!==P&&_===P.alternate)break e;_=vf(_);P=vf(P)}_=null}else _=null;null!==z&&wf(x,C,z,_,!1);null!==N&&null!==j&&wf(x,j,N,_,!0)}}C=o?ue(o):window;z=C.nodeName&&C.nodeName.toLowerCase();if(\"select\"===z||\"input\"===z&&\"file\"===C.type)var R=ve;else if(me(C))if(Nt)R=Fe;else{R=De;var O=Ce}else(z=C.nodeName)&&\"input\"===z.toLowerCase()&&(\"checkbox\"===C.type||\"radio\"===C.type)&&(R=Ee);if(R&&(R=R(a,o)))ne(x,R,u,s);else{O&&O(a,C,o);\"focusout\"===a&&(O=C._wrapperState)&&O.controlled&&\"number\"===C.type&&cb(C,\"number\",C.value)}O=o?ue(o):window;switch(a){case\"focusin\":(me(O)||\"true\"===O.contentEditable)&&(Dt=O,Mt=o,Ft=null);break;case\"focusout\":Ft=Mt=Dt=null;break;case\"mousedown\":Rt=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":Rt=!1;Ue(x,u,s);break;case\"selectionchange\":if(Tt)break;case\"keydown\":case\"keyup\":Ue(x,u,s)}var I;if(vt)e:{switch(a){case\"compositionstart\":var U=\"onCompositionStart\";break e;case\"compositionend\":U=\"onCompositionEnd\";break e;case\"compositionupdate\":U=\"onCompositionUpdate\";break e}U=void 0}else Et?ge(a,u)&&(U=\"onCompositionEnd\"):\"keydown\"===a&&229===u.keyCode&&(U=\"onCompositionStart\");U&&(kt&&\"ko\"!==u.locale&&(Et||\"onCompositionStart\"!==U?\"onCompositionEnd\"===U&&Et&&(I=nd()):(Fn=s,Rn=\"value\"in Fn?Fn.value:Fn.textContent,Et=!0)),O=oe(o,U),0<O.length&&(U=new tt(U,a,null,u,s),x.push({event:U,listeners:O}),I?U.data=I:(I=he(u),null!==I&&(U.data=I))));(I=yt?je(a,u):ke(a,u))&&(o=oe(o,\"onBeforeInput\"),0<o.length&&(s=new tt(\"onBeforeInput\",\"beforeinput\",null,u,s),x.push({event:s,listeners:o}),s.data=I))}se(x,i)}))}function tf(a,i,u){return{instance:a,listener:i,currentTarget:u}}function oe(a,i){for(var u=i+\"Capture\",o=[];null!==a;){var s=a,w=s.stateNode;5===s.tag&&null!==w&&(s=w,w=Kb(a,u),null!=w&&o.unshift(tf(a,w,s)),w=Kb(a,i),null!=w&&o.push(tf(a,w,s)));a=a.return}return o}function vf(a){if(null===a)return null;do{a=a.return}while(a&&5!==a.tag);return a||null}function wf(a,i,u,o,s){for(var w=i._reactName,x=[];null!==u&&u!==o;){var C=u,z=C.alternate,N=C.stateNode;if(null!==z&&z===o)break;5===C.tag&&null!==N&&(C=N,s?(z=Kb(u,w),null!=z&&x.unshift(tf(u,z,C))):s||(z=Kb(u,w),null!=z&&x.push(tf(u,z,C))));u=u.return}0!==x.length&&a.push({event:i,listeners:x})}var Jt=/\\r\\n?/g,er=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(Jt,\"\\n\").replace(er,\"\")}function Af(a,i,u){i=zf(i);if(zf(a)!==i&&u)throw Error(p(425))}function Bf(){}var nr=null,tr=null;function Ef(a,i){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof i.children||\"number\"===typeof i.children||\"object\"===typeof i.dangerouslySetInnerHTML&&null!==i.dangerouslySetInnerHTML&&null!=i.dangerouslySetInnerHTML.__html}var rr=\"function\"===typeof setTimeout?setTimeout:void 0,lr=\"function\"===typeof clearTimeout?clearTimeout:void 0,ar=\"function\"===typeof Promise?Promise:void 0,ir=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof ar?function(a){return ar.resolve(null).then(a).catch(If)}:rr;function If(a){setTimeout((function(){throw a}))}function Kf(a,i){var u=i,o=0;do{var s=u.nextSibling;a.removeChild(u);if(s&&8===s.nodeType)if(u=s.data,\"/$\"===u){if(0===o){a.removeChild(s);bd(i);return}o--}else\"$\"!==u&&\"$?\"!==u&&\"$!\"!==u||o++;u=s}while(u);bd(i)}function Lf(a){for(;null!=a;a=a.nextSibling){var i=a.nodeType;if(1===i||3===i)break;if(8===i){i=a.data;if(\"$\"===i||\"$!\"===i||\"$?\"===i)break;if(\"/$\"===i)return null}}return a}function Mf(a){a=a.previousSibling;for(var i=0;a;){if(8===a.nodeType){var u=a.data;if(\"$\"===u||\"$!\"===u||\"$?\"===u){if(0===i)return a;i--}else\"/$\"===u&&i++}a=a.previousSibling}return null}var ur=Math.random().toString(36).slice(2),or=\"__reactFiber$\"+ur,sr=\"__reactProps$\"+ur,cr=\"__reactContainer$\"+ur,fr=\"__reactEvents$\"+ur,dr=\"__reactListeners$\"+ur,pr=\"__reactHandles$\"+ur;function Wc(a){var i=a[or];if(i)return i;for(var u=a.parentNode;u;){if(i=u[cr]||u[or]){u=i.alternate;if(null!==i.child||null!==u&&null!==u.child)for(a=Mf(a);null!==a;){if(u=a[or])return u;a=Mf(a)}return i}a=u;u=a.parentNode}return null}function Cb(a){a=a[or]||a[cr];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33))}function Db(a){return a[sr]||null}var hr=[],gr=-1;function Uf(a){return{current:a}}function E(a){0>gr||(a.current=hr[gr],hr[gr]=null,gr--)}function G(a,i){gr++;hr[gr]=a.current;a.current=i}var mr={},vr=Uf(mr),br=Uf(!1),yr=mr;function Yf(a,i){var u=a.type.contextTypes;if(!u)return mr;var o=a.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===i)return o.__reactInternalMemoizedMaskedChildContext;var s,w={};for(s in u)w[s]=i[s];o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=i,a.__reactInternalMemoizedMaskedChildContext=w);return w}function Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(br);E(vr)}function ag(a,i,u){if(vr.current!==mr)throw Error(p(168));G(vr,i);G(br,u)}function bg(a,i,u){var o=a.stateNode;i=i.childContextTypes;if(\"function\"!==typeof o.getChildContext)return u;o=o.getChildContext();for(var s in o)if(!(s in i))throw Error(p(108,Ra(a)||\"Unknown\",s));return ie({},u,o)}function cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||mr;yr=vr.current;G(vr,a);G(br,br.current);return!0}function dg(a,i,u){var o=a.stateNode;if(!o)throw Error(p(169));u?(a=bg(a,i,yr),o.__reactInternalMemoizedMergedChildContext=a,E(br),E(vr),G(vr,a)):E(br);G(br,u)}var kr=null,wr=!1,Sr=!1;function hg(a){null===kr?kr=[a]:kr.push(a)}function ig(a){wr=!0;hg(a)}function jg(){if(!Sr&&null!==kr){Sr=!0;var a=0,i=vn;try{var u=kr;for(vn=1;a<u.length;a++){var o=u[a];do{o=o(!0)}while(null!==o)}kr=null;wr=!1}catch(i){throw null!==kr&&(kr=kr.slice(a+1)),qe(ln,jg),i}finally{vn=i,Sr=!1}}return null}var Er=[],xr=0,Cr=null,zr=0,Nr=[],Lr=0,_r=null,jr=1,Pr=\"\";function tg(a,i){Er[xr++]=zr;Er[xr++]=Cr;Cr=a;zr=i}function ug(a,i,u){Nr[Lr++]=jr;Nr[Lr++]=Pr;Nr[Lr++]=_r;_r=a;var o=jr;a=Pr;var s=32-dn(o)-1;o&=~(1<<s);u+=1;var w=32-dn(i)+s;if(30<w){var x=s-s%5;w=(o&(1<<x)-1).toString(32);o>>=x;s-=x;jr=1<<32-dn(i)+s|u<<s|o;Pr=w+a}else jr=1<<w|u<<s|o,Pr=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===Cr;)Cr=Er[--xr],Er[xr]=null,zr=Er[--xr],Er[xr]=null;for(;a===_r;)_r=Nr[--Lr],Nr[Lr]=null,Pr=Nr[--Lr],Nr[Lr]=null,jr=Nr[--Lr],Nr[Lr]=null}var Tr=null,Dr=null,Mr=!1,Fr=null;function Ag(a,i){var u=Bg(5,null,null,0);u.elementType=\"DELETED\";u.stateNode=i;u.return=a;i=a.deletions;null===i?(a.deletions=[u],a.flags|=16):i.push(u)}function Cg(a,i){switch(a.tag){case 5:var u=a.type;i=1!==i.nodeType||u.toLowerCase()!==i.nodeName.toLowerCase()?null:i;return null!==i&&(a.stateNode=i,Tr=a,Dr=Lf(i.firstChild),!0);case 6:return i=\"\"===a.pendingProps||3!==i.nodeType?null:i,null!==i&&(a.stateNode=i,Tr=a,Dr=null,!0);case 13:return i=8!==i.nodeType?null:i,null!==i&&(u=null!==_r?{id:jr,overflow:Pr}:null,a.memoizedState={dehydrated:i,treeContext:u,retryLane:1073741824},u=Bg(18,null,null,0),u.stateNode=i,u.return=a,a.child=u,Tr=a,Dr=null,!0);default:return!1}}function Dg(a){return 0!==(1&a.mode)&&0===(128&a.flags)}function Eg(a){if(Mr){var i=Dr;if(i){var u=i;if(!Cg(a,i)){if(Dg(a))throw Error(p(418));i=Lf(u.nextSibling);var o=Tr;i&&Cg(a,i)?Ag(o,u):(a.flags=-4097&a.flags|2,Mr=!1,Tr=a)}}else{if(Dg(a))throw Error(p(418));a.flags=-4097&a.flags|2;Mr=!1;Tr=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Tr=a}function Gg(a){if(a!==Tr)return!1;if(!Mr)return Fg(a),Mr=!0,!1;var i;(i=3!==a.tag)&&!(i=5!==a.tag)&&(i=a.type,i=\"head\"!==i&&\"body\"!==i&&!Ef(a.type,a.memoizedProps));if(i&&(i=Dr)){if(Dg(a))throw Hg(),Error(p(418));for(;i;)Ag(a,i),i=Lf(i.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));e:{a=a.nextSibling;for(i=0;a;){if(8===a.nodeType){var u=a.data;if(\"/$\"===u){if(0===i){Dr=Lf(a.nextSibling);break e}i--}else\"$\"!==u&&\"$!\"!==u&&\"$?\"!==u||i++}a=a.nextSibling}Dr=null}}else Dr=Tr?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=Dr;a;)a=Lf(a.nextSibling)}function Ig(){Dr=Tr=null;Mr=!1}function Jg(a){null===Fr?Fr=[a]:Fr.push(a)}var Rr=R.ReactCurrentBatchConfig;function Lg(a,i){if(a&&a.defaultProps){i=ie({},i);a=a.defaultProps;for(var u in a)void 0===i[u]&&(i[u]=a[u]);return i}return i}var Or=Uf(null),Ir=null,Ur=null,Vr=null;function Qg(){Vr=Ur=Ir=null}function Rg(a){var i=Or.current;E(Or);a._currentValue=i}function Sg(a,i,u){for(;null!==a;){var o=a.alternate;(a.childLanes&i)!==i?(a.childLanes|=i,null!==o&&(o.childLanes|=i)):null!==o&&(o.childLanes&i)!==i&&(o.childLanes|=i);if(a===u)break;a=a.return}}function Tg(a,i){Ir=a;Vr=Ur=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&i)&&(Tl=!0),a.firstContext=null)}function Vg(a){var i=a._currentValue;if(Vr!==a)if(a={context:a,memoizedValue:i,next:null},null===Ur){if(null===Ir)throw Error(p(308));Ur=a;Ir.dependencies={lanes:0,firstContext:a}}else Ur=Ur.next=a;return i}var Wr=null;function Xg(a){null===Wr?Wr=[a]:Wr.push(a)}function Yg(a,i,u,o){var s=i.interleaved;null===s?(u.next=u,Xg(i)):(u.next=s.next,s.next=u);i.interleaved=u;return Zg(a,o)}function Zg(a,i){a.lanes|=i;var u=a.alternate;null!==u&&(u.lanes|=i);u=a;for(a=a.return;null!==a;)a.childLanes|=i,u=a.alternate,null!==u&&(u.childLanes|=i),u=a,a=a.return;return 3===u.tag?u.stateNode:null}var Qr=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function bh(a,i){a=a.updateQueue;i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,i){return{eventTime:a,lane:i,tag:0,payload:null,callback:null,next:null}}function dh(a,i,u){var o=a.updateQueue;if(null===o)return null;o=o.shared;if(0!==(2&Zl)){var s=o.pending;null===s?i.next=i:(i.next=s.next,s.next=i);o.pending=i;return Zg(a,u)}s=o.interleaved;null===s?(i.next=i,Xg(o)):(i.next=s.next,s.next=i);o.interleaved=i;return Zg(a,u)}function eh(a,i,u){i=i.updateQueue;if(null!==i&&(i=i.shared,0!==(4194240&u))){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}function fh(a,i){var u=a.updateQueue,o=a.alternate;if(null===o||(o=o.updateQueue,u!==o)){a=u.lastBaseUpdate;null===a?u.firstBaseUpdate=i:a.next=i;u.lastBaseUpdate=i}else{var s=null,w=null;u=u.firstBaseUpdate;if(null!==u){do{var x={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};null===w?s=w=x:w=w.next=x;u=u.next}while(null!==u);null===w?s=w=i:w=w.next=i}else s=w=i;u={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:w,shared:o.shared,effects:o.effects};a.updateQueue=u}}function gh(a,i,u,o){var s=a.updateQueue;Qr=!1;var w=s.firstBaseUpdate,x=s.lastBaseUpdate,C=s.shared.pending;if(null!==C){s.shared.pending=null;var z=C,N=z.next;z.next=null;null===x?w=N:x.next=N;x=z;var _=a.alternate;null!==_&&(_=_.updateQueue,C=_.lastBaseUpdate,C!==x&&(null===C?_.firstBaseUpdate=N:C.next=N,_.lastBaseUpdate=z))}if(null!==w){var j=s.baseState;x=0;_=N=z=null;C=w;do{var P=C.lane,T=C.eventTime;if((o&P)===P){null!==_&&(_=_.next={eventTime:T,lane:0,tag:C.tag,payload:C.payload,callback:C.callback,next:null});e:{var M=a,F=C;P=i;T=u;switch(F.tag){case 1:M=F.payload;if(\"function\"===typeof M){j=M.call(T,j,P);break e}j=M;break e;case 3:M.flags=-65537&M.flags|128;case 0:M=F.payload;P=\"function\"===typeof M?M.call(T,j,P):M;if(null===P||void 0===P)break e;j=ie({},j,P);break e;case 2:Qr=!0}}null!==C.callback&&0!==C.lane&&(a.flags|=64,P=s.effects,null===P?s.effects=[C]:P.push(C))}else T={eventTime:T,lane:P,tag:C.tag,payload:C.payload,callback:C.callback,next:null},null===_?(N=_=T,z=j):_=_.next=T,x|=P;C=C.next;if(null===C){if(C=s.shared.pending,null===C)break;P=C,C=P.next,P.next=null,s.lastBaseUpdate=P,s.shared.pending=null}}while(1);null===_&&(z=j);s.baseState=z;s.firstBaseUpdate=N;s.lastBaseUpdate=_;i=s.shared.interleaved;if(null!==i){s=i;do{x|=s.lane,s=s.next}while(s!==i)}else null===w&&(s.shared.lanes=0);aa|=x;a.lanes=x;a.memoizedState=j}}function ih(a,i,u){a=i.effects;i.effects=null;if(null!==a)for(i=0;i<a.length;i++){var o=a[i],s=o.callback;if(null!==s){o.callback=null;o=u;if(\"function\"!==typeof s)throw Error(p(191,s));s.call(o)}}}var Ar=(new w.Component).refs;function kh(a,i,u,o){i=a.memoizedState;u=u(o,i);u=null===u||void 0===u?i:ie({},i,u);a.memoizedState=u;0===a.lanes&&(a.updateQueue.baseState=u)}var Br={isMounted:function(a){return!!(a=a._reactInternals)&&Vb(a)===a},enqueueSetState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueReplaceState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.tag=1;w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueForceUpdate:function(a,i){a=a._reactInternals;var u=L(),o=lh(a),s=ch(u,o);s.tag=2;void 0!==i&&null!==i&&(s.callback=i);i=dh(a,s,o);null!==i&&(mh(i,a,o,u),eh(i,a,o))}};function oh(a,i,u,o,s,w,x){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(o,w,x):!i.prototype||!i.prototype.isPureReactComponent||(!Ie(u,o)||!Ie(s,w))}function ph(a,i,u){var o=!1,s=mr;var w=i.contextType;\"object\"===typeof w&&null!==w?w=Vg(w):(s=Zf(i)?yr:vr.current,o=i.contextTypes,w=(o=null!==o&&void 0!==o)?Yf(a,s):mr);i=new i(u,w);a.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;i.updater=Br;a.stateNode=i;i._reactInternals=a;o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=s,a.__reactInternalMemoizedMaskedChildContext=w);return i}function qh(a,i,u,o){a=i.state;\"function\"===typeof i.componentWillReceiveProps&&i.componentWillReceiveProps(u,o);\"function\"===typeof i.UNSAFE_componentWillReceiveProps&&i.UNSAFE_componentWillReceiveProps(u,o);i.state!==a&&Br.enqueueReplaceState(i,i.state,null)}function rh(a,i,u,o){var s=a.stateNode;s.props=u;s.state=a.memoizedState;s.refs=Ar;ah(a);var w=i.contextType;\"object\"===typeof w&&null!==w?s.context=Vg(w):(w=Zf(i)?yr:vr.current,s.context=Yf(a,w));s.state=a.memoizedState;w=i.getDerivedStateFromProps;\"function\"===typeof w&&(kh(a,i,w,u),s.state=a.memoizedState);\"function\"===typeof i.getDerivedStateFromProps||\"function\"===typeof s.getSnapshotBeforeUpdate||\"function\"!==typeof s.UNSAFE_componentWillMount&&\"function\"!==typeof s.componentWillMount||(i=s.state,\"function\"===typeof s.componentWillMount&&s.componentWillMount(),\"function\"===typeof s.UNSAFE_componentWillMount&&s.UNSAFE_componentWillMount(),i!==s.state&&Br.enqueueReplaceState(s,s.state,null),gh(a,u,s,o),s.state=a.memoizedState);\"function\"===typeof s.componentDidMount&&(a.flags|=4194308)}function sh(a,i,u){a=u.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(u._owner){u=u._owner;if(u){if(1!==u.tag)throw Error(p(309));var o=u.stateNode}if(!o)throw Error(p(147,a));var s=o,w=\"\"+a;if(null!==i&&null!==i.ref&&\"function\"===typeof i.ref&&i.ref._stringRef===w)return i.ref;i=function(a){var i=s.refs;i===Ar&&(i=s.refs={});null===a?delete i[w]:i[w]=a};i._stringRef=w;return i}if(\"string\"!==typeof a)throw Error(p(284));if(!u._owner)throw Error(p(290,a))}return a}function th(a,i){a=Object.prototype.toString.call(i);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(i).join(\", \")+\"}\":a))}function uh(a){var i=a._init;return i(a._payload)}function vh(a){function b(i,u){if(a){var o=i.deletions;null===o?(i.deletions=[u],i.flags|=16):o.push(u)}}function c(i,u){if(!a)return null;for(;null!==u;)b(i,u),u=u.sibling;return null}function d(a,i){for(a=new Map;null!==i;)null!==i.key?a.set(i.key,i):a.set(i.index,i),i=i.sibling;return a}function e(a,i){a=wh(a,i);a.index=0;a.sibling=null;return a}function f(i,u,o){i.index=o;if(!a)return i.flags|=1048576,u;o=i.alternate;if(null!==o)return o=o.index,o<u?(i.flags|=2,u):o;i.flags|=2;return u}function g(i){a&&null===i.alternate&&(i.flags|=2);return i}function h(a,i,u,o){if(null===i||6!==i.tag)return i=xh(u,a.mode,o),i.return=a,i;i=e(i,u);i.return=a;return i}function k(a,i,u,o){var s=u.type;if(s===U)return m(a,i,u.props.children,o,u.key);if(null!==i&&(i.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===i.type))return o=e(i,u.props),o.ref=sh(a,i,u),o.return=a,o;o=yh(u.type,u.key,u.props,null,a.mode,o);o.ref=sh(a,i,u);o.return=a;return o}function l(a,i,u,o){if(null===i||4!==i.tag||i.stateNode.containerInfo!==u.containerInfo||i.stateNode.implementation!==u.implementation)return i=zh(u,a.mode,o),i.return=a,i;i=e(i,u.children||[]);i.return=a;return i}function m(a,i,u,o,s){if(null===i||7!==i.tag)return i=Ah(u,a.mode,o,s),i.return=a,i;i=e(i,u);i.return=a;return i}function q(a,i,u){if(\"string\"===typeof i&&\"\"!==i||\"number\"===typeof i)return i=xh(\"\"+i,a.mode,u),i.return=a,i;if(\"object\"===typeof i&&null!==i){switch(i.$$typeof){case O:return u=yh(i.type,i.key,i.props,null,a.mode,u),u.ref=sh(a,null,i),u.return=a,u;case I:return i=zh(i,a.mode,u),i.return=a,i;case X:var o=i._init;return q(a,o(i._payload),u)}if(fe(i)||Ka(i))return i=Ah(i,a.mode,u,null),i.return=a,i;th(a,i)}return null}function r(a,i,u,o){var s=null!==i?i.key:null;if(\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u)return null!==s?null:h(a,i,\"\"+u,o);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:return u.key===s?k(a,i,u,o):null;case I:return u.key===s?l(a,i,u,o):null;case X:return s=u._init,r(a,i,s(u._payload),o)}if(fe(u)||Ka(u))return null!==s?null:m(a,i,u,o,null);th(a,u)}return null}function y(a,i,u,o,s){if(\"string\"===typeof o&&\"\"!==o||\"number\"===typeof o)return a=a.get(u)||null,h(i,a,\"\"+o,s);if(\"object\"===typeof o&&null!==o){switch(o.$$typeof){case O:return a=a.get(null===o.key?u:o.key)||null,k(i,a,o,s);case I:return a=a.get(null===o.key?u:o.key)||null,l(i,a,o,s);case X:var w=o._init;return y(a,i,u,w(o._payload),s)}if(fe(o)||Ka(o))return a=a.get(u)||null,m(i,a,o,s,null);th(i,o)}return null}function n(i,u,o,s){for(var w=null,x=null,C=u,z=u=0,N=null;null!==C&&z<o.length;z++){C.index>z?(N=C,C=null):N=C.sibling;var _=r(i,C,o[z],s);if(null===_){null===C&&(C=N);break}a&&C&&null===_.alternate&&b(i,C);u=f(_,u,z);null===x?w=_:x.sibling=_;x=_;C=N}if(z===o.length)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;z<o.length;z++)C=q(i,o[z],s),null!==C&&(u=f(C,u,z),null===x?w=C:x.sibling=C,x=C);Mr&&tg(i,z);return w}for(C=d(i,C);z<o.length;z++)N=y(C,i,z,o[z],s),null!==N&&(a&&null!==N.alternate&&C.delete(null===N.key?z:N.key),u=f(N,u,z),null===x?w=N:x.sibling=N,x=N);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function t(i,u,o,s){var w=Ka(o);if(\"function\"!==typeof w)throw Error(p(150));o=w.call(o);if(null==o)throw Error(p(151));for(var x=w=null,C=u,z=u=0,N=null,_=o.next();null!==C&&!_.done;z++,_=o.next()){C.index>z?(N=C,C=null):N=C.sibling;var j=r(i,C,_.value,s);if(null===j){null===C&&(C=N);break}a&&C&&null===j.alternate&&b(i,C);u=f(j,u,z);null===x?w=j:x.sibling=j;x=j;C=N}if(_.done)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;!_.done;z++,_=o.next())_=q(i,_.value,s),null!==_&&(u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);Mr&&tg(i,z);return w}for(C=d(i,C);!_.done;z++,_=o.next())_=y(C,i,z,_.value,s),null!==_&&(a&&null!==_.alternate&&C.delete(null===_.key?z:_.key),u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function J(a,i,u,o){\"object\"===typeof u&&null!==u&&u.type===U&&null===u.key&&(u=u.props.children);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:e:{for(var s=u.key,w=i;null!==w;){if(w.key===s){s=u.type;if(s===U){if(7===w.tag){c(a,w.sibling);i=e(w,u.props.children);i.return=a;a=i;break e}}else if(w.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===w.type){c(a,w.sibling);i=e(w,u.props);i.ref=sh(a,w,u);i.return=a;a=i;break e}c(a,w);break}b(a,w);w=w.sibling}u.type===U?(i=Ah(u.props.children,a.mode,o,u.key),i.return=a,a=i):(o=yh(u.type,u.key,u.props,null,a.mode,o),o.ref=sh(a,i,u),o.return=a,a=o)}return g(a);case I:e:{for(w=u.key;null!==i;){if(i.key===w){if(4===i.tag&&i.stateNode.containerInfo===u.containerInfo&&i.stateNode.implementation===u.implementation){c(a,i.sibling);i=e(i,u.children||[]);i.return=a;a=i;break e}c(a,i);break}b(a,i);i=i.sibling}i=zh(u,a.mode,o);i.return=a;a=i}return g(a);case X:return w=u._init,J(a,i,w(u._payload),o)}if(fe(u))return n(a,i,u,o);if(Ka(u))return t(a,i,u,o);th(a,u)}return\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u?(u=\"\"+u,null!==i&&6===i.tag?(c(a,i.sibling),i=e(i,u),i.return=a,a=i):(c(a,i),i=xh(u,a.mode,o),i.return=a,a=i),g(a)):c(a,i)}return J}var Hr=vh(!0),$r=vh(!1),Kr={},Yr=Uf(Kr),Zr=Uf(Kr),Gr=Uf(Kr);function Hh(a){if(a===Kr)throw Error(p(174));return a}function Ih(a,i){G(Gr,i);G(Zr,a);G(Yr,Kr);a=i.nodeType;switch(a){case 9:case 11:i=(i=i.documentElement)?i.namespaceURI:lb(null,\"\");break;default:a=8===a?i.parentNode:i,i=a.namespaceURI||null,a=a.tagName,i=lb(i,a)}E(Yr);G(Yr,i)}function Jh(){E(Yr);E(Zr);E(Gr)}function Kh(a){Hh(Gr.current);var i=Hh(Yr.current);var u=lb(i,a.type);i!==u&&(G(Zr,a),G(Yr,u))}function Lh(a){Zr.current===a&&(E(Yr),E(Zr))}var qr=Uf(0);function Mh(a){for(var i=a;null!==i;){if(13===i.tag){var u=i.memoizedState;if(null!==u&&(u=u.dehydrated,null===u||\"$?\"===u.data||\"$!\"===u.data))return i}else if(19===i.tag&&void 0!==i.memoizedProps.revealOrder){if(0!==(128&i.flags))return i}else if(null!==i.child){i.child.return=i;i=i.child;continue}if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return null;i=i.return}i.sibling.return=i.return;i=i.sibling}return null}var Xr=[];function Oh(){for(var a=0;a<Xr.length;a++)Xr[a]._workInProgressVersionPrimary=null;Xr.length=0}var Jr=R.ReactCurrentDispatcher,tl=R.ReactCurrentBatchConfig,ll=0,ul=null,vl=null,yl=null,wl=!1,Sl=!1,El=0,xl=0;function Q(){throw Error(p(321))}function Wh(a,i){if(null===i)return!1;for(var u=0;u<i.length&&u<a.length;u++)if(!Pt(a[u],i[u]))return!1;return!0}function Xh(a,i,u,o,s,w){ll=w;ul=i;i.memoizedState=null;i.updateQueue=null;i.lanes=0;Jr.current=null===a||null===a.memoizedState?zl:Nl;a=u(o,s);if(Sl){w=0;do{Sl=!1;El=0;if(25<=w)throw Error(p(301));w+=1;yl=vl=null;i.updateQueue=null;Jr.current=Ll;a=u(o,s)}while(Sl)}Jr.current=Cl;i=null!==vl&&null!==vl.next;ll=0;yl=vl=ul=null;wl=!1;if(i)throw Error(p(300));return a}function bi(){var a=0!==El;El=0;return a}function ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a;return yl}function di(){if(null===vl){var a=ul.alternate;a=null!==a?a.memoizedState:null}else a=vl.next;var i=null===yl?ul.memoizedState:yl.next;if(null!==i)yl=i,vl=a;else{if(null===a)throw Error(p(310));vl=a;a={memoizedState:vl.memoizedState,baseState:vl.baseState,baseQueue:vl.baseQueue,queue:vl.queue,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a}return yl}function ei(a,i){return\"function\"===typeof i?i(a):i}function fi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=vl,s=o.baseQueue,w=u.pending;if(null!==w){if(null!==s){var x=s.next;s.next=w.next;w.next=x}o.baseQueue=s=w;u.pending=null}if(null!==s){w=s.next;o=o.baseState;var C=x=null,z=null,N=w;do{var _=N.lane;if((ll&_)===_)null!==z&&(z=z.next={lane:0,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null}),o=N.hasEagerState?N.eagerState:a(o,N.action);else{var j={lane:_,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null};null===z?(C=z=j,x=o):z=z.next=j;ul.lanes|=_;aa|=_}N=N.next}while(null!==N&&N!==w);null===z?x=o:z.next=C;Pt(o,i.memoizedState)||(Tl=!0);i.memoizedState=o;i.baseState=x;i.baseQueue=z;u.lastRenderedState=o}a=u.interleaved;if(null!==a){s=a;do{w=s.lane,ul.lanes|=w,aa|=w,s=s.next}while(s!==a)}else null===s&&(u.lanes=0);return[i.memoizedState,u.dispatch]}function gi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=u.dispatch,s=u.pending,w=i.memoizedState;if(null!==s){u.pending=null;var x=s=s.next;do{w=a(w,x.action),x=x.next}while(x!==s);Pt(w,i.memoizedState)||(Tl=!0);i.memoizedState=w;null===i.baseQueue&&(i.baseState=w);u.lastRenderedState=w}return[w,o]}function hi(){}function ii(a,i){var u=ul,o=di(),s=i(),w=!Pt(o.memoizedState,s);w&&(o.memoizedState=s,Tl=!0);o=o.queue;ji(ki.bind(null,u,o,a),[a]);if(o.getSnapshot!==i||w||null!==yl&&1&yl.memoizedState.tag){u.flags|=2048;li(9,mi.bind(null,u,o,s,i),void 0,null);if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(u,i,s)}return s}function ni(a,i,u){a.flags|=16384;a={getSnapshot:i,value:u};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.stores=[a]):(u=i.stores,null===u?i.stores=[a]:u.push(a))}function mi(a,i,u,o){i.value=u;i.getSnapshot=o;oi(i)&&pi(a)}function ki(a,i,u){return u((function(){oi(i)&&pi(a)}))}function oi(a){var i=a.getSnapshot;a=a.value;try{var u=i();return!Pt(a,u)}catch(a){return!0}}function pi(a){var i=Zg(a,1);null!==i&&mh(i,a,1,-1)}function qi(a){var i=ci();\"function\"===typeof a&&(a=a());i.memoizedState=i.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};i.queue=a;a=a.dispatch=ri.bind(null,ul,a);return[i.memoizedState,a]}function li(a,i,u,o){a={tag:a,create:i,destroy:u,deps:o,next:null};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.lastEffect=a.next=a):(u=i.lastEffect,null===u?i.lastEffect=a.next=a:(o=u.next,u.next=a,a.next=o,i.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,i,u,o){var s=ci();ul.flags|=a;s.memoizedState=li(1|i,u,void 0,void 0===o?null:o)}function ui(a,i,u,o){var s=di();o=void 0===o?null:o;var w=void 0;if(null!==vl){var x=vl.memoizedState;w=x.destroy;if(null!==o&&Wh(o,x.deps)){s.memoizedState=li(i,u,w,o);return}}ul.flags|=a;s.memoizedState=li(1|i,u,w,o)}function vi(a,i){return ti(8390656,8,a,i)}function ji(a,i){return ui(2048,8,a,i)}function wi(a,i){return ui(4,2,a,i)}function xi(a,i){return ui(4,4,a,i)}function yi(a,i){return\"function\"===typeof i?(a=a(),i(a),function(){i(null)}):null!==i&&void 0!==i?(a=a(),i.current=a,function(){i.current=null}):void 0}function zi(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ui(4,4,yi.bind(null,i,a),u)}function Ai(){}function Bi(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];u.memoizedState=[a,i];return a}function Ci(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];a=a();u.memoizedState=[a,i];return a}function Di(a,i,u){if(0===(21&ll))return a.baseState&&(a.baseState=!1,Tl=!0),a.memoizedState=u;Pt(u,i)||(u=yc(),ul.lanes|=u,aa|=u,a.baseState=!0);return i}function Ei(a,i){var u=vn;vn=0!==u&&4>u?u:4;a(!0);var o=tl.transition;tl.transition={};try{a(!1),i()}finally{vn=u,tl.transition=o}}function Fi(){return di().memoizedState}function Gi(a,i,u){var o=lh(a);u={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,u);else if(u=Yg(a,i,u,o),null!==u){var s=L();mh(u,a,o,s);Ji(u,i,o)}}function ri(a,i,u){var o=lh(a),s={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,s);else{var w=a.alternate;if(0===a.lanes&&(null===w||0===w.lanes)&&(w=i.lastRenderedReducer,null!==w))try{var x=i.lastRenderedState,C=w(x,u);s.hasEagerState=!0;s.eagerState=C;if(Pt(C,x)){var z=i.interleaved;null===z?(s.next=s,Xg(i)):(s.next=z.next,z.next=s);i.interleaved=s;return}}catch(a){}u=Yg(a,i,s,o);null!==u&&(s=L(),mh(u,a,o,s),Ji(u,i,o))}}function Hi(a){var i=a.alternate;return a===ul||null!==i&&i===ul}function Ii(a,i){Sl=wl=!0;var u=a.pending;null===u?i.next=i:(i.next=u.next,u.next=i);a.pending=i}function Ji(a,i,u){if(0!==(4194240&u)){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}var Cl={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},zl={readContext:Vg,useCallback:function(a,i){ci().memoizedState=[a,void 0===i?null:i];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ti(4194308,4,yi.bind(null,i,a),u)},useLayoutEffect:function(a,i){return ti(4194308,4,a,i)},useInsertionEffect:function(a,i){return ti(4,2,a,i)},useMemo:function(a,i){var u=ci();i=void 0===i?null:i;a=a();u.memoizedState=[a,i];return a},useReducer:function(a,i,u){var o=ci();i=void 0!==u?u(i):i;o.memoizedState=o.baseState=i;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:i};o.queue=a;a=a.dispatch=Gi.bind(null,ul,a);return[o.memoizedState,a]},useRef:function(a){var i=ci();a={current:a};return i.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),i=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[i,a]},useMutableSource:function(){},useSyncExternalStore:function(a,i,u){var o=ul,s=ci();if(Mr){if(void 0===u)throw Error(p(407));u=u()}else{u=i();if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(o,i,u)}s.memoizedState=u;var w={value:u,getSnapshot:i};s.queue=w;vi(ki.bind(null,o,w,a),[a]);o.flags|=2048;li(9,mi.bind(null,o,w,u,i),void 0,null);return u},useId:function(){var a=ci(),i=Gl.identifierPrefix;if(Mr){var u=Pr;var o=jr;u=(o&~(1<<32-dn(o)-1)).toString(32)+u;i=\":\"+i+\"R\"+u;u=El++;0<u&&(i+=\"H\"+u.toString(32));i+=\":\"}else u=xl++,i=\":\"+i+\"r\"+u.toString(32)+\":\";return a.memoizedState=i},unstable_isNewReconciler:!1},Nl={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return Di(i,vl.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},Ll={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return null===vl?i.memoizedState=a:Di(i,vl.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,i){try{var u=\"\",o=i;do{u+=Pa(o),o=o.return}while(o);var s=u}catch(a){s=\"\\nError generating stack: \"+a.message+\"\\n\"+a.stack}return{value:a,source:i,stack:s,digest:null}}function Li(a,i,u){return{value:a,source:null,stack:null!=u?u:null,digest:null!=i?i:null}}function Mi(a,i){try{console.error(i.value)}catch(a){setTimeout((function(){throw a}))}}var _l=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,i,u){u=ch(-1,u);u.tag=3;u.payload={element:null};var o=i.value;u.callback=function(){ba||(ba=!0,ya=o);Mi(a,i)};return u}function Ri(a,i,u){u=ch(-1,u);u.tag=3;var o=a.type.getDerivedStateFromError;if(\"function\"===typeof o){var s=i.value;u.payload=function(){return o(s)};u.callback=function(){Mi(a,i)}}var w=a.stateNode;null!==w&&\"function\"===typeof w.componentDidCatch&&(u.callback=function(){Mi(a,i);\"function\"!==typeof o&&(null===ka?ka=new Set([this]):ka.add(this));var u=i.stack;this.componentDidCatch(i.value,{componentStack:null!==u?u:\"\"})});return u}function Ti(a,i,u){var o=a.pingCache;if(null===o){o=a.pingCache=new _l;var s=new Set;o.set(i,s)}else s=o.get(i),void 0===s&&(s=new Set,o.set(i,s));s.has(u)||(s.add(u),a=Ui.bind(null,a,i,u),i.then(a,a))}function Vi(a){do{var i;(i=13===a.tag)&&(i=a.memoizedState,i=null===i||null!==i.dehydrated);if(i)return a;a=a.return}while(null!==a);return null}function Wi(a,i,u,o,s){if(0===(1&a.mode))return a===i?a.flags|=65536:(a.flags|=128,u.flags|=131072,u.flags&=-52805,1===u.tag&&(null===u.alternate?u.tag=17:(i=ch(-1,1),i.tag=2,dh(u,i,1))),u.lanes|=1),a;a.flags|=65536;a.lanes=s;return a}var Pl=R.ReactCurrentOwner,Tl=!1;function Yi(a,i,u,o){i.child=null===a?$r(i,null,u,o):Hr(i,a.child,u,o)}function Zi(a,i,u,o,s){u=u.render;var w=i.ref;Tg(i,s);o=Xh(a,i,u,o,w,s);u=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&u&&vg(i);i.flags|=1;Yi(a,i,o,s);return i.child}function aj(a,i,u,o,s){if(null===a){var w=u.type;if(\"function\"===typeof w&&!bj(w)&&void 0===w.defaultProps&&null===u.compare&&void 0===u.defaultProps)return i.tag=15,i.type=w,cj(a,i,w,o,s);a=yh(u.type,null,o,i,i.mode,s);a.ref=i.ref;a.return=i;return i.child=a}w=a.child;if(0===(a.lanes&s)){var x=w.memoizedProps;u=u.compare;u=null!==u?u:Ie;if(u(x,o)&&a.ref===i.ref)return $i(a,i,s)}i.flags|=1;a=wh(w,o);a.ref=i.ref;a.return=i;return i.child=a}function cj(a,i,u,o,s){if(null!==a){var w=a.memoizedProps;if(Ie(w,o)&&a.ref===i.ref){if(Tl=!1,i.pendingProps=o=w,0===(a.lanes&s))return i.lanes=a.lanes,$i(a,i,s);0!==(131072&a.flags)&&(Tl=!0)}}return dj(a,i,u,o,s)}function ej(a,i,u){var o=i.pendingProps,s=o.children,w=null!==a?a.memoizedState:null;if(\"hidden\"===o.mode)if(0===(1&i.mode))i.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(na,ea),ea|=u;else{if(0===(1073741824&u))return a=null!==w?w.baseLanes|u:u,i.lanes=i.childLanes=1073741824,i.memoizedState={baseLanes:a,cachePool:null,transitions:null},i.updateQueue=null,G(na,ea),ea|=a,null;i.memoizedState={baseLanes:0,cachePool:null,transitions:null};o=null!==w?w.baseLanes:u;G(na,ea);ea|=o}else null!==w?(o=w.baseLanes|u,i.memoizedState=null):o=u,G(na,ea),ea|=o;Yi(a,i,s,u);return i.child}function hj(a,i){var u=i.ref;(null===a&&null!==u||null!==a&&a.ref!==u)&&(i.flags|=512,i.flags|=2097152)}function dj(a,i,u,o,s){var w=Zf(u)?yr:vr.current;w=Yf(i,w);Tg(i,s);u=Xh(a,i,u,o,w,s);o=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&o&&vg(i);i.flags|=1;Yi(a,i,u,s);return i.child}function ij(a,i,u,o,s){if(Zf(u)){var w=!0;cg(i)}else w=!1;Tg(i,s);if(null===i.stateNode)jj(a,i),ph(i,u,o),rh(i,u,o,s),o=!0;else if(null===a){var x=i.stateNode,C=i.memoizedProps;x.props=C;var z=x.context,N=u.contextType;\"object\"===typeof N&&null!==N?N=Vg(N):(N=Zf(u)?yr:vr.current,N=Yf(i,N));var _=u.getDerivedStateFromProps,j=\"function\"===typeof _||\"function\"===typeof x.getSnapshotBeforeUpdate;j||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==o||z!==N)&&qh(i,x,o,N);Qr=!1;var P=i.memoizedState;x.state=P;gh(i,o,x,s);z=i.memoizedState;C!==o||P!==z||br.current||Qr?(\"function\"===typeof _&&(kh(i,u,_,o),z=i.memoizedState),(C=Qr||oh(i,u,C,o,P,z,N))?(j||\"function\"!==typeof x.UNSAFE_componentWillMount&&\"function\"!==typeof x.componentWillMount||(\"function\"===typeof x.componentWillMount&&x.componentWillMount(),\"function\"===typeof x.UNSAFE_componentWillMount&&x.UNSAFE_componentWillMount()),\"function\"===typeof x.componentDidMount&&(i.flags|=4194308)):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),i.memoizedProps=o,i.memoizedState=z),x.props=o,x.state=z,x.context=N,o=C):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),o=!1)}else{x=i.stateNode;bh(a,i);C=i.memoizedProps;N=i.type===i.elementType?C:Lg(i.type,C);x.props=N;j=i.pendingProps;P=x.context;z=u.contextType;\"object\"===typeof z&&null!==z?z=Vg(z):(z=Zf(u)?yr:vr.current,z=Yf(i,z));var T=u.getDerivedStateFromProps;(_=\"function\"===typeof T||\"function\"===typeof x.getSnapshotBeforeUpdate)||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==j||P!==z)&&qh(i,x,o,z);Qr=!1;P=i.memoizedState;x.state=P;gh(i,o,x,s);var M=i.memoizedState;C!==j||P!==M||br.current||Qr?(\"function\"===typeof T&&(kh(i,u,T,o),M=i.memoizedState),(N=Qr||oh(i,u,N,o,P,M,z)||!1)?(_||\"function\"!==typeof x.UNSAFE_componentWillUpdate&&\"function\"!==typeof x.componentWillUpdate||(\"function\"===typeof x.componentWillUpdate&&x.componentWillUpdate(o,M,z),\"function\"===typeof x.UNSAFE_componentWillUpdate&&x.UNSAFE_componentWillUpdate(o,M,z)),\"function\"===typeof x.componentDidUpdate&&(i.flags|=4),\"function\"===typeof x.getSnapshotBeforeUpdate&&(i.flags|=1024)):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),i.memoizedProps=o,i.memoizedState=M),x.props=o,x.state=M,x.context=z,o=N):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),o=!1)}return kj(a,i,u,o,w,s)}function kj(a,i,u,o,s,w){hj(a,i);var x=0!==(128&i.flags);if(!o&&!x)return s&&dg(i,u,!1),$i(a,i,w);o=i.stateNode;Pl.current=i;var C=x&&\"function\"!==typeof u.getDerivedStateFromError?null:o.render();i.flags|=1;null!==a&&x?(i.child=Hr(i,a.child,null,w),i.child=Hr(i,null,C,w)):Yi(a,i,C,w);i.memoizedState=o.state;s&&dg(i,u,!0);return i.child}function lj(a){var i=a.stateNode;i.pendingContext?ag(a,i.pendingContext,i.pendingContext!==i.context):i.context&&ag(a,i.context,!1);Ih(a,i.containerInfo)}function mj(a,i,u,o,s){Ig();Jg(s);i.flags|=256;Yi(a,i,u,o);return i.child}var Dl={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}function pj(a,i,u){var o,s=i.pendingProps,w=qr.current,x=!1,C=0!==(128&i.flags);(o=C)||(o=(null===a||null!==a.memoizedState)&&0!==(2&w));o?(x=!0,i.flags&=-129):null!==a&&null===a.memoizedState||(w|=1);G(qr,1&w);if(null===a){Eg(i);a=i.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(1&i.mode)?i.lanes=1:\"$!\"===a.data?i.lanes=8:i.lanes=1073741824,null;C=s.children;a=s.fallback;return x?(s=i.mode,x=i.child,C={mode:\"hidden\",children:C},0===(1&s)&&null!==x?(x.childLanes=0,x.pendingProps=C):x=qj(C,s,0,null),a=Ah(a,s,u,null),x.return=i,a.return=i,x.sibling=a,i.child=x,i.child.memoizedState=oj(u),i.memoizedState=Dl,a):rj(i,C)}w=a.memoizedState;if(null!==w&&(o=w.dehydrated,null!==o))return sj(a,i,C,s,o,w,u);if(x){x=s.fallback;C=i.mode;w=a.child;o=w.sibling;var z={mode:\"hidden\",children:s.children};0===(1&C)&&i.child!==w?(s=i.child,s.childLanes=0,s.pendingProps=z,i.deletions=null):(s=wh(w,z),s.subtreeFlags=14680064&w.subtreeFlags);null!==o?x=wh(o,x):(x=Ah(x,C,u,null),x.flags|=2);x.return=i;s.return=i;s.sibling=x;i.child=s;s=x;x=i.child;C=a.child.memoizedState;C=null===C?oj(u):{baseLanes:C.baseLanes|u,cachePool:null,transitions:C.transitions};x.memoizedState=C;x.childLanes=a.childLanes&~u;i.memoizedState=Dl;return s}x=a.child;a=x.sibling;s=wh(x,{mode:\"visible\",children:s.children});0===(1&i.mode)&&(s.lanes=u);s.return=i;s.sibling=null;null!==a&&(u=i.deletions,null===u?(i.deletions=[a],i.flags|=16):u.push(a));i.child=s;i.memoizedState=null;return s}function rj(a,i){i=qj({mode:\"visible\",children:i},a.mode,0,null);i.return=a;return a.child=i}function tj(a,i,u,o){null!==o&&Jg(o);Hr(i,a.child,null,u);a=rj(i,i.pendingProps.children);a.flags|=2;i.memoizedState=null;return a}function sj(a,i,u,o,s,w,x){if(u){if(256&i.flags)return i.flags&=-257,o=Li(Error(p(422))),tj(a,i,x,o);if(null!==i.memoizedState)return i.child=a.child,i.flags|=128,null;w=o.fallback;s=i.mode;o=qj({mode:\"visible\",children:o.children},s,0,null);w=Ah(w,s,x,null);w.flags|=2;o.return=i;w.return=i;o.sibling=w;i.child=o;0!==(1&i.mode)&&Hr(i,a.child,null,x);i.child.memoizedState=oj(x);i.memoizedState=Dl;return w}if(0===(1&i.mode))return tj(a,i,x,null);if(\"$!\"===s.data){o=s.nextSibling&&s.nextSibling.dataset;if(o)var C=o.dgst;o=C;w=Error(p(419));o=Li(w,o,void 0);return tj(a,i,x,o)}C=0!==(x&a.childLanes);if(Tl||C){o=Gl;if(null!==o){switch(x&-x){case 4:s=2;break;case 16:s=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:s=32;break;case 536870912:s=268435456;break;default:s=0}s=0!==(s&(o.suspendedLanes|x))?0:s;0!==s&&s!==w.retryLane&&(w.retryLane=s,Zg(a,s),mh(o,a,s,-1))}uj();o=Li(Error(p(421)));return tj(a,i,x,o)}if(\"$?\"===s.data)return i.flags|=128,i.child=a.child,i=vj.bind(null,a),s._reactRetry=i,null;a=w.treeContext;Dr=Lf(s.nextSibling);Tr=i;Mr=!0;Fr=null;null!==a&&(Nr[Lr++]=jr,Nr[Lr++]=Pr,Nr[Lr++]=_r,jr=a.id,Pr=a.overflow,_r=i);i=rj(i,o.children);i.flags|=4096;return i}function wj(a,i,u){a.lanes|=i;var o=a.alternate;null!==o&&(o.lanes|=i);Sg(a.return,i,u)}function xj(a,i,u,o,s){var w=a.memoizedState;null===w?a.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:o,tail:u,tailMode:s}:(w.isBackwards=i,w.rendering=null,w.renderingStartTime=0,w.last=o,w.tail=u,w.tailMode=s)}function yj(a,i,u){var o=i.pendingProps,s=o.revealOrder,w=o.tail;Yi(a,i,o.children,u);o=qr.current;if(0!==(2&o))o=1&o|2,i.flags|=128;else{if(null!==a&&0!==(128&a.flags))e:for(a=i.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,u,i);else if(19===a.tag)wj(a,u,i);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===i)break e;for(;null===a.sibling;){if(null===a.return||a.return===i)break e;a=a.return}a.sibling.return=a.return;a=a.sibling}o&=1}G(qr,o);if(0===(1&i.mode))i.memoizedState=null;else switch(s){case\"forwards\":u=i.child;for(s=null;null!==u;)a=u.alternate,null!==a&&null===Mh(a)&&(s=u),u=u.sibling;u=s;null===u?(s=i.child,i.child=null):(s=u.sibling,u.sibling=null);xj(i,!1,s,u,w);break;case\"backwards\":u=null;s=i.child;for(i.child=null;null!==s;){a=s.alternate;if(null!==a&&null===Mh(a)){i.child=s;break}a=s.sibling;s.sibling=u;u=s;s=a}xj(i,!0,u,null,w);break;case\"together\":xj(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function jj(a,i){0===(1&i.mode)&&null!==a&&(a.alternate=null,i.alternate=null,i.flags|=2)}function $i(a,i,u){null!==a&&(i.dependencies=a.dependencies);aa|=i.lanes;if(0===(u&i.childLanes))return null;if(null!==a&&i.child!==a.child)throw Error(p(153));if(null!==i.child){a=i.child;u=wh(a,a.pendingProps);i.child=u;for(u.return=i;null!==a.sibling;)a=a.sibling,u=u.sibling=wh(a,a.pendingProps),u.return=i;u.sibling=null}return i.child}function zj(a,i,u){switch(i.tag){case 3:lj(i);Ig();break;case 5:Kh(i);break;case 1:Zf(i.type)&&cg(i);break;case 4:Ih(i,i.stateNode.containerInfo);break;case 10:var o=i.type._context,s=i.memoizedProps.value;G(Or,o._currentValue);o._currentValue=s;break;case 13:o=i.memoizedState;if(null!==o){if(null!==o.dehydrated)return G(qr,1&qr.current),i.flags|=128,null;if(0!==(u&i.child.childLanes))return pj(a,i,u);G(qr,1&qr.current);a=$i(a,i,u);return null!==a?a.sibling:null}G(qr,1&qr.current);break;case 19:o=0!==(u&i.childLanes);if(0!==(128&a.flags)){if(o)return yj(a,i,u);i.flags|=128}s=i.memoizedState;null!==s&&(s.rendering=null,s.tail=null,s.lastEffect=null);G(qr,qr.current);if(o)break;return null;case 22:case 23:return i.lanes=0,ej(a,i,u)}return $i(a,i,u)}var Ml,Fl,Rl,Ol;Ml=function(a,i){for(var u=i.child;null!==u;){if(5===u.tag||6===u.tag)a.appendChild(u.stateNode);else if(4!==u.tag&&null!==u.child){u.child.return=u;u=u.child;continue}if(u===i)break;for(;null===u.sibling;){if(null===u.return||u.return===i)return;u=u.return}u.sibling.return=u.return;u=u.sibling}};Fl=function(){};Rl=function(a,i,u,o){var s=a.memoizedProps;if(s!==o){a=i.stateNode;Hh(Yr.current);var w=null;switch(u){case\"input\":s=Ya(a,s);o=Ya(a,o);w=[];break;case\"select\":s=ie({},s,{value:void 0});o=ie({},o,{value:void 0});w=[];break;case\"textarea\":s=gb(a,s);o=gb(a,o);w=[];break;default:\"function\"!==typeof s.onClick&&\"function\"===typeof o.onClick&&(a.onclick=Bf)}ub(u,o);var x;u=null;for(_ in s)if(!o.hasOwnProperty(_)&&s.hasOwnProperty(_)&&null!=s[_])if(\"style\"===_){var C=s[_];for(x in C)C.hasOwnProperty(x)&&(u||(u={}),u[x]=\"\")}else\"dangerouslySetInnerHTML\"!==_&&\"children\"!==_&&\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&\"autoFocus\"!==_&&(z.hasOwnProperty(_)?w||(w=[]):(w=w||[]).push(_,null));for(_ in o){var N=o[_];C=null!=s?s[_]:void 0;if(o.hasOwnProperty(_)&&N!==C&&(null!=N||null!=C))if(\"style\"===_)if(C){for(x in C)!C.hasOwnProperty(x)||N&&N.hasOwnProperty(x)||(u||(u={}),u[x]=\"\");for(x in N)N.hasOwnProperty(x)&&C[x]!==N[x]&&(u||(u={}),u[x]=N[x])}else u||(w||(w=[]),w.push(_,u)),u=N;else\"dangerouslySetInnerHTML\"===_?(N=N?N.__html:void 0,C=C?C.__html:void 0,null!=N&&C!==N&&(w=w||[]).push(_,N)):\"children\"===_?\"string\"!==typeof N&&\"number\"!==typeof N||(w=w||[]).push(_,\"\"+N):\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&(z.hasOwnProperty(_)?(null!=N&&\"onScroll\"===_&&D(\"scroll\",a),w||C===N||(w=[])):(w=w||[]).push(_,N))}u&&(w=w||[]).push(\"style\",u);var _=w;(i.updateQueue=_)&&(i.flags|=4)}};Ol=function(a,i,u,o){u!==o&&(i.flags|=4)};function Ej(a,i){if(!Mr)switch(a.tailMode){case\"hidden\":i=a.tail;for(var u=null;null!==i;)null!==i.alternate&&(u=i),i=i.sibling;null===u?a.tail=null:u.sibling=null;break;case\"collapsed\":u=a.tail;for(var o=null;null!==u;)null!==u.alternate&&(o=u),u=u.sibling;null===o?i||null===a.tail?a.tail=null:a.tail.sibling=null:o.sibling=null}}function S(a){var i=null!==a.alternate&&a.alternate.child===a.child,u=0,o=0;if(i)for(var s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=14680064&s.subtreeFlags,o|=14680064&s.flags,s.return=a,s=s.sibling;else for(s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=s.subtreeFlags,o|=s.flags,s.return=a,s=s.sibling;a.subtreeFlags|=o;a.childLanes=u;return i}function Fj(a,i,u){var o=i.pendingProps;wg(i);switch(i.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(i),null;case 1:return Zf(i.type)&&$f(),S(i),null;case 3:o=i.stateNode;Jh();E(br);E(vr);Oh();o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null);null!==a&&null!==a.child||(Gg(i)?i.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(256&i.flags)||(i.flags|=1024,null!==Fr&&(Gj(Fr),Fr=null)));Fl(a,i);S(i);return null;case 5:Lh(i);var s=Hh(Gr.current);u=i.type;if(null!==a&&null!=i.stateNode)Rl(a,i,u,o,s),a.ref!==i.ref&&(i.flags|=512,i.flags|=2097152);else{if(!o){if(null===i.stateNode)throw Error(p(166));S(i);return null}a=Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.type;var w=i.memoizedProps;o[or]=i;o[sr]=w;a=0!==(1&i.mode);switch(u){case\"dialog\":D(\"cancel\",o);D(\"close\",o);break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",o);break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],o);break;case\"source\":D(\"error\",o);break;case\"img\":case\"image\":case\"link\":D(\"error\",o);D(\"load\",o);break;case\"details\":D(\"toggle\",o);break;case\"input\":Za(o,w);D(\"invalid\",o);break;case\"select\":o._wrapperState={wasMultiple:!!w.multiple};D(\"invalid\",o);break;case\"textarea\":hb(o,w),D(\"invalid\",o)}ub(u,w);s=null;for(var x in w)if(w.hasOwnProperty(x)){var C=w[x];\"children\"===x?\"string\"===typeof C?o.textContent!==C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",C]):\"number\"===typeof C&&o.textContent!==\"\"+C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",\"\"+C]):z.hasOwnProperty(x)&&null!=C&&\"onScroll\"===x&&D(\"scroll\",o)}switch(u){case\"input\":Va(o);db(o,w,!0);break;case\"textarea\":Va(o);jb(o);break;case\"select\":case\"option\":break;default:\"function\"===typeof w.onClick&&(o.onclick=Bf)}o=s;i.updateQueue=o;null!==o&&(i.flags|=4)}else{x=9===s.nodeType?s:s.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(u));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===u?(a=x.createElement(\"div\"),a.innerHTML=\"<script><\\/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof o.is?a=x.createElement(u,{is:o.is}):(a=x.createElement(u),\"select\"===u&&(x=a,o.multiple?x.multiple=!0:o.size&&(x.size=o.size))):a=x.createElementNS(a,u);a[or]=i;a[sr]=o;Ml(a,i,!1,!1);i.stateNode=a;e:{x=vb(u,o);switch(u){case\"dialog\":D(\"cancel\",a);D(\"close\",a);s=o;break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",a);s=o;break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],a);s=o;break;case\"source\":D(\"error\",a);s=o;break;case\"img\":case\"image\":case\"link\":D(\"error\",a);D(\"load\",a);s=o;break;case\"details\":D(\"toggle\",a);s=o;break;case\"input\":Za(a,o);s=Ya(a,o);D(\"invalid\",a);break;case\"option\":s=o;break;case\"select\":a._wrapperState={wasMultiple:!!o.multiple};s=ie({},o,{value:void 0});D(\"invalid\",a);break;case\"textarea\":hb(a,o);s=gb(a,o);D(\"invalid\",a);break;default:s=o}ub(u,s);C=s;for(w in C)if(C.hasOwnProperty(w)){var N=C[w];\"style\"===w?sb(a,N):\"dangerouslySetInnerHTML\"===w?(N=N?N.__html:void 0,null!=N&&pe(a,N)):\"children\"===w?\"string\"===typeof N?(\"textarea\"!==u||\"\"!==N)&&ob(a,N):\"number\"===typeof N&&ob(a,\"\"+N):\"suppressContentEditableWarning\"!==w&&\"suppressHydrationWarning\"!==w&&\"autoFocus\"!==w&&(z.hasOwnProperty(w)?null!=N&&\"onScroll\"===w&&D(\"scroll\",a):null!=N&&ta(a,w,N,x))}switch(u){case\"input\":Va(a);db(a,o,!1);break;case\"textarea\":Va(a);jb(a);break;case\"option\":null!=o.value&&a.setAttribute(\"value\",\"\"+Sa(o.value));break;case\"select\":a.multiple=!!o.multiple;w=o.value;null!=w?fb(a,!!o.multiple,w,!1):null!=o.defaultValue&&fb(a,!!o.multiple,o.defaultValue,!0);break;default:\"function\"===typeof s.onClick&&(a.onclick=Bf)}switch(u){case\"button\":case\"input\":case\"select\":case\"textarea\":o=!!o.autoFocus;break e;case\"img\":o=!0;break e;default:o=!1}}o&&(i.flags|=4)}null!==i.ref&&(i.flags|=512,i.flags|=2097152)}S(i);return null;case 6:if(a&&null!=i.stateNode)Ol(a,i,a.memoizedProps,o);else{if(\"string\"!==typeof o&&null===i.stateNode)throw Error(p(166));u=Hh(Gr.current);Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.memoizedProps;o[or]=i;if((w=o.nodeValue!==u)&&(a=Tr,null!==a))switch(a.tag){case 3:Af(o.nodeValue,u,0!==(1&a.mode));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(o.nodeValue,u,0!==(1&a.mode))}w&&(i.flags|=4)}else o=(9===u.nodeType?u:u.ownerDocument).createTextNode(o),o[or]=i,i.stateNode=o}S(i);return null;case 13:E(qr);o=i.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(Mr&&null!==Dr&&0!==(1&i.mode)&&0===(128&i.flags))Hg(),Ig(),i.flags|=98560,w=!1;else if(w=Gg(i),null!==o&&null!==o.dehydrated){if(null===a){if(!w)throw Error(p(318));w=i.memoizedState;w=null!==w?w.dehydrated:null;if(!w)throw Error(p(317));w[or]=i}else Ig(),0===(128&i.flags)&&(i.memoizedState=null),i.flags|=4;S(i);w=!1}else null!==Fr&&(Gj(Fr),Fr=null),w=!0;if(!w)return 65536&i.flags?i:null}if(0!==(128&i.flags))return i.lanes=u,i;o=null!==o;o!==(null!==a&&null!==a.memoizedState)&&o&&(i.child.flags|=8192,0!==(1&i.mode)&&(null===a||0!==(1&qr.current)?0===ra&&(ra=3):uj()));null!==i.updateQueue&&(i.flags|=4);S(i);return null;case 4:return Jh(),Fl(a,i),null===a&&sf(i.stateNode.containerInfo),S(i),null;case 10:return Rg(i.type._context),S(i),null;case 17:return Zf(i.type)&&$f(),S(i),null;case 19:E(qr);w=i.memoizedState;if(null===w)return S(i),null;o=0!==(128&i.flags);x=w.rendering;if(null===x)if(o)Ej(w,!1);else{if(0!==ra||null!==a&&0!==(128&a.flags))for(a=i.child;null!==a;){x=Mh(a);if(null!==x){i.flags|=128;Ej(w,!1);o=x.updateQueue;null!==o&&(i.updateQueue=o,i.flags|=4);i.subtreeFlags=0;o=u;for(u=i.child;null!==u;)w=u,a=o,w.flags&=14680066,x=w.alternate,null===x?(w.childLanes=0,w.lanes=a,w.child=null,w.subtreeFlags=0,w.memoizedProps=null,w.memoizedState=null,w.updateQueue=null,w.dependencies=null,w.stateNode=null):(w.childLanes=x.childLanes,w.lanes=x.lanes,w.child=x.child,w.subtreeFlags=0,w.deletions=null,w.memoizedProps=x.memoizedProps,w.memoizedState=x.memoizedState,w.updateQueue=x.updateQueue,w.type=x.type,a=x.dependencies,w.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),u=u.sibling;G(qr,1&qr.current|2);return i.child}a=a.sibling}null!==w.tail&&tn()>ma&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304)}else{if(!o)if(a=Mh(x),null!==a){if(i.flags|=128,o=!0,u=a.updateQueue,null!==u&&(i.updateQueue=u,i.flags|=4),Ej(w,!0),null===w.tail&&\"hidden\"===w.tailMode&&!x.alternate&&!Mr)return S(i),null}else 2*tn()-w.renderingStartTime>ma&&1073741824!==u&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304);w.isBackwards?(x.sibling=i.child,i.child=x):(u=w.last,null!==u?u.sibling=x:i.child=x,w.last=x)}if(null!==w.tail)return i=w.tail,w.rendering=i,w.tail=i.sibling,w.renderingStartTime=tn(),i.sibling=null,u=qr.current,G(qr,o?1&u|2:1&u),i;S(i);return null;case 22:case 23:return Ij(),o=null!==i.memoizedState,null!==a&&null!==a.memoizedState!==o&&(i.flags|=8192),o&&0!==(1&i.mode)?0!==(1073741824&ea)&&(S(i),6&i.subtreeFlags&&(i.flags|=8192)):S(i),null;case 24:return null;case 25:return null}throw Error(p(156,i.tag))}function Jj(a,i){wg(i);switch(i.tag){case 1:return Zf(i.type)&&$f(),a=i.flags,65536&a?(i.flags=-65537&a|128,i):null;case 3:return Jh(),E(br),E(vr),Oh(),a=i.flags,0!==(65536&a)&&0===(128&a)?(i.flags=-65537&a|128,i):null;case 5:return Lh(i),null;case 13:E(qr);a=i.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===i.alternate)throw Error(p(340));Ig()}a=i.flags;return 65536&a?(i.flags=-65537&a|128,i):null;case 19:return E(qr),null;case 4:return Jh(),null;case 10:return Rg(i.type._context),null;case 22:case 23:return Ij(),null;case 24:return null;default:return null}}var Il=!1,Ul=!1,Vl=\"function\"===typeof WeakSet?WeakSet:Set,Wl=null;function Mj(a,i){var u=a.ref;if(null!==u)if(\"function\"===typeof u)try{u(null)}catch(u){W(a,i,u)}else u.current=null}function Nj(a,i,u){try{u()}catch(u){W(a,i,u)}}var Ql=!1;function Pj(a,i){nr=Dn;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var u={start:a.selectionStart,end:a.selectionEnd};else e:{u=(u=a.ownerDocument)&&u.defaultView||window;var o=u.getSelection&&u.getSelection();if(o&&0!==o.rangeCount){u=o.anchorNode;var s=o.anchorOffset,w=o.focusNode;o=o.focusOffset;try{u.nodeType,w.nodeType}catch(a){u=null;break e}var x=0,C=-1,z=-1,N=0,_=0,j=a,P=null;n:for(;;){for(var T;;){j!==u||0!==s&&3!==j.nodeType||(C=x+s);j!==w||0!==o&&3!==j.nodeType||(z=x+o);3===j.nodeType&&(x+=j.nodeValue.length);if(null===(T=j.firstChild))break;P=j;j=T}for(;;){if(j===a)break n;P===u&&++N===s&&(C=x);P===w&&++_===o&&(z=x);if(null!==(T=j.nextSibling))break;j=P;P=j.parentNode}j=T}u=-1===C||-1===z?null:{start:C,end:z}}else u=null}u=u||{start:0,end:0}}else u=null;tr={focusedElem:a,selectionRange:u};Dn=!1;for(Wl=i;null!==Wl;)if(i=Wl,a=i.child,0!==(1028&i.subtreeFlags)&&null!==a)a.return=i,Wl=a;else for(;null!==Wl;){i=Wl;try{var M=i.alternate;if(0!==(1024&i.flags))switch(i.tag){case 0:case 11:case 15:break;case 1:if(null!==M){var F=M.memoizedProps,R=M.memoizedState,O=i.stateNode,I=O.getSnapshotBeforeUpdate(i.elementType===i.type?F:Lg(i.type,F),R);O.__reactInternalSnapshotBeforeUpdate=I}break;case 3:var U=i.stateNode.containerInfo;1===U.nodeType?U.textContent=\"\":9===U.nodeType&&U.documentElement&&U.removeChild(U.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163))}}catch(a){W(i,i.return,a)}a=i.sibling;if(null!==a){a.return=i.return;Wl=a;break}Wl=i.return}M=Ql;Ql=!1;return M}function Qj(a,i,u){var o=i.updateQueue;o=null!==o?o.lastEffect:null;if(null!==o){var s=o=o.next;do{if((s.tag&a)===a){var w=s.destroy;s.destroy=void 0;void 0!==w&&Nj(i,u,w)}s=s.next}while(s!==o)}}function Rj(a,i){i=i.updateQueue;i=null!==i?i.lastEffect:null;if(null!==i){var u=i=i.next;do{if((u.tag&a)===a){var o=u.create;u.destroy=o()}u=u.next}while(u!==i)}}function Sj(a){var i=a.ref;if(null!==i){var u=a.stateNode;switch(a.tag){case 5:a=u;break;default:a=u}\"function\"===typeof i?i(a):i.current=a}}function Tj(a){var i=a.alternate;null!==i&&(a.alternate=null,Tj(i));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(i=a.stateNode,null!==i&&(delete i[or],delete i[sr],delete i[fr],delete i[dr],delete i[pr]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}function Vj(a){e:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(2&a.flags)continue e;if(null===a.child||4===a.tag)continue e;a.child.return=a,a=a.child}if(!(2&a.flags))return a.stateNode}}function Wj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?8===u.nodeType?u.parentNode.insertBefore(a,i):u.insertBefore(a,i):(8===u.nodeType?(i=u.parentNode,i.insertBefore(a,u)):(i=u,i.appendChild(a)),u=u._reactRootContainer,null!==u&&void 0!==u||null!==i.onclick||(i.onclick=Bf));else if(4!==o&&(a=a.child,null!==a))for(Wj(a,i,u),a=a.sibling;null!==a;)Wj(a,i,u),a=a.sibling}function Xj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?u.insertBefore(a,i):u.appendChild(a);else if(4!==o&&(a=a.child,null!==a))for(Xj(a,i,u),a=a.sibling;null!==a;)Xj(a,i,u),a=a.sibling}var Al=null,Bl=!1;function Zj(a,i,u){for(u=u.child;null!==u;)ak(a,i,u),u=u.sibling}function ak(a,i,u){if(fn&&\"function\"===typeof fn.onCommitFiberUnmount)try{fn.onCommitFiberUnmount(cn,u)}catch(a){}switch(u.tag){case 5:Ul||Mj(u,i);case 6:var o=Al,s=Bl;Al=null;Zj(a,i,u);Al=o;Bl=s;null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?a.parentNode.removeChild(u):a.removeChild(u)):Al.removeChild(u.stateNode));break;case 18:null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?Kf(a.parentNode,u):1===a.nodeType&&Kf(a,u),bd(a)):Kf(Al,u.stateNode));break;case 4:o=Al;s=Bl;Al=u.stateNode.containerInfo;Bl=!0;Zj(a,i,u);Al=o;Bl=s;break;case 0:case 11:case 14:case 15:if(!Ul&&(o=u.updateQueue,null!==o&&(o=o.lastEffect,null!==o))){s=o=o.next;do{var w=s,x=w.destroy;w=w.tag;void 0!==x&&(0!==(2&w)||0!==(4&w))&&Nj(u,i,x);s=s.next}while(s!==o)}Zj(a,i,u);break;case 1:if(!Ul&&(Mj(u,i),o=u.stateNode,\"function\"===typeof o.componentWillUnmount))try{o.props=u.memoizedProps,o.state=u.memoizedState,o.componentWillUnmount()}catch(a){W(u,i,a)}Zj(a,i,u);break;case 21:Zj(a,i,u);break;case 22:1&u.mode?(Ul=(o=Ul)||null!==u.memoizedState,Zj(a,i,u),Ul=o):Zj(a,i,u);break;default:Zj(a,i,u)}}function bk(a){var i=a.updateQueue;if(null!==i){a.updateQueue=null;var u=a.stateNode;null===u&&(u=a.stateNode=new Vl);i.forEach((function(i){var o=ck.bind(null,a,i);u.has(i)||(u.add(i),i.then(o,o))}))}}function dk(a,i){var u=i.deletions;if(null!==u)for(var o=0;o<u.length;o++){var s=u[o];try{var w=a,x=i,C=x;e:for(;null!==C;){switch(C.tag){case 5:Al=C.stateNode;Bl=!1;break e;case 3:Al=C.stateNode.containerInfo;Bl=!0;break e;case 4:Al=C.stateNode.containerInfo;Bl=!0;break e}C=C.return}if(null===Al)throw Error(p(160));ak(w,x,s);Al=null;Bl=!1;var z=s.alternate;null!==z&&(z.return=null);s.return=null}catch(a){W(s,i,a)}}if(12854&i.subtreeFlags)for(i=i.child;null!==i;)ek(i,a),i=i.sibling}function ek(a,i){var u=a.alternate,o=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(i,a);fk(a);if(4&o){try{Qj(3,a,a.return),Rj(3,a)}catch(i){W(a,a.return,i)}try{Qj(5,a,a.return)}catch(i){W(a,a.return,i)}}break;case 1:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);break;case 5:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);if(32&a.flags){var s=a.stateNode;try{ob(s,\"\")}catch(i){W(a,a.return,i)}}if(4&o&&(s=a.stateNode,null!=s)){var w=a.memoizedProps,x=null!==u?u.memoizedProps:w,C=a.type,z=a.updateQueue;a.updateQueue=null;if(null!==z)try{\"input\"===C&&\"radio\"===w.type&&null!=w.name&&ab(s,w);vb(C,x);var N=vb(C,w);for(x=0;x<z.length;x+=2){var _=z[x],j=z[x+1];\"style\"===_?sb(s,j):\"dangerouslySetInnerHTML\"===_?pe(s,j):\"children\"===_?ob(s,j):ta(s,_,j,N)}switch(C){case\"input\":bb(s,w);break;case\"textarea\":ib(s,w);break;case\"select\":var P=s._wrapperState.wasMultiple;s._wrapperState.wasMultiple=!!w.multiple;var T=w.value;null!=T?fb(s,!!w.multiple,T,!1):P!==!!w.multiple&&(null!=w.defaultValue?fb(s,!!w.multiple,w.defaultValue,!0):fb(s,!!w.multiple,w.multiple?[]:\"\",!1))}s[sr]=w}catch(i){W(a,a.return,i)}}break;case 6:dk(i,a);fk(a);if(4&o){if(null===a.stateNode)throw Error(p(162));s=a.stateNode;w=a.memoizedProps;try{s.nodeValue=w}catch(i){W(a,a.return,i)}}break;case 3:dk(i,a);fk(a);if(4&o&&null!==u&&u.memoizedState.isDehydrated)try{bd(i.containerInfo)}catch(i){W(a,a.return,i)}break;case 4:dk(i,a);fk(a);break;case 13:dk(i,a);fk(a);s=a.child;8192&s.flags&&(w=null!==s.memoizedState,s.stateNode.isHidden=w,!w||null!==s.alternate&&null!==s.alternate.memoizedState||(ga=tn()));4&o&&bk(a);break;case 22:_=null!==u&&null!==u.memoizedState;1&a.mode?(Ul=(N=Ul)||_,dk(i,a),Ul=N):dk(i,a);fk(a);if(8192&o){N=null!==a.memoizedState;if((a.stateNode.isHidden=N)&&!_&&0!==(1&a.mode))for(Wl=a,_=a.child;null!==_;){for(j=Wl=_;null!==Wl;){P=Wl;T=P.child;switch(P.tag){case 0:case 11:case 14:case 15:Qj(4,P,P.return);break;case 1:Mj(P,P.return);var M=P.stateNode;if(\"function\"===typeof M.componentWillUnmount){o=P;u=P.return;try{i=o,M.props=i.memoizedProps,M.state=i.memoizedState,M.componentWillUnmount()}catch(a){W(o,u,a)}}break;case 5:Mj(P,P.return);break;case 22:if(null!==P.memoizedState){hk(j);continue}}null!==T?(T.return=P,Wl=T):hk(j)}_=_.sibling}e:for(_=null,j=a;;){if(5===j.tag){if(null===_){_=j;try{s=j.stateNode,N?(w=s.style,\"function\"===typeof w.setProperty?w.setProperty(\"display\",\"none\",\"important\"):w.display=\"none\"):(C=j.stateNode,z=j.memoizedProps.style,x=void 0!==z&&null!==z&&z.hasOwnProperty(\"display\")?z.display:null,C.style.display=rb(\"display\",x))}catch(i){W(a,a.return,i)}}}else if(6===j.tag){if(null===_)try{j.stateNode.nodeValue=N?\"\":j.memoizedProps}catch(i){W(a,a.return,i)}}else if((22!==j.tag&&23!==j.tag||null===j.memoizedState||j===a)&&null!==j.child){j.child.return=j;j=j.child;continue}if(j===a)break e;for(;null===j.sibling;){if(null===j.return||j.return===a)break e;_===j&&(_=null);j=j.return}_===j&&(_=null);j.sibling.return=j.return;j=j.sibling}}break;case 19:dk(i,a);fk(a);4&o&&bk(a);break;case 21:break;default:dk(i,a),fk(a)}}function fk(a){var i=a.flags;if(2&i){try{e:{for(var u=a.return;null!==u;){if(Uj(u)){var o=u;break e}u=u.return}throw Error(p(160))}switch(o.tag){case 5:var s=o.stateNode;32&o.flags&&(ob(s,\"\"),o.flags&=-33);var w=Vj(a);Xj(a,w,s);break;case 3:case 4:var x=o.stateNode.containerInfo,C=Vj(a);Wj(a,C,x);break;default:throw Error(p(161))}}catch(i){W(a,a.return,i)}a.flags&=-3}4096&i&&(a.flags&=-4097)}function ik(a,i,u){Wl=a;jk(a,i,u)}function jk(a,i,u){for(var o=0!==(1&a.mode);null!==Wl;){var s=Wl,w=s.child;if(22===s.tag&&o){var x=null!==s.memoizedState||Il;if(!x){var C=s.alternate,z=null!==C&&null!==C.memoizedState||Ul;C=Il;var N=Ul;Il=x;if((Ul=z)&&!N)for(Wl=s;null!==Wl;)x=Wl,z=x.child,22===x.tag&&null!==x.memoizedState?kk(s):null!==z?(z.return=x,Wl=z):kk(s);for(;null!==w;)Wl=w,jk(w,i,u),w=w.sibling;Wl=s;Il=C;Ul=N}lk(a,i,u)}else 0!==(8772&s.subtreeFlags)&&null!==w?(w.return=s,Wl=w):lk(a,i,u)}}function lk(a){for(;null!==Wl;){var i=Wl;if(0!==(8772&i.flags)){var u=i.alternate;try{if(0!==(8772&i.flags))switch(i.tag){case 0:case 11:case 15:Ul||Rj(5,i);break;case 1:var o=i.stateNode;if(4&i.flags&&!Ul)if(null===u)o.componentDidMount();else{var s=i.elementType===i.type?u.memoizedProps:Lg(i.type,u.memoizedProps);o.componentDidUpdate(s,u.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var w=i.updateQueue;null!==w&&ih(i,w,o);break;case 3:var x=i.updateQueue;if(null!==x){u=null;if(null!==i.child)switch(i.child.tag){case 5:u=i.child.stateNode;break;case 1:u=i.child.stateNode}ih(i,x,u)}break;case 5:var C=i.stateNode;if(null===u&&4&i.flags){u=C;var z=i.memoizedProps;switch(i.type){case\"button\":case\"input\":case\"select\":case\"textarea\":z.autoFocus&&u.focus();break;case\"img\":z.src&&(u.src=z.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===i.memoizedState){var N=i.alternate;if(null!==N){var _=N.memoizedState;if(null!==_){var j=_.dehydrated;null!==j&&bd(j)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(p(163))}Ul||512&i.flags&&Sj(i)}catch(a){W(i,i.return,a)}}if(i===a){Wl=null;break}u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function hk(a){for(;null!==Wl;){var i=Wl;if(i===a){Wl=null;break}var u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function kk(a){for(;null!==Wl;){var i=Wl;try{switch(i.tag){case 0:case 11:case 15:var u=i.return;try{Rj(4,i)}catch(a){W(i,u,a)}break;case 1:var o=i.stateNode;if(\"function\"===typeof o.componentDidMount){var s=i.return;try{o.componentDidMount()}catch(a){W(i,s,a)}}var w=i.return;try{Sj(i)}catch(a){W(i,w,a)}break;case 5:var x=i.return;try{Sj(i)}catch(a){W(i,x,a)}}}catch(a){W(i,i.return,a)}if(i===a){Wl=null;break}var C=i.sibling;if(null!==C){C.return=i.return;Wl=C;break}Wl=i.return}}var Hl=Math.ceil,$l=R.ReactCurrentDispatcher,Kl=R.ReactCurrentOwner,Yl=R.ReactCurrentBatchConfig,Zl=0,Gl=null,Xl=null,Jl=0,ea=0,na=Uf(0),ra=0,la=null,aa=0,ia=0,ua=0,ca=null,da=null,ga=0,ma=Infinity,va=null,ba=!1,ya=null,ka=null,wa=!1,Ea=null,xa=0,Ca=0,za=null,Na=-1,La=0;function L(){return 0!==(6&Zl)?tn():-1!==Na?Na:Na=tn()}function lh(a){if(0===(1&a.mode))return 1;if(0!==(2&Zl)&&0!==Jl)return Jl&-Jl;if(null!==Rr.transition)return 0===La&&(La=yc()),La;a=vn;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,i,u,o){if(50<Ca)throw Ca=0,za=null,Error(p(185));Ac(a,u,o);0!==(2&Zl)&&a===Gl||(a===Gl&&(0===(2&Zl)&&(ia|=u),4===ra&&Dk(a,Jl)),Ek(a,o),1===u&&0===Zl&&0===(1&i.mode)&&(ma=tn()+500,wr&&jg()))}function Ek(a,i){var u=a.callbackNode;wc(a,i);var o=uc(a,a===Gl?Jl:0);if(0===o)null!==u&&Xe(u),a.callbackNode=null,a.callbackPriority=0;else if(i=o&-o,a.callbackPriority!==i){null!=u&&Xe(u);if(1===i)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),ir((function(){0===(6&Zl)&&jg()})),u=null;else{switch(Dc(o)){case 1:u=ln;break;case 4:u=an;break;case 16:u=un;break;case 536870912:u=sn;break;default:u=un}u=Gk(u,Hk.bind(null,a))}a.callbackPriority=i;a.callbackNode=u}}function Hk(a,i){Na=-1;La=0;if(0!==(6&Zl))throw Error(p(327));var u=a.callbackNode;if(Ik()&&a.callbackNode!==u)return null;var o=uc(a,a===Gl?Jl:0);if(0===o)return null;if(0!==(30&o)||0!==(o&a.expiredLanes)||i)i=Jk(a,o);else{i=o;var s=Zl;Zl|=2;var w=Kk();Gl===a&&Jl===i||(va=null,ma=tn()+500,Lk(a,i));do{try{Mk();break}catch(i){Nk(a,i)}}while(1);Qg();$l.current=w;Zl=s;null!==Xl?i=0:(Gl=null,Jl=0,i=ra)}if(0!==i){2===i&&(s=xc(a),0!==s&&(o=s,i=Ok(a,s)));if(1===i)throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;if(6===i)Dk(a,o);else{s=a.current.alternate;if(0===(30&o)&&!Pk(s)&&(i=Jk(a,o),2===i&&(w=xc(a),0!==w&&(o=w,i=Ok(a,w))),1===i))throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;a.finishedWork=s;a.finishedLanes=o;switch(i){case 0:case 1:throw Error(p(345));case 2:Qk(a,da,va);break;case 3:Dk(a,o);if((130023424&o)===o&&(i=ga+500-tn(),10<i)){if(0!==uc(a,0))break;s=a.suspendedLanes;if((s&o)!==o){L();a.pingedLanes|=a.suspendedLanes&s;break}a.timeoutHandle=rr(Qk.bind(null,a,da,va),i);break}Qk(a,da,va);break;case 4:Dk(a,o);if((4194240&o)===o)break;i=a.eventTimes;for(s=-1;0<o;){var x=31-dn(o);w=1<<x;x=i[x];x>s&&(s=x);o&=~w}o=s;o=tn()-o;o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Hl(o/1960))-o;if(10<o){a.timeoutHandle=rr(Qk.bind(null,a,da,va),o);break}Qk(a,da,va);break;case 5:Qk(a,da,va);break;default:throw Error(p(329))}}}Ek(a,tn());return a.callbackNode===u?Hk.bind(null,a):null}function Ok(a,i){var u=ca;a.current.memoizedState.isDehydrated&&(Lk(a,i).flags|=256);a=Jk(a,i);2!==a&&(i=da,da=u,null!==i&&Gj(i));return a}function Gj(a){null===da?da=a:da.push.apply(da,a)}function Pk(a){for(var i=a;;){if(16384&i.flags){var u=i.updateQueue;if(null!==u&&(u=u.stores,null!==u))for(var o=0;o<u.length;o++){var s=u[o],w=s.getSnapshot;s=s.value;try{if(!Pt(w(),s))return!1}catch(a){return!1}}}u=i.child;if(16384&i.subtreeFlags&&null!==u)u.return=i,i=u;else{if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return!0;i=i.return}i.sibling.return=i.return;i=i.sibling}}return!0}function Dk(a,i){i&=~ua;i&=~ia;a.suspendedLanes|=i;a.pingedLanes&=~i;for(a=a.expirationTimes;0<i;){var u=31-dn(i),o=1<<u;a[u]=-1;i&=~o}}function Fk(a){if(0!==(6&Zl))throw Error(p(327));Ik();var i=uc(a,0);if(0===(1&i))return Ek(a,tn()),null;var u=Jk(a,i);if(0!==a.tag&&2===u){var o=xc(a);0!==o&&(i=o,u=Ok(a,o))}if(1===u)throw u=la,Lk(a,0),Dk(a,i),Ek(a,tn()),u;if(6===u)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=i;Qk(a,da,va);Ek(a,tn());return null}function Rk(a,i){var u=Zl;Zl|=1;try{return a(i)}finally{Zl=u,0===Zl&&(ma=tn()+500,wr&&jg())}}function Sk(a){null!==Ea&&0===Ea.tag&&0===(6&Zl)&&Ik();var i=Zl;Zl|=1;var u=Yl.transition,o=vn;try{if(Yl.transition=null,vn=1,a)return a()}finally{vn=o,Yl.transition=u,Zl=i,0===(6&Zl)&&jg()}}function Ij(){ea=na.current;E(na)}function Lk(a,i){a.finishedWork=null;a.finishedLanes=0;var u=a.timeoutHandle;-1!==u&&(a.timeoutHandle=-1,lr(u));if(null!==Xl)for(u=Xl.return;null!==u;){var o=u;wg(o);switch(o.tag){case 1:o=o.type.childContextTypes;null!==o&&void 0!==o&&$f();break;case 3:Jh();E(br);E(vr);Oh();break;case 5:Lh(o);break;case 4:Jh();break;case 13:E(qr);break;case 19:E(qr);break;case 10:Rg(o.type._context);break;case 22:case 23:Ij()}u=u.return}Gl=a;Xl=a=wh(a.current,null);Jl=ea=i;ra=0;la=null;ua=ia=aa=0;da=ca=null;if(null!==Wr){for(i=0;i<Wr.length;i++)if(u=Wr[i],o=u.interleaved,null!==o){u.interleaved=null;var s=o.next,w=u.pending;if(null!==w){var x=w.next;w.next=s;o.next=x}u.pending=o}Wr=null}return a}function Nk(a,i){do{var u=Xl;try{Qg();Jr.current=Cl;if(wl){for(var o=ul.memoizedState;null!==o;){var s=o.queue;null!==s&&(s.pending=null);o=o.next}wl=!1}ll=0;yl=vl=ul=null;Sl=!1;El=0;Kl.current=null;if(null===u||null===u.return){ra=1;la=i;Xl=null;break}e:{var w=a,x=u.return,C=u,z=i;i=Jl;C.flags|=32768;if(null!==z&&\"object\"===typeof z&&\"function\"===typeof z.then){var N=z,_=C,j=_.tag;if(0===(1&_.mode)&&(0===j||11===j||15===j)){var P=_.alternate;P?(_.updateQueue=P.updateQueue,_.memoizedState=P.memoizedState,_.lanes=P.lanes):(_.updateQueue=null,_.memoizedState=null)}var T=Vi(x);if(null!==T){T.flags&=-257;Wi(T,x,C,w,i);1&T.mode&&Ti(w,N,i);i=T;z=N;var M=i.updateQueue;if(null===M){var F=new Set;F.add(z);i.updateQueue=F}else M.add(z);break e}if(0===(1&i)){Ti(w,N,i);uj();break e}z=Error(p(426))}else if(Mr&&1&C.mode){var R=Vi(x);if(null!==R){0===(65536&R.flags)&&(R.flags|=256);Wi(R,x,C,w,i);Jg(Ki(z,C));break e}}w=z=Ki(z,C);4!==ra&&(ra=2);null===ca?ca=[w]:ca.push(w);w=x;do{switch(w.tag){case 3:w.flags|=65536;i&=-i;w.lanes|=i;var O=Oi(w,z,i);fh(w,O);break e;case 1:C=z;var I=w.type,U=w.stateNode;if(0===(128&w.flags)&&(\"function\"===typeof I.getDerivedStateFromError||null!==U&&\"function\"===typeof U.componentDidCatch&&(null===ka||!ka.has(U)))){w.flags|=65536;i&=-i;w.lanes|=i;var V=Ri(w,C,i);fh(w,V);break e}}w=w.return}while(null!==w)}Tk(u)}catch(a){i=a;Xl===u&&null!==u&&(Xl=u=u.return);continue}break}while(1)}function Kk(){var a=$l.current;$l.current=Cl;return null===a?Cl:a}function uj(){0!==ra&&3!==ra&&2!==ra||(ra=4);null===Gl||0===(268435455&aa)&&0===(268435455&ia)||Dk(Gl,Jl)}function Jk(a,i){var u=Zl;Zl|=2;var o=Kk();Gl===a&&Jl===i||(va=null,Lk(a,i));do{try{Uk();break}catch(i){Nk(a,i)}}while(1);Qg();Zl=u;$l.current=o;if(null!==Xl)throw Error(p(261));Gl=null;Jl=0;return ra}function Uk(){for(;null!==Xl;)Vk(Xl)}function Mk(){for(;null!==Xl&&!en();)Vk(Xl)}function Vk(a){var i=_a(a.alternate,a,ea);a.memoizedProps=a.pendingProps;null===i?Tk(a):Xl=i;Kl.current=null}function Tk(a){var i=a;do{var u=i.alternate;a=i.return;if(0===(32768&i.flags)){if(u=Fj(u,i,ea),null!==u){Xl=u;return}}else{u=Jj(u,i);if(null!==u){u.flags&=32767;Xl=u;return}if(null===a){ra=6;Xl=null;return}a.flags|=32768,a.subtreeFlags=0,a.deletions=null}i=i.sibling;if(null!==i){Xl=i;return}Xl=i=a}while(null!==i);0===ra&&(ra=5)}function Qk(a,i,u){var o=vn,s=Yl.transition;try{Yl.transition=null,vn=1,Xk(a,i,u,o)}finally{Yl.transition=s,vn=o}return null}function Xk(a,i,u,o){do{Ik()}while(null!==Ea);if(0!==(6&Zl))throw Error(p(327));u=a.finishedWork;var s=a.finishedLanes;if(null===u)return null;a.finishedWork=null;a.finishedLanes=0;if(u===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var w=u.lanes|u.childLanes;Bc(a,w);a===Gl&&(Xl=Gl=null,Jl=0);0===(2064&u.subtreeFlags)&&0===(2064&u.flags)||wa||(wa=!0,Gk(un,(function(){Ik();return null})));w=0!==(15990&u.flags);if(0!==(15990&u.subtreeFlags)||w){w=Yl.transition;Yl.transition=null;var x=vn;vn=1;var C=Zl;Zl|=4;Kl.current=null;Pj(a,u);ek(u,a);Oe(tr);Dn=!!nr;tr=nr=null;a.current=u;ik(u,a,s);nn();Zl=C;vn=x;Yl.transition=w}else a.current=u;wa&&(wa=!1,Ea=a,xa=s);w=a.pendingLanes;0===w&&(ka=null);mc(u.stateNode,o);Ek(a,tn());if(null!==i)for(o=a.onRecoverableError,u=0;u<i.length;u++)s=i[u],o(s.value,{componentStack:s.stack,digest:s.digest});if(ba)throw ba=!1,a=ya,ya=null,a;0!==(1&xa)&&0!==a.tag&&Ik();w=a.pendingLanes;0!==(1&w)?a===za?Ca++:(Ca=0,za=a):Ca=0;jg();return null}function Ik(){if(null!==Ea){var a=Dc(xa),i=Yl.transition,u=vn;try{Yl.transition=null;vn=16>a?16:a;if(null===Ea)var o=!1;else{a=Ea;Ea=null;xa=0;if(0!==(6&Zl))throw Error(p(331));var s=Zl;Zl|=4;for(Wl=a.current;null!==Wl;){var w=Wl,x=w.child;if(0!==(16&Wl.flags)){var C=w.deletions;if(null!==C){for(var z=0;z<C.length;z++){var N=C[z];for(Wl=N;null!==Wl;){var _=Wl;switch(_.tag){case 0:case 11:case 15:Qj(8,_,w)}var j=_.child;if(null!==j)j.return=_,Wl=j;else for(;null!==Wl;){_=Wl;var P=_.sibling,T=_.return;Tj(_);if(_===N){Wl=null;break}if(null!==P){P.return=T;Wl=P;break}Wl=T}}}var M=w.alternate;if(null!==M){var F=M.child;if(null!==F){M.child=null;do{var R=F.sibling;F.sibling=null;F=R}while(null!==F)}}Wl=w}}if(0!==(2064&w.subtreeFlags)&&null!==x)x.return=w,Wl=x;else e:for(;null!==Wl;){w=Wl;if(0!==(2048&w.flags))switch(w.tag){case 0:case 11:case 15:Qj(9,w,w.return)}var O=w.sibling;if(null!==O){O.return=w.return;Wl=O;break e}Wl=w.return}}var I=a.current;for(Wl=I;null!==Wl;){x=Wl;var U=x.child;if(0!==(2064&x.subtreeFlags)&&null!==U)U.return=x,Wl=U;else e:for(x=I;null!==Wl;){C=Wl;if(0!==(2048&C.flags))try{switch(C.tag){case 0:case 11:case 15:Rj(9,C)}}catch(a){W(C,C.return,a)}if(C===x){Wl=null;break e}var V=C.sibling;if(null!==V){V.return=C.return;Wl=V;break e}Wl=C.return}}Zl=s;jg();if(fn&&\"function\"===typeof fn.onPostCommitFiberRoot)try{fn.onPostCommitFiberRoot(cn,a)}catch(a){}o=!0}return o}finally{vn=u,Yl.transition=i}}return!1}function Yk(a,i,u){i=Ki(u,i);i=Oi(a,i,1);a=dh(a,i,1);i=L();null!==a&&(Ac(a,1,i),Ek(a,i))}function W(a,i,u){if(3===a.tag)Yk(a,a,u);else for(;null!==i;){if(3===i.tag){Yk(i,a,u);break}if(1===i.tag){var o=i.stateNode;if(\"function\"===typeof i.type.getDerivedStateFromError||\"function\"===typeof o.componentDidCatch&&(null===ka||!ka.has(o))){a=Ki(u,a);a=Ri(i,a,1);i=dh(i,a,1);a=L();null!==i&&(Ac(i,1,a),Ek(i,a));break}}i=i.return}}function Ui(a,i,u){var o=a.pingCache;null!==o&&o.delete(i);i=L();a.pingedLanes|=a.suspendedLanes&u;Gl===a&&(Jl&u)===u&&(4===ra||3===ra&&(130023424&Jl)===Jl&&500>tn()-ga?Lk(a,0):ua|=u);Ek(a,i)}function Zk(a,i){0===i&&(0===(1&a.mode)?i=1:(i=mn,mn<<=1,0===(130023424&mn)&&(mn=4194304)));var u=L();a=Zg(a,i);null!==a&&(Ac(a,i,u),Ek(a,u))}function vj(a){var i=a.memoizedState,u=0;null!==i&&(u=i.retryLane);Zk(a,u)}function ck(a,i){var u=0;switch(a.tag){case 13:var o=a.stateNode;var s=a.memoizedState;null!==s&&(u=s.retryLane);break;case 19:o=a.stateNode;break;default:throw Error(p(314))}null!==o&&o.delete(i);Zk(a,u)}var _a;_a=function(a,i,u){if(null!==a)if(a.memoizedProps!==i.pendingProps||br.current)Tl=!0;else{if(0===(a.lanes&u)&&0===(128&i.flags))return Tl=!1,zj(a,i,u);Tl=0!==(131072&a.flags)}else Tl=!1,Mr&&0!==(1048576&i.flags)&&ug(i,zr,i.index);i.lanes=0;switch(i.tag){case 2:var o=i.type;jj(a,i);a=i.pendingProps;var s=Yf(i,vr.current);Tg(i,u);s=Xh(null,i,o,a,s,u);var w=bi();i.flags|=1;\"object\"===typeof s&&null!==s&&\"function\"===typeof s.render&&void 0===s.$$typeof?(i.tag=1,i.memoizedState=null,i.updateQueue=null,Zf(o)?(w=!0,cg(i)):w=!1,i.memoizedState=null!==s.state&&void 0!==s.state?s.state:null,ah(i),s.updater=Br,i.stateNode=s,s._reactInternals=i,rh(i,o,a,u),i=kj(null,i,o,!0,w,u)):(i.tag=0,Mr&&w&&vg(i),Yi(null,i,s,u),i=i.child);return i;case 16:o=i.elementType;e:{jj(a,i);a=i.pendingProps;s=o._init;o=s(o._payload);i.type=o;s=i.tag=$k(o);a=Lg(o,a);switch(s){case 0:i=dj(null,i,o,a,u);break e;case 1:i=ij(null,i,o,a,u);break e;case 11:i=Zi(null,i,o,a,u);break e;case 14:i=aj(null,i,o,Lg(o.type,a),u);break e}throw Error(p(306,o,\"\"))}return i;case 0:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),dj(a,i,o,s,u);case 1:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),ij(a,i,o,s,u);case 3:e:{lj(i);if(null===a)throw Error(p(387));o=i.pendingProps;w=i.memoizedState;s=w.element;bh(a,i);gh(i,o,null,u);var x=i.memoizedState;o=x.element;if(w.isDehydrated){if(w={element:o,isDehydrated:!1,cache:x.cache,pendingSuspenseBoundaries:x.pendingSuspenseBoundaries,transitions:x.transitions},i.updateQueue.baseState=w,i.memoizedState=w,256&i.flags){s=Ki(Error(p(423)),i);i=mj(a,i,o,u,s);break e}if(o!==s){s=Ki(Error(p(424)),i);i=mj(a,i,o,u,s);break e}for(Dr=Lf(i.stateNode.containerInfo.firstChild),Tr=i,Mr=!0,Fr=null,u=$r(i,null,o,u),i.child=u;u;)u.flags=-3&u.flags|4096,u=u.sibling}else{Ig();if(o===s){i=$i(a,i,u);break e}Yi(a,i,o,u)}i=i.child}return i;case 5:return Kh(i),null===a&&Eg(i),o=i.type,s=i.pendingProps,w=null!==a?a.memoizedProps:null,x=s.children,Ef(o,s)?x=null:null!==w&&Ef(o,w)&&(i.flags|=32),hj(a,i),Yi(a,i,x,u),i.child;case 6:return null===a&&Eg(i),null;case 13:return pj(a,i,u);case 4:return Ih(i,i.stateNode.containerInfo),o=i.pendingProps,null===a?i.child=Hr(i,null,o,u):Yi(a,i,o,u),i.child;case 11:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),Zi(a,i,o,s,u);case 7:return Yi(a,i,i.pendingProps,u),i.child;case 8:return Yi(a,i,i.pendingProps.children,u),i.child;case 12:return Yi(a,i,i.pendingProps.children,u),i.child;case 10:e:{o=i.type._context;s=i.pendingProps;w=i.memoizedProps;x=s.value;G(Or,o._currentValue);o._currentValue=x;if(null!==w)if(Pt(w.value,x)){if(w.children===s.children&&!br.current){i=$i(a,i,u);break e}}else for(w=i.child,null!==w&&(w.return=i);null!==w;){var C=w.dependencies;if(null!==C){x=w.child;for(var z=C.firstContext;null!==z;){if(z.context===o){if(1===w.tag){z=ch(-1,u&-u);z.tag=2;var N=w.updateQueue;if(null!==N){N=N.shared;var _=N.pending;null===_?z.next=z:(z.next=_.next,_.next=z);N.pending=z}}w.lanes|=u;z=w.alternate;null!==z&&(z.lanes|=u);Sg(w.return,u,i);C.lanes|=u;break}z=z.next}}else if(10===w.tag)x=w.type===i.type?null:w.child;else if(18===w.tag){x=w.return;if(null===x)throw Error(p(341));x.lanes|=u;C=x.alternate;null!==C&&(C.lanes|=u);Sg(x,u,i);x=w.sibling}else x=w.child;if(null!==x)x.return=w;else for(x=w;null!==x;){if(x===i){x=null;break}w=x.sibling;if(null!==w){w.return=x.return;x=w;break}x=x.return}w=x}Yi(a,i,s.children,u);i=i.child}return i;case 9:return s=i.type,o=i.pendingProps.children,Tg(i,u),s=Vg(s),o=o(s),i.flags|=1,Yi(a,i,o,u),i.child;case 14:return o=i.type,s=Lg(o,i.pendingProps),s=Lg(o.type,s),aj(a,i,o,s,u);case 15:return cj(a,i,i.type,i.pendingProps,u);case 17:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),jj(a,i),i.tag=1,Zf(o)?(a=!0,cg(i)):a=!1,Tg(i,u),ph(i,o,s),rh(i,o,s,u),kj(null,i,o,!0,a,u);case 19:return yj(a,i,u);case 22:return ej(a,i,u)}throw Error(p(156,i.tag))};function Gk(a,i){return qe(a,i)}function al(a,i,u,o){this.tag=a;this.key=u;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=i;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=o;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,i,u,o){return new al(a,i,u,o)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}function $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===$)return 11;if(a===Z)return 14}return 2}function wh(a,i){var u=a.alternate;null===u?(u=Bg(a.tag,i,a.key,a.mode),u.elementType=a.elementType,u.type=a.type,u.stateNode=a.stateNode,u.alternate=a,a.alternate=u):(u.pendingProps=i,u.type=a.type,u.flags=0,u.subtreeFlags=0,u.deletions=null);u.flags=14680064&a.flags;u.childLanes=a.childLanes;u.lanes=a.lanes;u.child=a.child;u.memoizedProps=a.memoizedProps;u.memoizedState=a.memoizedState;u.updateQueue=a.updateQueue;i=a.dependencies;u.dependencies=null===i?null:{lanes:i.lanes,firstContext:i.firstContext};u.sibling=a.sibling;u.index=a.index;u.ref=a.ref;return u}function yh(a,i,u,o,s,w){var x=2;o=a;if(\"function\"===typeof a)bj(a)&&(x=1);else if(\"string\"===typeof a)x=5;else e:switch(a){case U:return Ah(u.children,s,w,i);case V:x=8;s|=8;break;case A:return a=Bg(12,u,i,2|s),a.elementType=A,a.lanes=w,a;case K:return a=Bg(13,u,i,s),a.elementType=K,a.lanes=w,a;case Y:return a=Bg(19,u,i,s),a.elementType=Y,a.lanes=w,a;case ee:return qj(u,s,w,i);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case B:x=10;break e;case H:x=9;break e;case $:x=11;break e;case Z:x=14;break e;case X:x=16;o=null;break e}throw Error(p(130,null==a?a:typeof a,\"\"))}i=Bg(x,u,i,s);i.elementType=a;i.type=o;i.lanes=w;return i}function Ah(a,i,u,o){a=Bg(7,a,o,i);a.lanes=u;return a}function qj(a,i,u,o){a=Bg(22,a,o,i);a.elementType=ee;a.lanes=u;a.stateNode={isHidden:!1};return a}function xh(a,i,u){a=Bg(6,a,null,i);a.lanes=u;return a}function zh(a,i,u){i=Bg(4,null!==a.children?a.children:[],a.key,i);i.lanes=u;i.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return i}function bl(a,i,u,o,s){this.tag=i;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=o;this.onRecoverableError=s;this.mutableSourceEagerHydrationData=null}function cl(a,i,u,o,s,w,x,C,z){a=new bl(a,i,u,C,z);1===i?(i=1,!0===w&&(i|=8)):i=0;w=Bg(3,null,null,i);a.current=w;w.stateNode=a;w.memoizedState={element:o,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(w);return a}function dl(a,i,u){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:I,key:null==o?null:\"\"+o,children:a,containerInfo:i,implementation:u}}function el(a){if(!a)return mr;a=a._reactInternals;e:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var i=a;do{switch(i.tag){case 3:i=i.stateNode.context;break e;case 1:if(Zf(i.type)){i=i.stateNode.__reactInternalMemoizedMergedChildContext;break e}}i=i.return}while(null!==i);throw Error(p(171))}if(1===a.tag){var u=a.type;if(Zf(u))return bg(a,u,i)}return i}function fl(a,i,u,o,s,w,x,C,z){a=cl(u,o,!0,a,s,w,x,C,z);a.context=el(null);u=a.current;o=L();s=lh(u);w=ch(o,s);w.callback=void 0!==i&&null!==i?i:null;dh(u,w,s);a.current.lanes=s;Ac(a,s,o);Ek(a,o);return a}function gl(a,i,u,o){var s=i.current,w=L(),x=lh(s);u=el(u);null===i.context?i.context=u:i.pendingContext=u;i=ch(w,x);i.payload={element:a};o=void 0===o?null:o;null!==o&&(i.callback=o);a=dh(s,i,x);null!==a&&(mh(a,s,x,w),eh(a,s,x));return x}function hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,i){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var u=a.retryLane;a.retryLane=0!==u&&u<i?u:i}}function jl(a,i){il(a,i);(a=a.alternate)&&il(a,i)}function kl(){return null}var ja=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}nl.prototype.render=ml.prototype.render=function(a){var i=this._internalRoot;if(null===i)throw Error(p(409));gl(a,i,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var i=a.containerInfo;Sk((function(){gl(null,a,null,null)}));i[cr]=null}};function nl(a){this._internalRoot=a}nl.prototype.unstable_scheduleHydration=function(a){if(a){var i=wn();a={blockedOn:null,target:a,priority:i};for(var u=0;u<jn.length&&0!==i&&i<jn[u].priority;u++);jn.splice(u,0,a);0===u&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}function rl(a,i,u,o,s){if(s){if(\"function\"===typeof o){var w=o;o=function(){var a=hl(x);w.call(a)}}var x=fl(i,o,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=x;a[cr]=x.current;sf(8===a.nodeType?a.parentNode:a);Sk();return x}for(;s=a.lastChild;)a.removeChild(s);if(\"function\"===typeof o){var C=o;o=function(){var a=hl(z);C.call(a)}}var z=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=z;a[cr]=z.current;sf(8===a.nodeType?a.parentNode:a);Sk((function(){gl(i,z,u,o)}));return z}function sl(a,i,u,o,s){var w=u._reactRootContainer;if(w){var x=w;if(\"function\"===typeof s){var C=s;s=function(){var a=hl(x);C.call(a)}}gl(i,x,a,s)}else x=rl(u,i,a,s,o);return hl(x)}bn=function(a){switch(a.tag){case 3:var i=a.stateNode;if(i.current.memoizedState.isDehydrated){var u=tc(i.pendingLanes);0!==u&&(Cc(i,1|u),Ek(i,tn()),0===(6&Zl)&&(ma=tn()+500,jg()))}break;case 13:Sk((function(){var i=Zg(a,1);if(null!==i){var u=L();mh(i,a,1,u)}})),jl(a,1)}};yn=function(a){if(13===a.tag){var i=Zg(a,134217728);if(null!==i){var u=L();mh(i,a,134217728,u)}jl(a,134217728)}};kn=function(a){if(13===a.tag){var i=lh(a),u=Zg(a,i);if(null!==u){var o=L();mh(u,a,i,o)}jl(a,i)}};wn=function(){return vn};Sn=function(a,i){var u=vn;try{return vn=a,i()}finally{vn=u}};xe=function(a,i,u){switch(i){case\"input\":bb(a,u);i=u.name;if(\"radio\"===u.type&&null!=i){for(u=a;u.parentNode;)u=u.parentNode;u=u.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+i)+'][type=\"radio\"]');for(i=0;i<u.length;i++){var o=u[i];if(o!==a&&o.form===a.form){var s=Db(o);if(!s)throw Error(p(90));Wa(o);bb(o,s)}}}break;case\"textarea\":ib(a,u);break;case\"select\":i=u.value,null!=i&&fb(a,!!u.multiple,i,!1)}};Gb=Rk;Hb=Sk;var Da={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},Fa={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};var Ia={bundleType:Fa.bundleType,version:Fa.version,rendererPackageName:Fa.rendererPackageName,rendererConfig:Fa.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:R.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:Fa.findFiberByHostInstance||kl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Aa=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Aa.isDisabled&&Aa.supportsFiber)try{cn=Aa.inject(Ia),fn=Aa}catch(a){}}s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Da;s.createPortal=function(a,i){var u=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(i))throw Error(p(200));return dl(a,i,null,u)};s.createRoot=function(a,i){if(!ol(a))throw Error(p(299));var u=!1,o=\"\",s=ja;null!==i&&void 0!==i&&(!0===i.unstable_strictMode&&(u=!0),void 0!==i.identifierPrefix&&(o=i.identifierPrefix),void 0!==i.onRecoverableError&&(s=i.onRecoverableError));i=cl(a,1,!1,null,null,u,!1,o,s);a[cr]=i.current;sf(8===a.nodeType?a.parentNode:a);return new ml(i)};s.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var i=a._reactInternals;if(void 0===i){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a))}a=Zb(i);a=null===a?null:a.stateNode;return a};s.flushSync=function(a){return Sk(a)};s.hydrate=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!0,u)};s.hydrateRoot=function(a,i,u){if(!ol(a))throw Error(p(405));var o=null!=u&&u.hydratedSources||null,s=!1,w=\"\",x=ja;null!==u&&void 0!==u&&(!0===u.unstable_strictMode&&(s=!0),void 0!==u.identifierPrefix&&(w=u.identifierPrefix),void 0!==u.onRecoverableError&&(x=u.onRecoverableError));i=fl(i,null,a,1,null!=u?u:null,s,!1,w,x);a[cr]=i.current;sf(a);if(o)for(a=0;a<o.length;a++)u=o[a],s=u._getVersion,s=s(u._source),null==i.mutableSourceEagerHydrationData?i.mutableSourceEagerHydrationData=[u,s]:i.mutableSourceEagerHydrationData.push(u,s);return new nl(i)};s.render=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!1,u)};s.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return!!a._reactRootContainer&&(Sk((function(){sl(null,null,a,!1,(function(){a._reactRootContainer=null;a[cr]=null}))})),!0)};s.unstable_batchedUpdates=Rk;s.unstable_renderSubtreeIntoContainer=function(a,i,u,o){if(!pl(u))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,i,u,!1,o)};s.version=\"18.2.0-next-9e3b772b8-20220608\";function checkDCE(){if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(a){console.error(a)}}checkDCE();var Ba=s;var Ha=Ba;const $a=Ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga=Ba.createPortal,Ja=Ba.createRoot,ai=Ba.findDOMNode,Si=Ba.flushSync,Ni=Ba.hydrate,_i=Ba.hydrateRoot,Pi=Ba.render,Qi=Ba.unmountComponentAtNode,Xi=Ba.unstable_batchedUpdates,eu=Ba.unstable_renderSubtreeIntoContainer,nu=Ba.version;export{$a as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga as createPortal,Ja as createRoot,Ha as default,ai as findDOMNode,Si as flushSync,Ni as hydrate,_i as hydrateRoot,Pi as render,Qi as unmountComponentAtNode,Xi as unstable_batchedUpdates,eu as unstable_renderSubtreeIntoContainer,nu as version};\n\n//# sourceMappingURL=index.js.map", "var e={};function f(e,n){var t=e.length;e.push(n);e:for(;0<t;){var a=t-1>>>1,l=e[a];if(!(0<g(l,n)))break e;e[a]=n,e[t]=l,t=a}}function h(e){return 0===e.length?null:e[0]}function k(e){if(0===e.length)return null;var n=e[0],t=e.pop();if(t!==n){e[0]=t;e:for(var a=0,l=e.length,r=l>>>1;a<r;){var i=2*(a+1)-1,u=e[i],o=i+1,s=e[o];if(0>g(u,t))o<l&&0>g(s,u)?(e[a]=s,e[o]=t,a=o):(e[a]=u,e[i]=t,a=i);else{if(!(o<l&&0>g(s,t)))break e;e[a]=s,e[o]=t,a=o}}}return n}function g(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var n=performance;e.unstable_now=function(){return n.now()}}else{var t=Date,a=t.now();e.unstable_now=function(){return t.now()-a}}var l=[],r=[],i=1,u=null,o=3,s=!1,c=!1,b=!1,d=\"function\"===typeof setTimeout?setTimeout:null,_=\"function\"===typeof clearTimeout?clearTimeout:null,v=\"undefined\"!==typeof setImmediate?setImmediate:null;\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(e){for(var n=h(r);null!==n;){if(null===n.callback)k(r);else{if(!(n.startTime<=e))break;k(r),n.sortIndex=n.expirationTime,f(l,n)}n=h(r)}}function H(e){b=!1;G(e);if(!c)if(null!==h(l))c=!0,I(J);else{var n=h(r);null!==n&&K(H,n.startTime-e)}}function J(n,t){c=!1;b&&(b=!1,_(m),m=-1);s=!0;var a=o;try{G(t);for(u=h(l);null!==u&&(!(u.expirationTime>t)||n&&!M());){var i=u.callback;if(\"function\"===typeof i){u.callback=null;o=u.priorityLevel;var d=i(u.expirationTime<=t);t=e.unstable_now();\"function\"===typeof d?u.callback=d:u===h(l)&&k(l);G(t)}else k(l);u=h(l)}if(null!==u)var v=!0;else{var p=h(r);null!==p&&K(H,p.startTime-t);v=!1}return v}finally{u=null,o=a,s=!1}}var p=!1,y=null,m=-1,w=5,P=-1;function M(){return!(e.unstable_now()-P<w)}function R(){if(null!==y){var n=e.unstable_now();P=n;var t=!0;try{t=y(!0,n)}finally{t?x():(p=!1,y=null)}}else p=!1}var x;if(\"function\"===typeof v)x=function(){v(R)};else if(\"undefined\"!==typeof MessageChannel){var C=new MessageChannel,T=C.port2;C.port1.onmessage=R;x=function(){T.postMessage(null)}}else x=function(){d(R,0)};function I(e){y=e;p||(p=!0,x())}function K(n,t){m=d((function(){n(e.unstable_now())}),t)}e.unstable_IdlePriority=5;e.unstable_ImmediatePriority=1;e.unstable_LowPriority=4;e.unstable_NormalPriority=3;e.unstable_Profiling=null;e.unstable_UserBlockingPriority=2;e.unstable_cancelCallback=function(e){e.callback=null};e.unstable_continueExecution=function(){c||s||(c=!0,I(J))};e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):w=0<e?Math.floor(1e3/e):5};e.unstable_getCurrentPriorityLevel=function(){return o};e.unstable_getFirstCallbackNode=function(){return h(l)};e.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var t=o;o=n;try{return e()}finally{o=t}};e.unstable_pauseExecution=function(){};e.unstable_requestPaint=function(){};e.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var t=o;o=e;try{return n()}finally{o=t}};e.unstable_scheduleCallback=function(n,t,a){var u=e.unstable_now();\"object\"===typeof a&&null!==a?(a=a.delay,a=\"number\"===typeof a&&0<a?u+a:u):a=u;switch(n){case 1:var o=-1;break;case 2:o=250;break;case 5:o=1073741823;break;case 4:o=1e4;break;default:o=5e3}o=a+o;n={id:i++,callback:t,priorityLevel:n,startTime:a,expirationTime:o,sortIndex:-1};a>u?(n.sortIndex=a,f(r,n),null===h(l)&&n===h(r)&&(b?(_(m),m=-1):b=!0,K(H,a-u))):(n.sortIndex=o,f(l,n),c||s||(c=!0,I(J)));return n};e.unstable_shouldYield=M;e.unstable_wrapCallback=function(e){var n=o;return function(){var t=o;o=n;try{return e.apply(this,arguments)}finally{o=t}}};const L=e.unstable_now,F=e.unstable_IdlePriority,E=e.unstable_ImmediatePriority,N=e.unstable_LowPriority,j=e.unstable_NormalPriority,q=e.unstable_Profiling,B=e.unstable_UserBlockingPriority,U=e.unstable_cancelCallback,W=e.unstable_continueExecution,Y=e.unstable_forceFrameRate,D=e.unstable_getCurrentPriorityLevel,z=e.unstable_getFirstCallbackNode,A=e.unstable_next,O=e.unstable_pauseExecution,Q=e.unstable_requestPaint,S=e.unstable_runWithPriority,V=e.unstable_scheduleCallback,X=e.unstable_shouldYield,Z=e.unstable_wrapCallback;export{e as default,F as unstable_IdlePriority,E as unstable_ImmediatePriority,N as unstable_LowPriority,j as unstable_NormalPriority,q as unstable_Profiling,B as unstable_UserBlockingPriority,U as unstable_cancelCallback,W as unstable_continueExecution,Y as unstable_forceFrameRate,D as unstable_getCurrentPriorityLevel,z as unstable_getFirstCallbackNode,A as unstable_next,L as unstable_now,O as unstable_pauseExecution,Q as unstable_requestPaint,S as unstable_runWithPriority,V as unstable_scheduleCallback,X as unstable_shouldYield,Z as unstable_wrapCallback};\n\n//# sourceMappingURL=index.js.map", "import {\n  AcceleratedAnimation,\n  AnimatePresence,\n  DeprecatedLayoutGroupContext,\n  DragControls,\n  FlatTree,\n  LayoutGroup,\n  LazyMotion,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionValue,\n  PresenceContext,\n  SwitchLayoutGroupContext,\n  VisualElement,\n  addPointerEvent,\n  addPointerInfo,\n  addScaleCorrector,\n  animate,\n  animateMini,\n  animateValue,\n  animateVisualElement,\n  animationControls,\n  animations,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  buildTransform,\n  calcLength,\n  cancelFrame,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  color,\n  complex,\n  createBox,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cubicBezier,\n  delay,\n  disableInstantTransitions,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  filterProps,\n  findSpring,\n  frame,\n  frameData,\n  frameSteps,\n  inView,\n  inertia,\n  interpolate,\n  invariant,\n  isBrowser,\n  isDragActive,\n  isMotionComponent,\n  isMotionValue,\n  isValidMotionProp,\n  keyframes,\n  m,\n  makeUseVisualState,\n  mirrorEasing,\n  mix,\n  motion,\n  motionValue,\n  namespace_exports,\n  optimizedAppearDataAttribute,\n  pipe,\n  progress,\n  px,\n  resolveMotionValue,\n  reverseEasing,\n  scroll,\n  scrollInfo,\n  spring,\n  stagger,\n  startOptimizedAppearAnimation,\n  steps,\n  sync,\n  transform,\n  unwrapMotionComponent,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useCycle,\n  useDomEvent,\n  useDragControls,\n  useElementScroll,\n  useForceUpdate,\n  useInView,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  usePresence,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useResetProjection,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  visualElementStore,\n  warning,\n  wrap\n} from \"./chunk-4Z6NVKPU.mjs\";\nimport {\n  __commonJS,\n  __privateAdd,\n  __privateGet,\n  __privateMethod,\n  __privateSet,\n  __publicField,\n  __toESM\n} from \"./chunk-QLPHEVXG.mjs\";\n\n// ../../../node_modules/hsluv/dist/hsluv.cjs\nvar require_hsluv = __commonJS({\n  \"../../../node_modules/hsluv/dist/hsluv.cjs\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.Hsluv = void 0;\n    var Hsluv2 = class {\n      constructor() {\n        this.hex = \"#000000\";\n        this.rgb_r = 0;\n        this.rgb_g = 0;\n        this.rgb_b = 0;\n        this.xyz_x = 0;\n        this.xyz_y = 0;\n        this.xyz_z = 0;\n        this.luv_l = 0;\n        this.luv_u = 0;\n        this.luv_v = 0;\n        this.lch_l = 0;\n        this.lch_c = 0;\n        this.lch_h = 0;\n        this.hsluv_h = 0;\n        this.hsluv_s = 0;\n        this.hsluv_l = 0;\n        this.hpluv_h = 0;\n        this.hpluv_p = 0;\n        this.hpluv_l = 0;\n        this.r0s = 0;\n        this.r0i = 0;\n        this.r1s = 0;\n        this.r1i = 0;\n        this.g0s = 0;\n        this.g0i = 0;\n        this.g1s = 0;\n        this.g1i = 0;\n        this.b0s = 0;\n        this.b0i = 0;\n        this.b1s = 0;\n        this.b1i = 0;\n      }\n      static fromLinear(c) {\n        if (c <= 31308e-7) {\n          return 12.92 * c;\n        } else {\n          return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n        }\n      }\n      static toLinear(c) {\n        if (c > 0.04045) {\n          return Math.pow((c + 0.055) / 1.055, 2.4);\n        } else {\n          return c / 12.92;\n        }\n      }\n      static yToL(Y) {\n        if (Y <= Hsluv2.epsilon) {\n          return Y / Hsluv2.refY * Hsluv2.kappa;\n        } else {\n          return 116 * Math.pow(Y / Hsluv2.refY, 1 / 3) - 16;\n        }\n      }\n      static lToY(L) {\n        if (L <= 8) {\n          return Hsluv2.refY * L / Hsluv2.kappa;\n        } else {\n          return Hsluv2.refY * Math.pow((L + 16) / 116, 3);\n        }\n      }\n      static rgbChannelToHex(chan) {\n        const c = Math.round(chan * 255);\n        const digit2 = c % 16;\n        const digit1 = (c - digit2) / 16 | 0;\n        return Hsluv2.hexChars.charAt(digit1) + Hsluv2.hexChars.charAt(digit2);\n      }\n      static hexToRgbChannel(hex, offset) {\n        const digit1 = Hsluv2.hexChars.indexOf(hex.charAt(offset));\n        const digit2 = Hsluv2.hexChars.indexOf(hex.charAt(offset + 1));\n        const n = digit1 * 16 + digit2;\n        return n / 255;\n      }\n      static distanceFromOriginAngle(slope, intercept, angle) {\n        const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n        if (d < 0) {\n          return Infinity;\n        } else {\n          return d;\n        }\n      }\n      static distanceFromOrigin(slope, intercept) {\n        return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n      }\n      static min6(f1, f2, f3, f4, f5, f6) {\n        return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n      }\n      rgbToHex() {\n        this.hex = \"#\";\n        this.hex += Hsluv2.rgbChannelToHex(this.rgb_r);\n        this.hex += Hsluv2.rgbChannelToHex(this.rgb_g);\n        this.hex += Hsluv2.rgbChannelToHex(this.rgb_b);\n      }\n      hexToRgb() {\n        this.hex = this.hex.toLowerCase();\n        this.rgb_r = Hsluv2.hexToRgbChannel(this.hex, 1);\n        this.rgb_g = Hsluv2.hexToRgbChannel(this.hex, 3);\n        this.rgb_b = Hsluv2.hexToRgbChannel(this.hex, 5);\n      }\n      xyzToRgb() {\n        this.rgb_r = Hsluv2.fromLinear(Hsluv2.m_r0 * this.xyz_x + Hsluv2.m_r1 * this.xyz_y + Hsluv2.m_r2 * this.xyz_z);\n        this.rgb_g = Hsluv2.fromLinear(Hsluv2.m_g0 * this.xyz_x + Hsluv2.m_g1 * this.xyz_y + Hsluv2.m_g2 * this.xyz_z);\n        this.rgb_b = Hsluv2.fromLinear(Hsluv2.m_b0 * this.xyz_x + Hsluv2.m_b1 * this.xyz_y + Hsluv2.m_b2 * this.xyz_z);\n      }\n      rgbToXyz() {\n        const lr = Hsluv2.toLinear(this.rgb_r);\n        const lg = Hsluv2.toLinear(this.rgb_g);\n        const lb = Hsluv2.toLinear(this.rgb_b);\n        this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n        this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n        this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n      }\n      xyzToLuv() {\n        const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n        let varU = 4 * this.xyz_x;\n        let varV = 9 * this.xyz_y;\n        if (divider !== 0) {\n          varU /= divider;\n          varV /= divider;\n        } else {\n          varU = NaN;\n          varV = NaN;\n        }\n        this.luv_l = Hsluv2.yToL(this.xyz_y);\n        if (this.luv_l === 0) {\n          this.luv_u = 0;\n          this.luv_v = 0;\n        } else {\n          this.luv_u = 13 * this.luv_l * (varU - Hsluv2.refU);\n          this.luv_v = 13 * this.luv_l * (varV - Hsluv2.refV);\n        }\n      }\n      luvToXyz() {\n        if (this.luv_l === 0) {\n          this.xyz_x = 0;\n          this.xyz_y = 0;\n          this.xyz_z = 0;\n          return;\n        }\n        const varU = this.luv_u / (13 * this.luv_l) + Hsluv2.refU;\n        const varV = this.luv_v / (13 * this.luv_l) + Hsluv2.refV;\n        this.xyz_y = Hsluv2.lToY(this.luv_l);\n        this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n        this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n      }\n      luvToLch() {\n        this.lch_l = this.luv_l;\n        this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n        if (this.lch_c < 1e-8) {\n          this.lch_h = 0;\n        } else {\n          const hrad = Math.atan2(this.luv_v, this.luv_u);\n          this.lch_h = hrad * 180 / Math.PI;\n          if (this.lch_h < 0) {\n            this.lch_h = 360 + this.lch_h;\n          }\n        }\n      }\n      lchToLuv() {\n        const hrad = this.lch_h / 180 * Math.PI;\n        this.luv_l = this.lch_l;\n        this.luv_u = Math.cos(hrad) * this.lch_c;\n        this.luv_v = Math.sin(hrad) * this.lch_c;\n      }\n      calculateBoundingLines(l) {\n        const sub1 = Math.pow(l + 16, 3) / 1560896;\n        const sub2 = sub1 > Hsluv2.epsilon ? sub1 : l / Hsluv2.kappa;\n        const s1r = sub2 * (284517 * Hsluv2.m_r0 - 94839 * Hsluv2.m_r2);\n        const s2r = sub2 * (838422 * Hsluv2.m_r2 + 769860 * Hsluv2.m_r1 + 731718 * Hsluv2.m_r0);\n        const s3r = sub2 * (632260 * Hsluv2.m_r2 - 126452 * Hsluv2.m_r1);\n        const s1g = sub2 * (284517 * Hsluv2.m_g0 - 94839 * Hsluv2.m_g2);\n        const s2g = sub2 * (838422 * Hsluv2.m_g2 + 769860 * Hsluv2.m_g1 + 731718 * Hsluv2.m_g0);\n        const s3g = sub2 * (632260 * Hsluv2.m_g2 - 126452 * Hsluv2.m_g1);\n        const s1b = sub2 * (284517 * Hsluv2.m_b0 - 94839 * Hsluv2.m_b2);\n        const s2b = sub2 * (838422 * Hsluv2.m_b2 + 769860 * Hsluv2.m_b1 + 731718 * Hsluv2.m_b0);\n        const s3b = sub2 * (632260 * Hsluv2.m_b2 - 126452 * Hsluv2.m_b1);\n        this.r0s = s1r / s3r;\n        this.r0i = s2r * l / s3r;\n        this.r1s = s1r / (s3r + 126452);\n        this.r1i = (s2r - 769860) * l / (s3r + 126452);\n        this.g0s = s1g / s3g;\n        this.g0i = s2g * l / s3g;\n        this.g1s = s1g / (s3g + 126452);\n        this.g1i = (s2g - 769860) * l / (s3g + 126452);\n        this.b0s = s1b / s3b;\n        this.b0i = s2b * l / s3b;\n        this.b1s = s1b / (s3b + 126452);\n        this.b1i = (s2b - 769860) * l / (s3b + 126452);\n      }\n      calcMaxChromaHpluv() {\n        const r0 = Hsluv2.distanceFromOrigin(this.r0s, this.r0i);\n        const r1 = Hsluv2.distanceFromOrigin(this.r1s, this.r1i);\n        const g0 = Hsluv2.distanceFromOrigin(this.g0s, this.g0i);\n        const g1 = Hsluv2.distanceFromOrigin(this.g1s, this.g1i);\n        const b0 = Hsluv2.distanceFromOrigin(this.b0s, this.b0i);\n        const b1 = Hsluv2.distanceFromOrigin(this.b1s, this.b1i);\n        return Hsluv2.min6(r0, r1, g0, g1, b0, b1);\n      }\n      calcMaxChromaHsluv(h) {\n        const hueRad = h / 360 * Math.PI * 2;\n        const r0 = Hsluv2.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n        const r1 = Hsluv2.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n        const g0 = Hsluv2.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n        const g1 = Hsluv2.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n        const b0 = Hsluv2.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n        const b1 = Hsluv2.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n        return Hsluv2.min6(r0, r1, g0, g1, b0, b1);\n      }\n      hsluvToLch() {\n        if (this.hsluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hsluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hsluv_l;\n          this.calculateBoundingLines(this.hsluv_l);\n          const max = this.calcMaxChromaHsluv(this.hsluv_h);\n          this.lch_c = max / 100 * this.hsluv_s;\n        }\n        this.lch_h = this.hsluv_h;\n      }\n      lchToHsluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHsluv(this.lch_h);\n          this.hsluv_s = this.lch_c / max * 100;\n          this.hsluv_l = this.lch_l;\n        }\n        this.hsluv_h = this.lch_h;\n      }\n      hpluvToLch() {\n        if (this.hpluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hpluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hpluv_l;\n          this.calculateBoundingLines(this.hpluv_l);\n          const max = this.calcMaxChromaHpluv();\n          this.lch_c = max / 100 * this.hpluv_p;\n        }\n        this.lch_h = this.hpluv_h;\n      }\n      lchToHpluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHpluv();\n          this.hpluv_p = this.lch_c / max * 100;\n          this.hpluv_l = this.lch_l;\n        }\n        this.hpluv_h = this.lch_h;\n      }\n      hsluvToRgb() {\n        this.hsluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hpluvToRgb() {\n        this.hpluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hsluvToHex() {\n        this.hsluvToRgb();\n        this.rgbToHex();\n      }\n      hpluvToHex() {\n        this.hpluvToRgb();\n        this.rgbToHex();\n      }\n      rgbToHsluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHsluv();\n      }\n      rgbToHpluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHpluv();\n      }\n      hexToHsluv() {\n        this.hexToRgb();\n        this.rgbToHsluv();\n      }\n      hexToHpluv() {\n        this.hexToRgb();\n        this.rgbToHpluv();\n      }\n    };\n    exports.Hsluv = Hsluv2;\n    Hsluv2.hexChars = \"0123456789abcdef\";\n    Hsluv2.refY = 1;\n    Hsluv2.refU = 0.19783000664283;\n    Hsluv2.refV = 0.46831999493879;\n    Hsluv2.kappa = 903.2962962;\n    Hsluv2.epsilon = 0.0088564516;\n    Hsluv2.m_r0 = 3.240969941904521;\n    Hsluv2.m_r1 = -1.537383177570093;\n    Hsluv2.m_r2 = -0.498610760293;\n    Hsluv2.m_g0 = -0.96924363628087;\n    Hsluv2.m_g1 = 1.87596750150772;\n    Hsluv2.m_g2 = 0.041555057407175;\n    Hsluv2.m_b0 = 0.055630079696993;\n    Hsluv2.m_b1 = -0.20397695888897;\n    Hsluv2.m_b2 = 1.056971514242878;\n  }\n});\n\n// ../../../node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n  \"../../../node_modules/eventemitter3/index.js\"(exports, module) {\n    \"use strict\";\n    var has = Object.prototype.hasOwnProperty;\n    var prefix2 = \"~\";\n    function Events() {\n    }\n    if (Object.create) {\n      Events.prototype = /* @__PURE__ */ Object.create(null);\n      if (!new Events().__proto__)\n        prefix2 = false;\n    }\n    function EE(fn, context, once) {\n      this.fn = fn;\n      this.context = context;\n      this.once = once || false;\n    }\n    function addListener(emitter, event, fn, context, once) {\n      if (typeof fn !== \"function\") {\n        throw new TypeError(\"The listener must be a function\");\n      }\n      var listener = new EE(fn, context || emitter, once), evt = prefix2 ? prefix2 + event : event;\n      if (!emitter._events[evt])\n        emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn)\n        emitter._events[evt].push(listener);\n      else\n        emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0)\n        emitter._events = new Events();\n      else\n        delete emitter._events[evt];\n    }\n    function EventEmitter2() {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    EventEmitter2.prototype.eventNames = function eventNames() {\n      var names = [], events, name;\n      if (this._eventsCount === 0)\n        return names;\n      for (name in events = this._events) {\n        if (has.call(events, name))\n          names.push(prefix2 ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events));\n      }\n      return names;\n    };\n    EventEmitter2.prototype.listeners = function listeners(event) {\n      var evt = prefix2 ? prefix2 + event : event, handlers = this._events[evt];\n      if (!handlers)\n        return [];\n      if (handlers.fn)\n        return [handlers.fn];\n      for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n        ee[i] = handlers[i].fn;\n      }\n      return ee;\n    };\n    EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n      var evt = prefix2 ? prefix2 + event : event, listeners = this._events[evt];\n      if (!listeners)\n        return 0;\n      if (listeners.fn)\n        return 1;\n      return listeners.length;\n    };\n    EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return false;\n      var listeners = this._events[evt], len = arguments.length, args, i;\n      if (listeners.fn) {\n        if (listeners.once)\n          this.removeListener(event, listeners.fn, void 0, true);\n        switch (len) {\n          case 1:\n            return listeners.fn.call(listeners.context), true;\n          case 2:\n            return listeners.fn.call(listeners.context, a1), true;\n          case 3:\n            return listeners.fn.call(listeners.context, a1, a2), true;\n          case 4:\n            return listeners.fn.call(listeners.context, a1, a2, a3), true;\n          case 5:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n          case 6:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n        }\n        for (i = 1, args = new Array(len - 1); i < len; i++) {\n          args[i - 1] = arguments[i];\n        }\n        listeners.fn.apply(listeners.context, args);\n      } else {\n        var length = listeners.length, j;\n        for (i = 0; i < length; i++) {\n          if (listeners[i].once)\n            this.removeListener(event, listeners[i].fn, void 0, true);\n          switch (len) {\n            case 1:\n              listeners[i].fn.call(listeners[i].context);\n              break;\n            case 2:\n              listeners[i].fn.call(listeners[i].context, a1);\n              break;\n            case 3:\n              listeners[i].fn.call(listeners[i].context, a1, a2);\n              break;\n            case 4:\n              listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n              break;\n            default:\n              if (!args)\n                for (j = 1, args = new Array(len - 1); j < len; j++) {\n                  args[j - 1] = arguments[j];\n                }\n              listeners[i].fn.apply(listeners[i].context, args);\n          }\n        }\n      }\n      return true;\n    };\n    EventEmitter2.prototype.on = function on(event, fn, context) {\n      return addListener(this, event, fn, context, false);\n    };\n    EventEmitter2.prototype.once = function once(event, fn, context) {\n      return addListener(this, event, fn, context, true);\n    };\n    EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return this;\n      if (!fn) {\n        clearEvent(this, evt);\n        return this;\n      }\n      var listeners = this._events[evt];\n      if (listeners.fn) {\n        if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n          clearEvent(this, evt);\n        }\n      } else {\n        for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n          if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n            events.push(listeners[i]);\n          }\n        }\n        if (events.length)\n          this._events[evt] = events.length === 1 ? events[0] : events;\n        else\n          clearEvent(this, evt);\n      }\n      return this;\n    };\n    EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n      var evt;\n      if (event) {\n        evt = prefix2 ? prefix2 + event : event;\n        if (this._events[evt])\n          clearEvent(this, evt);\n      } else {\n        this._events = new Events();\n        this._eventsCount = 0;\n      }\n      return this;\n    };\n    EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n    EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n    EventEmitter2.prefixed = prefix2;\n    EventEmitter2.EventEmitter = EventEmitter2;\n    if (\"undefined\" !== typeof module) {\n      module.exports = EventEmitter2;\n    }\n  }\n});\n\n// ../../../node_modules/process/browser.js\nvar require_browser = __commonJS({\n  \"../../../node_modules/process/browser.js\"(exports, module) {\n    var process5 = module.exports = {};\n    var cachedSetTimeout;\n    var cachedClearTimeout;\n    function defaultSetTimout() {\n      throw new Error(\"setTimeout has not been defined\");\n    }\n    function defaultClearTimeout() {\n      throw new Error(\"clearTimeout has not been defined\");\n    }\n    (function() {\n      try {\n        if (typeof setTimeout === \"function\") {\n          cachedSetTimeout = setTimeout;\n        } else {\n          cachedSetTimeout = defaultSetTimout;\n        }\n      } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n      }\n      try {\n        if (typeof clearTimeout === \"function\") {\n          cachedClearTimeout = clearTimeout;\n        } else {\n          cachedClearTimeout = defaultClearTimeout;\n        }\n      } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n      }\n    })();\n    function runTimeout(fun) {\n      if (cachedSetTimeout === setTimeout) {\n        return setTimeout(fun, 0);\n      }\n      if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n      }\n      try {\n        return cachedSetTimeout(fun, 0);\n      } catch (e) {\n        try {\n          return cachedSetTimeout.call(null, fun, 0);\n        } catch (e2) {\n          return cachedSetTimeout.call(this, fun, 0);\n        }\n      }\n    }\n    function runClearTimeout(marker) {\n      if (cachedClearTimeout === clearTimeout) {\n        return clearTimeout(marker);\n      }\n      if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n      }\n      try {\n        return cachedClearTimeout(marker);\n      } catch (e) {\n        try {\n          return cachedClearTimeout.call(null, marker);\n        } catch (e2) {\n          return cachedClearTimeout.call(this, marker);\n        }\n      }\n    }\n    var queue = [];\n    var draining = false;\n    var currentQueue;\n    var queueIndex = -1;\n    function cleanUpNextTick() {\n      if (!draining || !currentQueue) {\n        return;\n      }\n      draining = false;\n      if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n      } else {\n        queueIndex = -1;\n      }\n      if (queue.length) {\n        drainQueue();\n      }\n    }\n    function drainQueue() {\n      if (draining) {\n        return;\n      }\n      var timeout = runTimeout(cleanUpNextTick);\n      draining = true;\n      var len = queue.length;\n      while (len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n          if (currentQueue) {\n            currentQueue[queueIndex].run();\n          }\n        }\n        queueIndex = -1;\n        len = queue.length;\n      }\n      currentQueue = null;\n      draining = false;\n      runClearTimeout(timeout);\n    }\n    process5.nextTick = function(fun) {\n      var args = new Array(arguments.length - 1);\n      if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n          args[i - 1] = arguments[i];\n        }\n      }\n      queue.push(new Item(fun, args));\n      if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n      }\n    };\n    function Item(fun, array) {\n      this.fun = fun;\n      this.array = array;\n    }\n    Item.prototype.run = function() {\n      this.fun.apply(null, this.array);\n    };\n    process5.title = \"browser\";\n    process5.browser = true;\n    process5.env = {};\n    process5.argv = [];\n    process5.version = \"\";\n    process5.versions = {};\n    function noop4() {\n    }\n    process5.on = noop4;\n    process5.addListener = noop4;\n    process5.once = noop4;\n    process5.off = noop4;\n    process5.removeListener = noop4;\n    process5.removeAllListeners = noop4;\n    process5.emit = noop4;\n    process5.prependListener = noop4;\n    process5.prependOnceListener = noop4;\n    process5.listeners = function(name) {\n      return [];\n    };\n    process5.binding = function(name) {\n      throw new Error(\"process.binding is not supported\");\n    };\n    process5.cwd = function() {\n      return \"/\";\n    };\n    process5.chdir = function(dir) {\n      throw new Error(\"process.chdir is not supported\");\n    };\n    process5.umask = function() {\n      return 0;\n    };\n  }\n});\n\n// ../../../node_modules/@juggle/resize-observer/lib/exports/resize-observer.umd.js\nvar require_resize_observer_umd = __commonJS({\n  \"../../../node_modules/@juggle/resize-observer/lib/exports/resize-observer.umd.js\"(exports, module) {\n    (function(global, factory) {\n      typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, factory(global.ResizeObserver = {}));\n    })(exports, function(exports2) {\n      \"use strict\";\n      var resizeObservers = [];\n      var hasActiveObservations = function() {\n        return resizeObservers.some(function(ro) {\n          return ro.activeTargets.length > 0;\n        });\n      };\n      var hasSkippedObservations = function() {\n        return resizeObservers.some(function(ro) {\n          return ro.skippedTargets.length > 0;\n        });\n      };\n      var msg = \"ResizeObserver loop completed with undelivered notifications.\";\n      var deliverResizeLoopError = function() {\n        var event;\n        if (typeof ErrorEvent === \"function\") {\n          event = new ErrorEvent(\"error\", {\n            message: msg\n          });\n        } else {\n          event = document.createEvent(\"Event\");\n          event.initEvent(\"error\", false, false);\n          event.message = msg;\n        }\n        window.dispatchEvent(event);\n      };\n      var ResizeObserverBoxOptions;\n      (function(ResizeObserverBoxOptions2) {\n        ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n        ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n        ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n      })(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\n      var freeze = function(obj) {\n        return Object.freeze(obj);\n      };\n      var ResizeObserverSize = function() {\n        function ResizeObserverSize2(inlineSize, blockSize) {\n          this.inlineSize = inlineSize;\n          this.blockSize = blockSize;\n          freeze(this);\n        }\n        return ResizeObserverSize2;\n      }();\n      var DOMRectReadOnly = function() {\n        function DOMRectReadOnly2(x, y, width, height) {\n          this.x = x;\n          this.y = y;\n          this.width = width;\n          this.height = height;\n          this.top = this.y;\n          this.left = this.x;\n          this.bottom = this.top + this.height;\n          this.right = this.left + this.width;\n          return freeze(this);\n        }\n        DOMRectReadOnly2.prototype.toJSON = function() {\n          var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n          return { x, y, top, right, bottom, left, width, height };\n        };\n        DOMRectReadOnly2.fromRect = function(rectangle) {\n          return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n        };\n        return DOMRectReadOnly2;\n      }();\n      var isSVG = function(target) {\n        return target instanceof SVGElement && \"getBBox\" in target;\n      };\n      var isHidden = function(target) {\n        if (isSVG(target)) {\n          var _a = target.getBBox(), width = _a.width, height = _a.height;\n          return !width && !height;\n        }\n        var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n        return !(offsetWidth || offsetHeight || target.getClientRects().length);\n      };\n      var isElement = function(obj) {\n        var _a, _b;\n        if (obj instanceof Element) {\n          return true;\n        }\n        var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n        return !!(scope && obj instanceof scope.Element);\n      };\n      var isReplacedElement = function(target) {\n        switch (target.tagName) {\n          case \"INPUT\":\n            if (target.type !== \"image\") {\n              break;\n            }\n          case \"VIDEO\":\n          case \"AUDIO\":\n          case \"EMBED\":\n          case \"OBJECT\":\n          case \"CANVAS\":\n          case \"IFRAME\":\n          case \"IMG\":\n            return true;\n        }\n        return false;\n      };\n      var global = typeof window !== \"undefined\" ? window : {};\n      var cache2 = /* @__PURE__ */ new WeakMap();\n      var scrollRegexp = /auto|scroll/;\n      var verticalRegexp = /^tb|vertical/;\n      var IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\n      var parseDimension = function(pixel) {\n        return parseFloat(pixel || \"0\");\n      };\n      var size = function(inlineSize, blockSize, switchSizes) {\n        if (inlineSize === void 0) {\n          inlineSize = 0;\n        }\n        if (blockSize === void 0) {\n          blockSize = 0;\n        }\n        if (switchSizes === void 0) {\n          switchSizes = false;\n        }\n        return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n      };\n      var zeroBoxes = freeze({\n        devicePixelContentBoxSize: size(),\n        borderBoxSize: size(),\n        contentBoxSize: size(),\n        contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n      });\n      var calculateBoxSizes = function(target, forceRecalculation) {\n        if (forceRecalculation === void 0) {\n          forceRecalculation = false;\n        }\n        if (cache2.has(target) && !forceRecalculation) {\n          return cache2.get(target);\n        }\n        if (isHidden(target)) {\n          cache2.set(target, zeroBoxes);\n          return zeroBoxes;\n        }\n        var cs = getComputedStyle(target);\n        var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n        var removePadding = !IE && cs.boxSizing === \"border-box\";\n        var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n        var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n        var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n        var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n        var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n        var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n        var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n        var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n        var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n        var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n        var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n        var horizontalPadding = paddingLeft + paddingRight;\n        var verticalPadding = paddingTop + paddingBottom;\n        var horizontalBorderArea = borderLeft + borderRight;\n        var verticalBorderArea = borderTop + borderBottom;\n        var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n        var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n        var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n        var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n        var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n        var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n        var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n        var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n        var boxes = freeze({\n          devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n          borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n          contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n          contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n        });\n        cache2.set(target, boxes);\n        return boxes;\n      };\n      var calculateBoxSize = function(target, observedBox, forceRecalculation) {\n        var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n        switch (observedBox) {\n          case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n            return devicePixelContentBoxSize;\n          case ResizeObserverBoxOptions.BORDER_BOX:\n            return borderBoxSize;\n          default:\n            return contentBoxSize;\n        }\n      };\n      var ResizeObserverEntry = function() {\n        function ResizeObserverEntry2(target) {\n          var boxes = calculateBoxSizes(target);\n          this.target = target;\n          this.contentRect = boxes.contentRect;\n          this.borderBoxSize = freeze([boxes.borderBoxSize]);\n          this.contentBoxSize = freeze([boxes.contentBoxSize]);\n          this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n        }\n        return ResizeObserverEntry2;\n      }();\n      var calculateDepthForNode = function(node) {\n        if (isHidden(node)) {\n          return Infinity;\n        }\n        var depth = 0;\n        var parent = node.parentNode;\n        while (parent) {\n          depth += 1;\n          parent = parent.parentNode;\n        }\n        return depth;\n      };\n      var broadcastActiveObservations = function() {\n        var shallowestDepth = Infinity;\n        var callbacks2 = [];\n        resizeObservers.forEach(function processObserver(ro) {\n          if (ro.activeTargets.length === 0) {\n            return;\n          }\n          var entries = [];\n          ro.activeTargets.forEach(function processTarget(ot) {\n            var entry = new ResizeObserverEntry(ot.target);\n            var targetDepth = calculateDepthForNode(ot.target);\n            entries.push(entry);\n            ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n            if (targetDepth < shallowestDepth) {\n              shallowestDepth = targetDepth;\n            }\n          });\n          callbacks2.push(function resizeObserverCallback() {\n            ro.callback.call(ro.observer, entries, ro.observer);\n          });\n          ro.activeTargets.splice(0, ro.activeTargets.length);\n        });\n        for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n          var callback = callbacks_1[_i];\n          callback();\n        }\n        return shallowestDepth;\n      };\n      var gatherActiveObservationsAtDepth = function(depth) {\n        resizeObservers.forEach(function processObserver(ro) {\n          ro.activeTargets.splice(0, ro.activeTargets.length);\n          ro.skippedTargets.splice(0, ro.skippedTargets.length);\n          ro.observationTargets.forEach(function processTarget(ot) {\n            if (ot.isActive()) {\n              if (calculateDepthForNode(ot.target) > depth) {\n                ro.activeTargets.push(ot);\n              } else {\n                ro.skippedTargets.push(ot);\n              }\n            }\n          });\n        });\n      };\n      var process5 = function() {\n        var depth = 0;\n        gatherActiveObservationsAtDepth(depth);\n        while (hasActiveObservations()) {\n          depth = broadcastActiveObservations();\n          gatherActiveObservationsAtDepth(depth);\n        }\n        if (hasSkippedObservations()) {\n          deliverResizeLoopError();\n        }\n        return depth > 0;\n      };\n      var trigger;\n      var callbacks = [];\n      var notify = function() {\n        return callbacks.splice(0).forEach(function(cb) {\n          return cb();\n        });\n      };\n      var queueMicroTask = function(callback) {\n        if (!trigger) {\n          var toggle_1 = 0;\n          var el_1 = document.createTextNode(\"\");\n          var config = { characterData: true };\n          new MutationObserver(function() {\n            return notify();\n          }).observe(el_1, config);\n          trigger = function() {\n            el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++);\n          };\n        }\n        callbacks.push(callback);\n        trigger();\n      };\n      var queueResizeObserver = function(cb) {\n        queueMicroTask(function ResizeObserver2() {\n          requestAnimationFrame(cb);\n        });\n      };\n      var watching = 0;\n      var isWatching = function() {\n        return !!watching;\n      };\n      var CATCH_PERIOD = 250;\n      var observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\n      var events = [\n        \"resize\",\n        \"load\",\n        \"transitionend\",\n        \"animationend\",\n        \"animationstart\",\n        \"animationiteration\",\n        \"keyup\",\n        \"keydown\",\n        \"mouseup\",\n        \"mousedown\",\n        \"mouseover\",\n        \"mouseout\",\n        \"blur\",\n        \"focus\"\n      ];\n      var time = function(timeout) {\n        if (timeout === void 0) {\n          timeout = 0;\n        }\n        return Date.now() + timeout;\n      };\n      var scheduled = false;\n      var Scheduler = function() {\n        function Scheduler2() {\n          var _this = this;\n          this.stopped = true;\n          this.listener = function() {\n            return _this.schedule();\n          };\n        }\n        Scheduler2.prototype.run = function(timeout) {\n          var _this = this;\n          if (timeout === void 0) {\n            timeout = CATCH_PERIOD;\n          }\n          if (scheduled) {\n            return;\n          }\n          scheduled = true;\n          var until = time(timeout);\n          queueResizeObserver(function() {\n            var elementsHaveResized = false;\n            try {\n              elementsHaveResized = process5();\n            } finally {\n              scheduled = false;\n              timeout = until - time();\n              if (!isWatching()) {\n                return;\n              }\n              if (elementsHaveResized) {\n                _this.run(1e3);\n              } else if (timeout > 0) {\n                _this.run(timeout);\n              } else {\n                _this.start();\n              }\n            }\n          });\n        };\n        Scheduler2.prototype.schedule = function() {\n          this.stop();\n          this.run();\n        };\n        Scheduler2.prototype.observe = function() {\n          var _this = this;\n          var cb = function() {\n            return _this.observer && _this.observer.observe(document.body, observerConfig);\n          };\n          document.body ? cb() : global.addEventListener(\"DOMContentLoaded\", cb);\n        };\n        Scheduler2.prototype.start = function() {\n          var _this = this;\n          if (this.stopped) {\n            this.stopped = false;\n            this.observer = new MutationObserver(this.listener);\n            this.observe();\n            events.forEach(function(name) {\n              return global.addEventListener(name, _this.listener, true);\n            });\n          }\n        };\n        Scheduler2.prototype.stop = function() {\n          var _this = this;\n          if (!this.stopped) {\n            this.observer && this.observer.disconnect();\n            events.forEach(function(name) {\n              return global.removeEventListener(name, _this.listener, true);\n            });\n            this.stopped = true;\n          }\n        };\n        return Scheduler2;\n      }();\n      var scheduler2 = new Scheduler();\n      var updateCount = function(n) {\n        !watching && n > 0 && scheduler2.start();\n        watching += n;\n        !watching && scheduler2.stop();\n      };\n      var skipNotifyOnElement = function(target) {\n        return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n      };\n      var ResizeObservation = function() {\n        function ResizeObservation2(target, observedBox) {\n          this.target = target;\n          this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n          this.lastReportedSize = {\n            inlineSize: 0,\n            blockSize: 0\n          };\n        }\n        ResizeObservation2.prototype.isActive = function() {\n          var size2 = calculateBoxSize(this.target, this.observedBox, true);\n          if (skipNotifyOnElement(this.target)) {\n            this.lastReportedSize = size2;\n          }\n          if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n            return true;\n          }\n          return false;\n        };\n        return ResizeObservation2;\n      }();\n      var ResizeObserverDetail = function() {\n        function ResizeObserverDetail2(resizeObserver, callback) {\n          this.activeTargets = [];\n          this.skippedTargets = [];\n          this.observationTargets = [];\n          this.observer = resizeObserver;\n          this.callback = callback;\n        }\n        return ResizeObserverDetail2;\n      }();\n      var observerMap = /* @__PURE__ */ new WeakMap();\n      var getObservationIndex = function(observationTargets, target) {\n        for (var i = 0; i < observationTargets.length; i += 1) {\n          if (observationTargets[i].target === target) {\n            return i;\n          }\n        }\n        return -1;\n      };\n      var ResizeObserverController = function() {\n        function ResizeObserverController2() {\n        }\n        ResizeObserverController2.connect = function(resizeObserver, callback) {\n          var detail = new ResizeObserverDetail(resizeObserver, callback);\n          observerMap.set(resizeObserver, detail);\n        };\n        ResizeObserverController2.observe = function(resizeObserver, target, options) {\n          var detail = observerMap.get(resizeObserver);\n          var firstObservation = detail.observationTargets.length === 0;\n          if (getObservationIndex(detail.observationTargets, target) < 0) {\n            firstObservation && resizeObservers.push(detail);\n            detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n            updateCount(1);\n            scheduler2.schedule();\n          }\n        };\n        ResizeObserverController2.unobserve = function(resizeObserver, target) {\n          var detail = observerMap.get(resizeObserver);\n          var index = getObservationIndex(detail.observationTargets, target);\n          var lastObservation = detail.observationTargets.length === 1;\n          if (index >= 0) {\n            lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n            detail.observationTargets.splice(index, 1);\n            updateCount(-1);\n          }\n        };\n        ResizeObserverController2.disconnect = function(resizeObserver) {\n          var _this = this;\n          var detail = observerMap.get(resizeObserver);\n          detail.observationTargets.slice().forEach(function(ot) {\n            return _this.unobserve(resizeObserver, ot.target);\n          });\n          detail.activeTargets.splice(0, detail.activeTargets.length);\n        };\n        return ResizeObserverController2;\n      }();\n      var ResizeObserver = function() {\n        function ResizeObserver2(callback) {\n          if (arguments.length === 0) {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n          }\n          if (typeof callback !== \"function\") {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n          }\n          ResizeObserverController.connect(this, callback);\n        }\n        ResizeObserver2.prototype.observe = function(target, options) {\n          if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n          }\n          if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n          }\n          ResizeObserverController.observe(this, target, options);\n        };\n        ResizeObserver2.prototype.unobserve = function(target) {\n          if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n          }\n          if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n          }\n          ResizeObserverController.unobserve(this, target);\n        };\n        ResizeObserver2.prototype.disconnect = function() {\n          ResizeObserverController.disconnect(this);\n        };\n        ResizeObserver2.toString = function() {\n          return \"function ResizeObserver () { [polyfill code] }\";\n        };\n        return ResizeObserver2;\n      }();\n      exports2.ResizeObserver = ResizeObserver;\n      exports2.ResizeObserverEntry = ResizeObserverEntry;\n      exports2.ResizeObserverSize = ResizeObserverSize;\n      Object.defineProperty(exports2, \"__esModule\", { value: true });\n    });\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\nvar require_react_is_production_min = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\"(exports) {\n    \"use strict\";\n    var b = \"function\" === typeof Symbol && Symbol.for;\n    var c = b ? Symbol.for(\"react.element\") : 60103;\n    var d = b ? Symbol.for(\"react.portal\") : 60106;\n    var e = b ? Symbol.for(\"react.fragment\") : 60107;\n    var f = b ? Symbol.for(\"react.strict_mode\") : 60108;\n    var g = b ? Symbol.for(\"react.profiler\") : 60114;\n    var h = b ? Symbol.for(\"react.provider\") : 60109;\n    var k = b ? Symbol.for(\"react.context\") : 60110;\n    var l = b ? Symbol.for(\"react.async_mode\") : 60111;\n    var m2 = b ? Symbol.for(\"react.concurrent_mode\") : 60111;\n    var n = b ? Symbol.for(\"react.forward_ref\") : 60112;\n    var p = b ? Symbol.for(\"react.suspense\") : 60113;\n    var q = b ? Symbol.for(\"react.suspense_list\") : 60120;\n    var r = b ? Symbol.for(\"react.memo\") : 60115;\n    var t = b ? Symbol.for(\"react.lazy\") : 60116;\n    var v = b ? Symbol.for(\"react.block\") : 60121;\n    var w = b ? Symbol.for(\"react.fundamental\") : 60117;\n    var x = b ? Symbol.for(\"react.responder\") : 60118;\n    var y = b ? Symbol.for(\"react.scope\") : 60119;\n    function z(a) {\n      if (\"object\" === typeof a && null !== a) {\n        var u = a.$$typeof;\n        switch (u) {\n          case c:\n            switch (a = a.type, a) {\n              case l:\n              case m2:\n              case e:\n              case g:\n              case f:\n              case p:\n                return a;\n              default:\n                switch (a = a && a.$$typeof, a) {\n                  case k:\n                  case n:\n                  case t:\n                  case r:\n                  case h:\n                    return a;\n                  default:\n                    return u;\n                }\n            }\n          case d:\n            return u;\n        }\n      }\n    }\n    function A(a) {\n      return z(a) === m2;\n    }\n    exports.AsyncMode = l;\n    exports.ConcurrentMode = m2;\n    exports.ContextConsumer = k;\n    exports.ContextProvider = h;\n    exports.Element = c;\n    exports.ForwardRef = n;\n    exports.Fragment = e;\n    exports.Lazy = t;\n    exports.Memo = r;\n    exports.Portal = d;\n    exports.Profiler = g;\n    exports.StrictMode = f;\n    exports.Suspense = p;\n    exports.isAsyncMode = function(a) {\n      return A(a) || z(a) === l;\n    };\n    exports.isConcurrentMode = A;\n    exports.isContextConsumer = function(a) {\n      return z(a) === k;\n    };\n    exports.isContextProvider = function(a) {\n      return z(a) === h;\n    };\n    exports.isElement = function(a) {\n      return \"object\" === typeof a && null !== a && a.$$typeof === c;\n    };\n    exports.isForwardRef = function(a) {\n      return z(a) === n;\n    };\n    exports.isFragment = function(a) {\n      return z(a) === e;\n    };\n    exports.isLazy = function(a) {\n      return z(a) === t;\n    };\n    exports.isMemo = function(a) {\n      return z(a) === r;\n    };\n    exports.isPortal = function(a) {\n      return z(a) === d;\n    };\n    exports.isProfiler = function(a) {\n      return z(a) === g;\n    };\n    exports.isStrictMode = function(a) {\n      return z(a) === f;\n    };\n    exports.isSuspense = function(a) {\n      return z(a) === p;\n    };\n    exports.isValidElementType = function(a) {\n      return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m2 || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n    };\n    exports.typeOf = z;\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js\"(exports, module) {\n    \"use strict\";\n    if (true) {\n      module.exports = require_react_is_production_min();\n    } else {\n      module.exports = null;\n    }\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar require_hoist_non_react_statics_cjs = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\"(exports, module) {\n    \"use strict\";\n    var reactIs = require_react_is();\n    var REACT_STATICS = {\n      childContextTypes: true,\n      contextType: true,\n      contextTypes: true,\n      defaultProps: true,\n      displayName: true,\n      getDefaultProps: true,\n      getDerivedStateFromError: true,\n      getDerivedStateFromProps: true,\n      mixins: true,\n      propTypes: true,\n      type: true\n    };\n    var KNOWN_STATICS = {\n      name: true,\n      length: true,\n      prototype: true,\n      caller: true,\n      callee: true,\n      arguments: true,\n      arity: true\n    };\n    var FORWARD_REF_STATICS = {\n      \"$$typeof\": true,\n      render: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true\n    };\n    var MEMO_STATICS = {\n      \"$$typeof\": true,\n      compare: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true,\n      type: true\n    };\n    var TYPE_STATICS = {};\n    TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n    TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n    function getStatics(component) {\n      if (reactIs.isMemo(component)) {\n        return MEMO_STATICS;\n      }\n      return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n    }\n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = Object.prototype;\n    function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n      if (typeof sourceComponent !== \"string\") {\n        if (objectPrototype) {\n          var inheritedComponent = getPrototypeOf(sourceComponent);\n          if (inheritedComponent && inheritedComponent !== objectPrototype) {\n            hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n          }\n        }\n        var keys3 = getOwnPropertyNames(sourceComponent);\n        if (getOwnPropertySymbols) {\n          keys3 = keys3.concat(getOwnPropertySymbols(sourceComponent));\n        }\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n        for (var i = 0; i < keys3.length; ++i) {\n          var key7 = keys3[i];\n          if (!KNOWN_STATICS[key7] && !(blacklist && blacklist[key7]) && !(sourceStatics && sourceStatics[key7]) && !(targetStatics && targetStatics[key7])) {\n            var descriptor = getOwnPropertyDescriptor(sourceComponent, key7);\n            try {\n              defineProperty(targetComponent, key7, descriptor);\n            } catch (e) {\n            }\n          }\n        }\n      }\n      return targetComponent;\n    }\n    module.exports = hoistNonReactStatics;\n  }\n});\n\n// ../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\nvar require_fontfaceobserver_standalone = __commonJS({\n  \"../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\"(exports, module) {\n    (function() {\n      function l(a, b) {\n        document.addEventListener ? a.addEventListener(\"scroll\", b, false) : a.attachEvent(\"scroll\", b);\n      }\n      function m2(a) {\n        document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function c() {\n          document.removeEventListener(\"DOMContentLoaded\", c);\n          a();\n        }) : document.attachEvent(\"onreadystatechange\", function k() {\n          if (\"interactive\" == document.readyState || \"complete\" == document.readyState)\n            document.detachEvent(\"onreadystatechange\", k), a();\n        });\n      }\n      ;\n      function t(a) {\n        this.a = document.createElement(\"div\");\n        this.a.setAttribute(\"aria-hidden\", \"true\");\n        this.a.appendChild(document.createTextNode(a));\n        this.b = document.createElement(\"span\");\n        this.c = document.createElement(\"span\");\n        this.h = document.createElement(\"span\");\n        this.f = document.createElement(\"span\");\n        this.g = -1;\n        this.b.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.c.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.f.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.h.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n        this.b.appendChild(this.h);\n        this.c.appendChild(this.f);\n        this.a.appendChild(this.b);\n        this.a.appendChild(this.c);\n      }\n      function u(a, b) {\n        a.a.style.cssText = \"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\" + b + \";\";\n      }\n      function z(a) {\n        var b = a.a.offsetWidth, c = b + 100;\n        a.f.style.width = c + \"px\";\n        a.c.scrollLeft = c;\n        a.b.scrollLeft = a.b.scrollWidth + 100;\n        return a.g !== b ? (a.g = b, true) : false;\n      }\n      function A(a, b) {\n        function c() {\n          var a2 = k;\n          z(a2) && a2.a.parentNode && b(a2.g);\n        }\n        var k = a;\n        l(a.b, c);\n        l(a.c, c);\n        z(a);\n      }\n      ;\n      function B(a, b) {\n        var c = b || {};\n        this.family = a;\n        this.style = c.style || \"normal\";\n        this.weight = c.weight || \"normal\";\n        this.stretch = c.stretch || \"normal\";\n      }\n      var C = null, D = null, E = null, F = null;\n      function G() {\n        if (null === D)\n          if (J() && /Apple/.test(window.navigator.vendor)) {\n            var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);\n            D = !!a && 603 > parseInt(a[1], 10);\n          } else\n            D = false;\n        return D;\n      }\n      function J() {\n        null === F && (F = !!document.fonts);\n        return F;\n      }\n      function K() {\n        if (null === E) {\n          var a = document.createElement(\"div\");\n          try {\n            a.style.font = \"condensed 100px sans-serif\";\n          } catch (b) {\n          }\n          E = \"\" !== a.style.font;\n        }\n        return E;\n      }\n      function L(a, b) {\n        return [a.style, a.weight, K() ? a.stretch : \"\", \"100px\", b].join(\" \");\n      }\n      B.prototype.load = function(a, b) {\n        var c = this, k = a || \"BESbswy\", r = 0, n = b || 3e3, H = (/* @__PURE__ */ new Date()).getTime();\n        return new Promise(function(a2, b2) {\n          if (J() && !G()) {\n            var M = new Promise(function(a3, b3) {\n              function e() {\n                (/* @__PURE__ */ new Date()).getTime() - H >= n ? b3(Error(\"\" + n + \"ms timeout exceeded\")) : document.fonts.load(L(c, '\"' + c.family + '\"'), k).then(function(c2) {\n                  1 <= c2.length ? a3() : setTimeout(e, 25);\n                }, b3);\n              }\n              e();\n            }), N = new Promise(function(a3, c2) {\n              r = setTimeout(function() {\n                c2(Error(\"\" + n + \"ms timeout exceeded\"));\n              }, n);\n            });\n            Promise.race([N, M]).then(\n              function() {\n                clearTimeout(r);\n                a2(c);\n              },\n              b2\n            );\n          } else\n            m2(function() {\n              function v() {\n                var b3;\n                if (b3 = -1 != f && -1 != g || -1 != f && -1 != h || -1 != g && -1 != h)\n                  (b3 = f != g && f != h && g != h) || (null === C && (b3 = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), C = !!b3 && (536 > parseInt(b3[1], 10) || 536 === parseInt(b3[1], 10) && 11 >= parseInt(b3[2], 10))), b3 = C && (f == w && g == w && h == w || f == x && g == x && h == x || f == y && g == y && h == y)), b3 = !b3;\n                b3 && (d.parentNode && d.parentNode.removeChild(d), clearTimeout(r), a2(c));\n              }\n              function I() {\n                if ((/* @__PURE__ */ new Date()).getTime() - H >= n)\n                  d.parentNode && d.parentNode.removeChild(d), b2(Error(\"\" + n + \"ms timeout exceeded\"));\n                else {\n                  var a3 = document.hidden;\n                  if (true === a3 || void 0 === a3)\n                    f = e.a.offsetWidth, g = p.a.offsetWidth, h = q.a.offsetWidth, v();\n                  r = setTimeout(I, 50);\n                }\n              }\n              var e = new t(k), p = new t(k), q = new t(k), f = -1, g = -1, h = -1, w = -1, x = -1, y = -1, d = document.createElement(\"div\");\n              d.dir = \"ltr\";\n              u(e, L(c, \"sans-serif\"));\n              u(p, L(c, \"serif\"));\n              u(q, L(c, \"monospace\"));\n              d.appendChild(e.a);\n              d.appendChild(p.a);\n              d.appendChild(q.a);\n              document.body.appendChild(d);\n              w = e.a.offsetWidth;\n              x = p.a.offsetWidth;\n              y = q.a.offsetWidth;\n              I();\n              A(e, function(a3) {\n                f = a3;\n                v();\n              });\n              u(\n                e,\n                L(c, '\"' + c.family + '\",sans-serif')\n              );\n              A(p, function(a3) {\n                g = a3;\n                v();\n              });\n              u(p, L(c, '\"' + c.family + '\",serif'));\n              A(q, function(a3) {\n                h = a3;\n                v();\n              });\n              u(q, L(c, '\"' + c.family + '\",monospace'));\n            });\n        });\n      };\n      \"object\" === typeof module ? module.exports = B : (window.FontFaceObserver = B, window.FontFaceObserver.prototype.load = B.prototype.load);\n    })();\n  }\n});\n\n// ../../library/src/router/utils.ts\nimport React, { useLayoutEffect } from \"react\";\nvar preloadKey = \"preload\";\nfunction isLazyComponentType(componentType) {\n  return typeof componentType === \"object\" && componentType !== null && !React.isValidElement(componentType) && preloadKey in componentType;\n}\nfunction lazy(factory) {\n  const LazyComponent = React.lazy(factory);\n  let factoryPromise;\n  let LoadedComponent;\n  const Component18 = React.forwardRef(function LazyWithPreload(props, ref) {\n    return React.createElement(LoadedComponent ?? LazyComponent, ref ? { ref, ...props } : props);\n  });\n  Component18.preload = () => {\n    if (!factoryPromise) {\n      factoryPromise = factory().then((module) => {\n        LoadedComponent = module.default;\n        return LoadedComponent;\n      });\n    }\n    return factoryPromise;\n  };\n  return Component18;\n}\nfunction getRouteElementId(route, hash2) {\n  if (hash2 && route) {\n    if (route.elements && hash2 in route.elements) {\n      return route.elements[hash2];\n    } else {\n      return hash2;\n    }\n  }\n  return void 0;\n}\nfunction yieldToMain(options) {\n  if (\"scheduler\" in window) {\n    if (\"yield\" in scheduler)\n      return scheduler.yield(options);\n    if (\"postTask\" in scheduler)\n      return scheduler.postTask(() => {\n      }, options);\n  }\n  if ((options == null ? void 0 : options.priority) === \"user-blocking\") {\n    return Promise.resolve();\n  }\n  return new Promise((resolve) => {\n    setTimeout(resolve);\n  });\n}\nasync function yieldBefore(fn, options) {\n  await yieldToMain(options);\n  return fn();\n}\nfunction interactionResponse(options) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, 100);\n    requestAnimationFrame(() => {\n      void yieldBefore(resolve, options);\n    });\n  });\n}\nfunction useAfterPaintEffect(effectFn, deps, opts, useEffectFn = useLayoutEffect) {\n  useEffectFn(() => {\n    const runAfterPaint = async (fn) => {\n      await interactionResponse(opts);\n      return fn();\n    };\n    const runPromise = runAfterPaint(effectFn);\n    return () => {\n      void (async () => {\n        const cleanup = await runPromise;\n        if (!cleanup)\n          return;\n        void runAfterPaint(cleanup);\n      })();\n    };\n  }, deps);\n}\nvar EMPTY_ARRAY = [];\nvar requestIdleCallback = /* @__PURE__ */ (() => {\n  return typeof window !== \"undefined\" ? window.requestIdleCallback || window.setTimeout : setTimeout;\n})();\n\n// ../../library/src/router/useRouteElementId.ts\nimport React5 from \"react\";\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport React4, { useContext } from \"react\";\n\n// ../../library/src/utils/objectKeys.ts\nvar objectKeys = Object.keys;\n\n// ../../library/src/render/utils/isEqual.ts\nfunction hasProp(o, prop) {\n  return Object.prototype.hasOwnProperty.call(o, prop);\n}\nvar equalsKey = \"equals\";\nfunction withEquals(o) {\n  if (o === null)\n    return false;\n  if (!(equalsKey in o))\n    return false;\n  return typeof o.equals === \"function\";\n}\nfunction valueEqual(a, b) {\n  if (a === b)\n    return true;\n  return a !== a && b !== b;\n}\nfunction arrayShallowEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length)\n    return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!valueEqual(a[i], b[i]))\n      return false;\n  }\n  return true;\n}\nfunction arrayDeepEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length)\n    return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!equal(a[i], b[i], true))\n      return false;\n  }\n  return true;\n}\nfunction mapShallowEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!valueEqual(aValue, b.get(key7)))\n      return false;\n  }\n  return true;\n}\nfunction mapDeepEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!equal(aValue, b.get(key7), true))\n      return false;\n  }\n  return true;\n}\nfunction setEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const aValue of a.keys()) {\n    if (!b.has(aValue))\n      return false;\n  }\n  return true;\n}\nfunction objectShallowEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length)\n    return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7))\n      return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!valueEqual(a[key7], b[key7]))\n      return false;\n  }\n  return true;\n}\nfunction objectDeepEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length)\n    return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7))\n      return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!equal(a[key7], b[key7], true))\n      return false;\n  }\n  return true;\n}\nfunction equal(a, b, deep) {\n  if (a === b)\n    return true;\n  if (!a || !b)\n    return a !== a && b !== b;\n  const typeA = typeof a;\n  const typeB = typeof b;\n  if (typeA !== typeB)\n    return false;\n  if (typeA !== \"object\")\n    return false;\n  const aIsArray = Array.isArray(a);\n  const bIsArray = Array.isArray(b);\n  if (aIsArray && bIsArray) {\n    if (deep) {\n      return arrayDeepEqual(a, b);\n    } else {\n      return arrayShallowEqual(a, b);\n    }\n  } else if (aIsArray !== bIsArray) {\n    return false;\n  }\n  const aIsMap = a instanceof Map;\n  const bIsMap = b instanceof Map;\n  if (aIsMap && bIsMap) {\n    if (deep) {\n      return mapDeepEqual(a, b);\n    } else {\n      return mapShallowEqual(a, b);\n    }\n  } else if (aIsMap !== bIsMap) {\n    return false;\n  }\n  const aIsSet = a instanceof Set;\n  const bIsSet = b instanceof Set;\n  if (aIsSet && bIsSet) {\n    return setEqual(a, b);\n  } else if (aIsSet !== bIsSet) {\n    return false;\n  }\n  const dateA = a instanceof Date;\n  const dateB = b instanceof Date;\n  if (dateA && dateB) {\n    return a.getTime() === b.getTime();\n  } else if (dateA !== dateB) {\n    return false;\n  }\n  const regexpA = a instanceof RegExp;\n  const regexpB = b instanceof RegExp;\n  if (regexpA && regexpB) {\n    return a.toString() === b.toString();\n  } else if (regexpA !== regexpB) {\n    return false;\n  }\n  if (withEquals(a) && withEquals(b)) {\n    return a.equals(b);\n  }\n  if (deep) {\n    return objectDeepEqual(a, b);\n  } else {\n    return objectShallowEqual(a, b);\n  }\n}\nfunction isEqual(a, b, deep = true) {\n  try {\n    return equal(a, b, deep);\n  } catch (error) {\n    if (error instanceof Error && /stack|recursion/iu.exec(error.message)) {\n      console.warn(\"Warning: isEqual does not handle circular references.\", error.name, error.message);\n      return false;\n    }\n    throw error;\n  }\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport React3 from \"react\";\n\n// ../../library/src/router/useGetRouteCallback.ts\nimport React2 from \"react\";\nfunction useGetRouteCallback(routes) {\n  return React2.useCallback((routeId) => routes[routeId], [routes]);\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar RouterContext = /* @__PURE__ */ (() => React3.createContext({}))();\nfunction RouterAPIProvider({ api, children }) {\n  return /* @__PURE__ */ jsx(RouterContext.Provider, { value: api, children });\n}\nfunction useRouter() {\n  return React3.useContext(RouterContext);\n}\nfunction RoutesProvider({ routes, children }) {\n  const getRoute = useGetRouteCallback(routes);\n  return /* @__PURE__ */ jsx(RouterContext.Provider, { value: { getRoute }, children });\n}\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar CurrentRouteContext = /* @__PURE__ */ (() => React4.createContext(void 0))();\nfunction useCurrentRoute() {\n  var _a;\n  const router = useRouter();\n  const override = useContext(CurrentRouteContext);\n  const id = override ?? router.currentRouteId;\n  if (!id)\n    return void 0;\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, id);\n  if (!route)\n    return void 0;\n  return {\n    ...route,\n    id,\n    pathVariables: override ? void 0 : router.currentPathVariables\n  };\n}\nfunction useCurrentRouteKey() {\n  const currentRoute = useCurrentRoute();\n  if (!currentRoute)\n    return void 0;\n  return `${currentRoute.id}-${JSON.stringify(currentRoute.pathVariables)}`;\n}\nfunction useCurrentRouteId() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.id;\n}\nfunction useOnRouteChange(cb) {\n  const currentRoute = useCurrentRoute();\n  const [lastRoute, setLastRoute] = React4.useState(currentRoute);\n  if (isEqual(lastRoute, currentRoute) || !currentRoute)\n    return;\n  setLastRoute(currentRoute);\n  cb(currentRoute);\n}\n\n// ../../library/src/router/useRoute.ts\nfunction useRoute(routeId) {\n  var _a;\n  const routerAPI = useRouter();\n  if (!routeId)\n    return void 0;\n  return (_a = routerAPI.getRoute) == null ? void 0 : _a.call(routerAPI, routeId);\n}\n\n// ../../library/src/router/useRouteElementId.ts\nfunction useRouteElementId(id, targetRouteId) {\n  const currentRoute = useCurrentRoute();\n  const route = useRoute(targetRouteId) ?? currentRoute;\n  return React5.useMemo(() => {\n    if (!route)\n      return id;\n    return getRouteElementId(route, id);\n  }, [id, route]);\n}\n\n// ../../library/src/router/useCurrentPathVariables.tsx\nfunction useCurrentPathVariables() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n}\n\n// ../../library/src/router/useRouteHandler.ts\nimport React6 from \"react\";\n\n// ../../library/src/router/useRoutePreloader.ts\nimport { useEffect } from \"react\";\n\n// ../../library/src/utils/utils.ts\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isBoolean(value) {\n  return typeof value === \"boolean\";\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return Number.isFinite(value);\n}\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isObject(value) {\n  return value !== null && typeof value === \"object\" && !isArray(value);\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\";\n}\nfunction isNull(value) {\n  return value === null;\n}\nfunction isNullish(value) {\n  return value == null;\n}\nfunction isValidDate(value) {\n  return value instanceof Date && !Number.isNaN(value.getTime());\n}\nfunction isGenerator(value) {\n  return isObject(value) && isFunction(value.return);\n}\nvar noop = () => {\n};\nvar isBot = /* @__PURE__ */ (() => {\n  return typeof window !== \"undefined\" && /bot|-google|google-|yandex|ia_archiver/iu.test(navigator.userAgent);\n})();\n\n// ../../library/src/router/useRoutePreloader.ts\nvar shouldPreloadBasedOnUA = !isBot;\nfunction useRoutePreloader(routeIds, enabled = true) {\n  const { getRoute } = useRouter();\n  useEffect(() => {\n    if (!getRoute || !enabled || !shouldPreloadBasedOnUA)\n      return;\n    for (const routeId of routeIds) {\n      void preloadRoute(getRoute(routeId));\n    }\n  }, [routeIds, getRoute, enabled]);\n}\nasync function preloadRoute(route) {\n  if (!shouldPreloadBasedOnUA || !route)\n    return;\n  const component = route.page;\n  if (!component || !isLazyComponentType(component))\n    return;\n  await yieldToMain();\n  try {\n    await component.preload();\n  } catch (e) {\n    if (false)\n      console.warn(\"Preload failed\", route, e);\n  }\n}\n\n// ../../library/src/router/useRouteHandler.ts\nfunction useRouteHandler(routeId, preload = false, elementId) {\n  const { navigate } = useRouter();\n  useRoutePreloader([routeId], preload);\n  const handler = React6.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId]);\n  return handler;\n}\n\n// ../../library/src/router/history.ts\nimport { useCallback as useCallback3, useEffect as useEffect3, useLayoutEffect as useLayoutEffect2, useRef as useRef3 } from \"react\";\n\n// ../../library/src/utils/safeWindow.ts\nvar mockWindow = {\n  addEventListener: () => {\n  },\n  removeEventListener: () => {\n  },\n  dispatchEvent: () => false,\n  ResizeObserver: void 0,\n  onpointerdown: false,\n  onpointermove: false,\n  onpointerup: false,\n  ontouchstart: false,\n  ontouchmove: false,\n  ontouchend: false,\n  onmousedown: false,\n  onmousemove: false,\n  onmouseup: false,\n  devicePixelRatio: 1,\n  scrollX: 0,\n  scrollY: 0,\n  location: {\n    hash: \"\",\n    hostname: \"\",\n    href: \"\",\n    origin: \"\",\n    pathname: \"\",\n    search: \"\"\n  },\n  document: {\n    baseURI: \"\",\n    cookie: \"\",\n    referrer: null\n  },\n  setTimeout: () => 0,\n  clearTimeout: () => {\n  },\n  setInterval: () => 0,\n  clearInterval: () => {\n  },\n  requestAnimationFrame: () => 0,\n  cancelAnimationFrame: () => {\n  },\n  requestIdleCallback: () => 0,\n  getSelection: () => null,\n  matchMedia: (query) => {\n    return {\n      matches: false,\n      media: query,\n      onchange: () => {\n      },\n      addEventListener: () => {\n      },\n      removeEventListener: () => {\n      },\n      addListener: () => {\n      },\n      removeListener: () => {\n      },\n      dispatchEvent: () => false\n    };\n  },\n  innerHeight: 0,\n  innerWidth: 0,\n  SVGSVGElement: {},\n  open: function(_url, _target, _features) {\n  },\n  __framer_events: []\n};\nvar safeWindow = typeof window === \"undefined\" ? mockWindow : window;\n\n// ../../library/src/utils/sendTrackingEvent.ts\nvar timezone;\nvar visitorLocale;\nfunction setTimezoneAndLocaleForTracking() {\n  const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();\n  timezone = resolvedDateTimeOptions.timeZone;\n  visitorLocale = resolvedDateTimeOptions.locale;\n}\nrequestIdleCallback(setTimezoneAndLocaleForTracking);\nfunction sendTrackingEvent(eventType, eventData) {\n  if (!safeWindow.__framer_events)\n    return;\n  if (!timezone || !visitorLocale)\n    setTimezoneAndLocaleForTracking();\n  safeWindow.__framer_events.push([\n    eventType,\n    {\n      // Base properties common to all events\n      referrer: null,\n      // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.\n      url: safeWindow.location.href,\n      hostname: safeWindow.location.hostname || null,\n      pathname: safeWindow.location.pathname || null,\n      hash: safeWindow.location.hash || null,\n      search: safeWindow.location.search || null,\n      timezone,\n      locale: visitorLocale,\n      // Additional properties specific to custom events\n      ...eventData\n    }\n  ]);\n}\n\n// ../../library/src/router/computeRelativePath.ts\nfunction computeRelativePath(from, to) {\n  if (!from.startsWith(\"/\") || !to.startsWith(\"/\")) {\n    throw new Error(\"from/to paths are expected to be absolute\");\n  }\n  const [fromDir] = getDirAndFile(from);\n  const [toDir, toFile] = getDirAndFile(to);\n  let relativePath = relative(fromDir, toDir);\n  if (relativePath === \"\")\n    relativePath = \".\";\n  if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n    relativePath = \"./\" + relativePath;\n  }\n  return relativePath + \"/\" + toFile;\n}\nfunction getDirAndFile(path) {\n  const index = path.lastIndexOf(\"/\");\n  return [path.substring(0, index + 1), path.substring(index + 1)];\n}\nvar CHAR_DOT = 46;\nvar CHAR_FORWARD_SLASH = 47;\nvar StringPrototypeCharCodeAt = (str, index) => str.charCodeAt(index);\nvar StringPrototypeLastIndexOf = (str, searchString) => str.lastIndexOf(searchString);\nvar StringPrototypeSlice = (str, start, end) => str.slice(start, end);\nfunction relative(from, to) {\n  if (from === to)\n    return \"\";\n  from = \"/\" + normalizeString(from);\n  to = \"/\" + normalizeString(to);\n  if (from === to)\n    return \"\";\n  const fromStart = 1;\n  const fromEnd = from.length;\n  const fromLen = fromEnd - fromStart;\n  const toStart = 1;\n  const toLen = to.length - toStart;\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for (; i < length; i++) {\n    const fromCode = StringPrototypeCharCodeAt(from, fromStart + i);\n    if (fromCode !== StringPrototypeCharCodeAt(to, toStart + i))\n      break;\n    else if (fromCode === CHAR_FORWARD_SLASH)\n      lastCommonSep = i;\n  }\n  if (i === length) {\n    if (toLen > length) {\n      if (StringPrototypeCharCodeAt(to, toStart + i) === CHAR_FORWARD_SLASH) {\n        return StringPrototypeSlice(to, toStart + i + 1);\n      }\n      if (i === 0) {\n        return StringPrototypeSlice(to, toStart + i);\n      }\n    } else if (fromLen > length) {\n      if (StringPrototypeCharCodeAt(from, fromStart + i) === CHAR_FORWARD_SLASH) {\n        lastCommonSep = i;\n      } else if (i === 0) {\n        lastCommonSep = 0;\n      }\n    }\n  }\n  let out = \"\";\n  for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n    if (i === fromEnd || StringPrototypeCharCodeAt(from, i) === CHAR_FORWARD_SLASH) {\n      out += out.length === 0 ? \"..\" : \"/..\";\n    }\n  }\n  return `${out}${StringPrototypeSlice(to, toStart + lastCommonSep)}`;\n}\nvar allowAboveRoot = false;\nvar separator = \"/\";\nvar isPathSeparator = (code) => code === CHAR_FORWARD_SLASH;\nfunction normalizeString(path) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code = 0;\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length)\n      code = StringPrototypeCharCodeAt(path, i);\n    else if (isPathSeparator(code))\n      break;\n    else\n      code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) {\n      } else if (dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT || StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = StringPrototypeSlice(res, 0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - StringPrototypeLastIndexOf(res, separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length !== 0) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          res += res.length > 0 ? `${separator}..` : \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0)\n          res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n        else\n          res = StringPrototypeSlice(path, lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// ../../library/src/router/customNotFoundPagePaths.ts\nvar customNotFoundPagePaths = /* @__PURE__ */ new Set([\"/404.html\", \"/404\", \"/404/\"]);\n\n// ../../library/src/router/pathVariables.ts\nvar pathVariablesRegExpRaw = \":([a-z]\\\\w*)\";\nvar pathVariablesRegExp = /* @__PURE__ */ new RegExp(pathVariablesRegExpRaw, \"gi\");\n\n// ../../library/src/router/fillPathVariables.ts\nfunction fillPathVariables(path, variables) {\n  return path.replace(pathVariablesRegExp, (match, name) => {\n    const value = variables[name];\n    if (typeof value !== \"string\" || value.length === 0)\n      return match;\n    return encodeURIComponent(value);\n  });\n}\n\n// ../../library/src/router/forwardQueryParams.ts\nfunction forwardCurrentQueryParams(href) {\n  const queryParamsString = typeof window !== \"undefined\" ? window.location.search : \"\";\n  if (!queryParamsString) {\n    return href;\n  }\n  return forwardQueryParams(queryParamsString, href);\n}\nfunction forwardQueryParams(queryParamsString, href) {\n  const startOfHash = href.indexOf(\"#\");\n  const hrefWithoutHash = startOfHash === -1 ? href : href.substring(0, startOfHash);\n  const hash2 = startOfHash === -1 ? \"\" : href.substring(startOfHash);\n  const startOfSearch = hrefWithoutHash.indexOf(\"?\");\n  if (startOfSearch === -1) {\n    return hrefWithoutHash + queryParamsString + hash2;\n  }\n  const currentSearchParams = new URLSearchParams(queryParamsString);\n  const newSearchString = hrefWithoutHash.substring(startOfSearch + 1);\n  const newSearchParams = new URLSearchParams(newSearchString);\n  for (const [key7, value] of currentSearchParams) {\n    if (!newSearchParams.has(key7)) {\n      newSearchParams.append(key7, value);\n    }\n  }\n  return hrefWithoutHash.substring(0, startOfSearch + 1) + newSearchParams.toString() + hash2;\n}\n\n// ../../library/src/router/getLocalizedNavigationPath.ts\nasync function replacePathVariables(path, currentLocale, nextLocale, defaultLocale, collectionId, pathVariables, collectionUtils) {\n  var _a;\n  let resultPath = path;\n  let isMissingInLocale = false;\n  const resultPathVariables = { ...pathVariables };\n  const matches = Array.from(resultPath.matchAll(pathVariablesRegExp));\n  const replacements = await Promise.all(\n    matches.map(async (match) => {\n      var _a2;\n      const pathVariableWithDelimiter = match == null ? void 0 : match[0];\n      const pathVariableValue = match == null ? void 0 : match[1];\n      if (!pathVariableWithDelimiter || !pathVariableValue) {\n        throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n      }\n      const currentSlug = pathVariables[pathVariableValue];\n      if (!currentSlug || !isString(currentSlug)) {\n        throw new Error(`No slug found for path variable ${pathVariableValue}`);\n      }\n      const utils = await ((_a2 = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a2.call(collectionUtils));\n      if (!utils || !currentLocale) {\n        return currentSlug;\n      }\n      const recordId = await utils.getRecordIdBySlug(currentSlug, currentLocale);\n      if (!recordId)\n        return currentSlug;\n      const nextSlug = await utils.getSlugByRecordId(recordId, nextLocale);\n      if (!nextSlug) {\n        isMissingInLocale = true;\n        const defaultLocaleSlug = await utils.getSlugByRecordId(recordId, defaultLocale);\n        if (defaultLocaleSlug) {\n          resultPathVariables[pathVariableValue] = defaultLocaleSlug;\n        }\n        return defaultLocaleSlug ?? currentSlug;\n      }\n      resultPathVariables[pathVariableValue] = nextSlug;\n      return nextSlug;\n    })\n  );\n  let lastIndex = 0;\n  let replacedPath = \"\";\n  let hasMatch = false;\n  for (let i = 0; i < matches.length; i++) {\n    const match = matches[i];\n    const replacement = replacements[i];\n    if (!match || !replacement)\n      continue;\n    replacedPath += resultPath.substring(lastIndex, match.index);\n    lastIndex = (match.index ?? 0) + (((_a = match[0]) == null ? void 0 : _a.length) ?? 0);\n    replacedPath += replacements[i];\n    hasMatch = true;\n  }\n  if (hasMatch) {\n    resultPath = replacedPath;\n  }\n  return {\n    path: resultPath,\n    pathVariables: resultPathVariables,\n    isMissingInLocale\n  };\n}\nasync function getLocalizedNavigationPath({\n  currentLocale,\n  nextLocale,\n  defaultLocale,\n  route,\n  pathVariables,\n  collectionUtils,\n  preserveQueryParams\n}) {\n  const { path } = route;\n  let result = {\n    path,\n    pathVariables,\n    isMissingInLocale: false\n  };\n  if (!path)\n    return result;\n  if (pathVariables && route.collectionId) {\n    try {\n      const pathReplacement = await replacePathVariables(\n        path,\n        currentLocale,\n        nextLocale,\n        defaultLocale,\n        route.collectionId,\n        pathVariables,\n        collectionUtils\n      );\n      result = pathReplacement;\n    } catch {\n    }\n  }\n  if (nextLocale.slug) {\n    result.path = \"/\" + nextLocale.slug + result.path;\n  }\n  if (preserveQueryParams && result.path) {\n    result.path = forwardCurrentQueryParams(result.path);\n  }\n  return result;\n}\n\n// ../../library/src/router/getSitePrefix.ts\nfunction getSitePrefix(siteCanonicalURL) {\n  if (!siteCanonicalURL)\n    return \"\";\n  let url;\n  try {\n    url = new URL(siteCanonicalURL);\n  } catch {\n    return \"\";\n  }\n  if (url.pathname === \"/\" || window.location.origin !== url.origin)\n    return \"\";\n  return url.pathname.endsWith(\"/\") ? url.pathname.slice(0, -1) : url.pathname;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nimport { useCallback, useEffect as useEffect2, useRef } from \"react\";\n\n// ../../library/src/router/pageEffects/PageEffectsContext.tsx\nimport React7 from \"react\";\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar defaultSitePageEffects = { global: void 0, routes: {} };\nvar PageEffectsContext = /* @__PURE__ */ React7.createContext(defaultSitePageEffects);\nfunction PageEffectsProvider({ children, value }) {\n  return /* @__PURE__ */ jsx3(PageEffectsContext.Provider, { value, children });\n}\nfunction usePageEffects() {\n  return React7.useContext(PageEffectsContext);\n}\n\n// ../../library/src/router/pageEffects/getPageEffect.ts\nfunction getPageEffectForRoute(currentRouteId, nextRouteId, { global, routes }) {\n  var _a;\n  return ((_a = routes[currentRouteId]) == null ? void 0 : _a[nextRouteId]) || global;\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/linearEasing.ts\nvar step = 10;\nvar maxDuration = 1e4;\nfunction createLinearEasing(generator) {\n  let time = step;\n  let state = generator.next(0);\n  const keyframes2 = [state.value];\n  while (!state.done && time < maxDuration) {\n    state = generator.next(time);\n    keyframes2.push(state.value);\n    time += step;\n  }\n  if (keyframes2.length === 1)\n    keyframes2.push(state.value);\n  return {\n    easing: `linear(${keyframes2.join(\",\")})`,\n    duration: time - step\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/masks.ts\nvar cssVariable = (name) => `--view-transition-${name}`;\nfunction parseUnit(value) {\n  return [parseFloat(value), value.endsWith(\"px\") ? \"px\" : \"%\"];\n}\nfunction calcMaskPosition(mask) {\n  const { innerWidth, innerHeight } = window;\n  const [x, xUnit] = parseUnit(mask.x);\n  const [y, yUnit] = parseUnit(mask.y);\n  return {\n    x: xUnit === \"px\" ? x : innerWidth * (x / 100),\n    y: yUnit === \"px\" ? y : innerHeight * (y / 100)\n  };\n}\nvar conic = {\n  makeKeyframe: (mask, progress2, page) => {\n    let percentage = 0;\n    if (page === \"exit\" && mask.angularDirection === \"clockwise\" && progress2 === \"start\" || page === \"exit\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"end\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"start\" || page === \"enter\" && mask.angularDirection === \"clockwise\" && progress2 === \"end\") {\n      percentage = mask.sweepAngle / 360 * 100;\n    }\n    return `${cssVariable(\"conic-offset\")}: ${percentage}%;`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"conic-offset\")})`;\n    const isTransparentToBlack = page === \"exit\" && mask.angularDirection === \"clockwise\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\";\n    const firstColor = isTransparentToBlack ? \"transparent\" : \"black\";\n    const secondColor = isTransparentToBlack ? \"black\" : \"transparent\";\n    let gradient = `conic-gradient(from `;\n    gradient += `${mask.angle}deg at ${mask.x} ${mask.y}, `;\n    gradient += `${firstColor} 0%, ${firstColor} ${offsetToken}, `;\n    gradient += `${secondColor} ${offsetToken}, ${secondColor} 100%)`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => `\n        @property ${cssVariable(\"conic-offset\")} {\n            syntax: '<percentage>';\n            initial-value: 0%;\n            inherits: false;\n        }\n    `\n};\nvar circle = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    if (progress2 === \"start\") {\n      return `clip-path: circle(0 at ${x}px ${y}px);`;\n    } else {\n      const endRadius = Math.hypot(Math.max(x, window.innerWidth - x), Math.max(y, window.innerHeight - y));\n      return `clip-path: circle(${endRadius}px at ${x}px ${y}px);`;\n    }\n  }\n};\nvar inset = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    const bottom = window.innerHeight - y;\n    const right = window.innerWidth - x;\n    return progress2 === \"start\" ? `clip-path: inset(${y}px ${right}px ${bottom}px ${x}px round ${mask.round}px);` : `clip-path: inset(0 round 0);`;\n  }\n};\nvar blinds = {\n  makeKeyframe: (mask, progress2, page) => {\n    const [, unit] = parseUnit(mask.width);\n    let width = `0${unit}`;\n    if (progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\") {\n      width = mask.width;\n    }\n    return `${cssVariable(\"blinds-width\")}: ${width};`;\n  },\n  makeStyles: (mask, page) => {\n    const widthToken = `var(${cssVariable(\"blinds-width\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `repeating-linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} 0px, ${firstColor} ${widthToken}, `;\n    gradient += `${secondColor} ${widthToken}, ${secondColor} ${mask.width})`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"blinds-width\")} {\n                syntax: '<length-percentage>';\n                initial-value: 0px;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar wipe = {\n  makeKeyframe: (_mask, progress2, page) => {\n    const offset = progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\" ? 1 : 0;\n    return `${cssVariable(\"wipe-offset\")}: ${offset};`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"wipe-offset\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} calc(calc(0% - ${mask.width}) + calc(calc(100% + ${mask.width}) * ${offsetToken})), `;\n    gradient += `${secondColor} calc(calc(100% + ${mask.width}) * ${offsetToken}))`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"wipe-offset\")} {\n                syntax: '<number>';\n                initial-value: 0;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar maskGenerators = { circle, conic, inset, blinds, wipe };\n\n// ../../library/src/router/pageEffects/cssGeneration/page.ts\nvar restState = {\n  opacity: 1,\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0\n};\nfunction valuesToCSSKeyframes(values, progress2, page, maskGenerator) {\n  var _a;\n  let keyframes2 = `\n      opacity: ${values.opacity};\n      transform: translate(${values.x}, ${values.y}) scale(${values.scale}) rotateX(${values.rotateX}deg) rotateY(${values.rotateY}deg) rotateZ(${values.rotate}deg);\n    `;\n  if (values.mask) {\n    keyframes2 += ((_a = maskGenerator == null ? void 0 : maskGenerator.makeKeyframe) == null ? void 0 : _a.call(maskGenerator, values.mask, progress2, page)) || \"\";\n  }\n  return keyframes2;\n}\nfunction getMaskGenerator(type) {\n  return type ? maskGenerators[type] : void 0;\n}\nfunction createPageTransitionRules(page, { transition, ...values }) {\n  var _a;\n  const name = \"view-transition-\" + page;\n  const settings = { duration: \"0s\", easing: \"linear\" };\n  if (transition.type === \"tween\") {\n    settings.duration = transition.duration + \"s\";\n    settings.easing = `cubic-bezier(${transition.ease.join(\",\")})`;\n  } else if (isSpringTransition(transition)) {\n    const { easing, duration } = createLinearEasing(\n      spring({\n        keyframes: [0, 1],\n        ...getSpringOptions(transition),\n        restDelta: 1e-3,\n        restSpeed: 1e-4\n      })\n    );\n    settings.duration = duration + \"ms\";\n    settings.easing = easing;\n  }\n  const maskGenerator = getMaskGenerator((_a = values == null ? void 0 : values.mask) == null ? void 0 : _a.type);\n  let startKeyframes = valuesToCSSKeyframes(values, \"start\", page, maskGenerator);\n  let endKeyframes = valuesToCSSKeyframes({ ...restState, mask: values.mask }, \"end\", page, maskGenerator);\n  if (page === \"exit\") {\n    ;\n    [startKeyframes, endKeyframes] = [endKeyframes, startKeyframes];\n  }\n  return `\n        ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makePropertyRules) ? maskGenerator.makePropertyRules(values.mask) : \"\"}\n\n        @keyframes ${name} {\n            0% {\n                ${startKeyframes}\n            }\n\n            100% {\n                ${endKeyframes}\n            }\n        }\n\n        ::view-transition-${page === \"enter\" ? \"new\" : \"old\"}(root) {\n            animation-name: ${name};\n            animation-duration: ${settings.duration};\n            animation-delay: ${transition.delay}s;\n            animation-timing-function: ${settings.easing};\n            animation-fill-mode: both;\n            ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makeStyles) ? maskGenerator.makeStyles(values.mask, page) : \"\"}\n        }\n    `;\n}\nfunction isSpringTransition(transition) {\n  return transition.type === \"spring\";\n}\nfunction getSpringOptions(transition) {\n  if (transition.durationBasedSpring) {\n    return {\n      duration: transition.duration,\n      bounce: transition.bounce\n    };\n  }\n  return {\n    stiffness: transition.stiffness,\n    damping: transition.damping,\n    mass: transition.mass\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/index.ts\nvar VIEW_TRANSITION_STYLES_ID = \"view-transition-styles\";\nvar defaultPageTransition = {\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  opacity: 1,\n  rotate3d: false,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0,\n  transition: {\n    type: \"tween\",\n    delay: 0,\n    duration: 0.2,\n    ease: [0.27, 0, 0.51, 1],\n    stiffness: 400,\n    damping: 30,\n    mass: 1\n  }\n};\nfunction createViewTransitionStylesheet({ exit = defaultPageTransition, enter }) {\n  const styleElement = document.createElement(\"style\");\n  styleElement.id = VIEW_TRANSITION_STYLES_ID;\n  let styleContent = `\n        @media (prefers-reduced-motion) {\n            ::view-transition-group(*),\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                animation: none !important;\n            }\n        }\n    `;\n  const disableMixPlusLighter = exit.mask || enter.mask || exit.opacity || enter.opacity || exit.transition.delay || enter.transition.delay;\n  if (disableMixPlusLighter) {\n    styleContent += `\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                mix-blend-mode: normal;\n            }\n        `;\n  }\n  styleContent += `\n        ::view-transition-old(*),\n        ::view-transition-new(*) {\n            backface-visibility: hidden;\n        }\n    `;\n  styleContent += createPageTransitionRules(\"exit\", exit);\n  styleContent += createPageTransitionRules(\"enter\", enter);\n  styleElement.textContent = styleContent;\n  document.head.appendChild(styleElement);\n}\nfunction removeViewTransitionStylesheet() {\n  requestIdleCallback(() => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-remove\");\n      const element = document.getElementById(VIEW_TRANSITION_STYLES_ID);\n      if (element) {\n        document.head.removeChild(element);\n      }\n    });\n  });\n}\n\n// ../../library/src/router/pageEffects/viewTransition.ts\nvar noop2 = () => {\n};\nfunction supportsViewTransitions() {\n  return Boolean(document.startViewTransition);\n}\nfunction addVTStylesheetAfterInRender(effect) {\n  return new Promise((resolve) => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-style\");\n      createViewTransitionStylesheet(effect);\n      resolve();\n    });\n  });\n}\nasync function startViewTransition(updateView, effect, signal) {\n  if (!supportsViewTransitions()) {\n    void updateView();\n    return;\n  }\n  await addVTStylesheetAfterInRender(effect);\n  if (signal == null ? void 0 : signal.aborted)\n    return;\n  performance.mark(\"framer-vt\");\n  const transition = document.startViewTransition(async () => {\n    performance.mark(\"framer-vt-freeze\");\n    if (signal == null ? void 0 : signal.aborted)\n      return;\n    else\n      signal == null ? void 0 : signal.addEventListener(\"abort\", () => transition.skipTransition());\n    await updateView();\n  });\n  transition.updateCallbackDone.then(() => {\n    performance.mark(\"framer-vt-unfreeze\");\n  }).catch(noop2);\n  Promise.all([transition.ready, transition.finished]).then(() => {\n    performance.mark(\"framer-vt-finished\");\n    removeViewTransitionStylesheet();\n  }).catch(noop2);\n  return transition;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nfunction useViewTransition() {\n  const sitePageEffects = usePageEffects();\n  const resolveHasPainted = useRef(void 0);\n  useEffect2(() => {\n    if (resolveHasPainted.current) {\n      resolveHasPainted.current();\n      resolveHasPainted.current = void 0;\n    }\n  });\n  return useCallback(\n    (currentRouteId, nextRouteId, update, yieldBeforeFreezePeriod, signal) => {\n      const pageEffect = getPageEffectForRoute(currentRouteId, nextRouteId, sitePageEffects);\n      if (pageEffect) {\n        const hasPainted = new Promise((resolve) => {\n          resolveHasPainted.current = resolve;\n        });\n        const asyncUpdate = async () => {\n          update();\n          await hasPainted;\n        };\n        const yieldBeforeViewTransition = async () => {\n          await interactionResponse({ priority: \"user-blocking\", signal }).catch(noop);\n          return startViewTransition(asyncUpdate, pageEffect, signal);\n        };\n        if (yieldBeforeFreezePeriod)\n          return yieldBeforeViewTransition();\n        return startViewTransition(asyncUpdate, pageEffect);\n      }\n      update();\n    },\n    [sitePageEffects]\n  );\n}\n\n// ../../library/src/router/useMonitorNextPaintAfterRender.ts\nimport { useCallback as useCallback2, useRef as useRef2 } from \"react\";\nfunction useMonitorNextPaintAfterRender(label) {\n  const startLabel = `${label}-start`;\n  const endLabel = `${label}-end`;\n  const resolveHasPainted = useRef2(void 0);\n  useAfterPaintEffect(\n    () => {\n      if (resolveHasPainted.current) {\n        resolveHasPainted.current();\n        resolveHasPainted.current = void 0;\n      }\n    },\n    void 0,\n    // user-blocking ensures we get the correct timings here. Other priorites might delay this effect a little bit.\n    { priority: \"user-blocking\" }\n  );\n  return useCallback2(() => {\n    const hasPainted = new Promise((resolve) => {\n      resolveHasPainted.current = resolve;\n    });\n    performance.mark(startLabel);\n    return hasPainted.finally(() => {\n      performance.mark(endLabel);\n      performance.measure(label, startLabel, endLabel);\n    }).catch((e) => {\n      console.error(e);\n    });\n  }, [label, startLabel, endLabel]);\n}\n\n// ../../library/src/router/history.ts\nasync function pushRouteState(routeId, route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  localeId,\n  preserveQueryParams,\n  siteCanonicalURL\n}, enableAsyncURLUpdate = false, isNavigationTransition = false) {\n  const { path } = route;\n  if (!path)\n    return;\n  const newPath = getPathForRoute(route, {\n    currentRoutePath,\n    currentPathVariables,\n    hash: hash2,\n    pathVariables,\n    preserveQueryParams,\n    siteCanonicalURL\n  });\n  try {\n    const urlUpdatePromise = pushHistoryState(\n      { routeId, hash: hash2, pathVariables, localeId },\n      newPath,\n      enableAsyncURLUpdate,\n      isNavigationTransition\n    );\n    return await urlUpdatePromise;\n  } catch {\n  }\n}\nfunction updateCanonicalURL(url, prevUrl) {\n  requestIdleCallback(() => {\n    const canonical = document.querySelector(\"link[rel='canonical']\");\n    if (!canonical)\n      return;\n    const newURL = new URL(url, prevUrl);\n    newURL.search = \"\";\n    canonical.setAttribute(\"href\", newURL.toString());\n  });\n}\nfunction isHistoryState(data2) {\n  const routeIdKey = \"routeId\";\n  return isObject(data2) && isString(data2[routeIdKey]);\n}\nfunction replaceHistoryState(data2, url, ignoreReplaceStateWrapper = false) {\n  performance.mark(\"framer-history-replace\");\n  const replaceState = ignoreReplaceStateWrapper ? window.history.__proto__.replaceState : window.history.replaceState;\n  replaceState.call(window.history, data2, \"\", url);\n}\nvar maybeHasPopstateBug = true;\nvar isImpactedPopstateBugChromiumVersion = /* @__PURE__ */ (() => {\n  if (typeof navigator === \"undefined\")\n    return false;\n  const userAgent = navigator.userAgent;\n  const chromePos = userAgent.indexOf(\"Chrome/\");\n  const chromiumVersion = +userAgent.slice(chromePos + 7, userAgent.indexOf(\".\", chromePos));\n  return chromiumVersion > 101 && chromiumVersion < 128;\n})();\nasync function pushHistoryState(data2, url, awaitPaintBeforeUpdate = false, isNavigationTransition = false) {\n  if (awaitPaintBeforeUpdate)\n    await interactionResponse({ priority: \"user-blocking\" });\n  performance.mark(\"framer-history-push\");\n  updateCanonicalURL(url, window.location.href);\n  if (!isNavigationTransition) {\n    window.history.pushState(data2, \"\", url);\n    return;\n  }\n  let popstateCalled = false, popstateListener;\n  if (maybeHasPopstateBug) {\n    popstateListener = () => {\n      popstateCalled = true;\n      if (isImpactedPopstateBugChromiumVersion)\n        return;\n      const msg = \"Popstate called after intercept(). Please report this to the Framer team.\";\n      console.error(msg);\n      sendTrackingEvent(\"published_site_load_recoverable_error\", {\n        message: msg\n      });\n    };\n    window.addEventListener(\"popstate\", popstateListener, { once: true });\n  }\n  if (isImpactedPopstateBugChromiumVersion && maybeHasPopstateBug) {\n    window.history.__proto__.pushState.call(window.history, data2, \"\", url);\n  } else {\n    window.history.pushState(data2, \"\", url);\n  }\n  if (maybeHasPopstateBug) {\n    queueMicrotask(() => {\n      if (popstateCalled)\n        return;\n      maybeHasPopstateBug = false;\n      window.removeEventListener(\"popstate\", popstateListener);\n      return;\n    });\n  }\n}\nfunction useReplaceInitialState({\n  disabled,\n  routeId,\n  initialPathVariables,\n  initialLocaleId\n}) {\n  useLayoutEffect2(() => {\n    if (disabled)\n      return;\n    performance.mark(\"framer-history-set-initial-state\");\n    replaceHistoryState(\n      { routeId, pathVariables: initialPathVariables, localeId: initialLocaleId },\n      void 0,\n      true\n    );\n  }, []);\n}\nfunction usePopStateHandler(currentRouteId, setCurrentRouteId) {\n  const startViewTransition2 = useViewTransition();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change-popstate\");\n  const viewTransitionReady = useRef3(void 0);\n  const popStateHandler = useCallback3(\n    async ({ state }) => {\n      var _a, _b, _c, _d, _e, _f;\n      if (((_a = window.navigation) == null ? void 0 : _a.transition) && ((_c = (_b = window.navigation) == null ? void 0 : _b.transition) == null ? void 0 : _c.navigationType) !== \"traverse\")\n        return;\n      if (!isObject(state))\n        return;\n      const { routeId, hash: hash2, pathVariables, localeId } = state;\n      if (!isString(routeId))\n        return;\n      void monitorNextPaintAfterRender();\n      const changeRoute = () => {\n        setCurrentRouteId(\n          routeId,\n          isString(localeId) ? localeId : void 0,\n          isString(hash2) ? hash2 : void 0,\n          isObject(pathVariables) ? pathVariables : void 0,\n          true,\n          false\n        );\n      };\n      updateCanonicalURL(window.location.href);\n      const transition = await startViewTransition2(currentRouteId.current, routeId, changeRoute, false);\n      if (transition) {\n        void transition.updateCallbackDone.then((_d = viewTransitionReady.current) == null ? void 0 : _d.resolve).catch((_e = viewTransitionReady.current) == null ? void 0 : _e.reject);\n      } else {\n        (_f = viewTransitionReady.current) == null ? void 0 : _f.resolve();\n      }\n    },\n    [currentRouteId, monitorNextPaintAfterRender, setCurrentRouteId, startViewTransition2]\n  );\n  const traversalHandler = useCallback3((event) => {\n    if (event.navigationType !== \"traverse\")\n      return;\n    event.intercept({\n      async handler() {\n        await new Promise((resolve, reject) => {\n          viewTransitionReady.current = { resolve, reject };\n        });\n        viewTransitionReady.current = void 0;\n      },\n      scroll: \"after-transition\"\n    });\n  }, []);\n  useEffect3(() => {\n    var _a;\n    window.addEventListener(\"popstate\", popStateHandler);\n    (_a = window.navigation) == null ? void 0 : _a.addEventListener(\"navigate\", traversalHandler);\n    return () => {\n      var _a2;\n      window.removeEventListener(\"popstate\", popStateHandler);\n      (_a2 = window.navigation) == null ? void 0 : _a2.removeEventListener(\"navigate\", traversalHandler);\n    };\n  }, [popStateHandler, traversalHandler]);\n}\nfunction getHashForRoute(hash2, route, hashVariables) {\n  const resolvedHash = getRouteElementId(route, hash2);\n  if (!resolvedHash)\n    return void 0;\n  const variables = Object.assign({}, route == null ? void 0 : route.elements, hashVariables);\n  return resolvedHash.replace(pathVariablesRegExp, (m2, p1) => String(variables[p1] ?? m2));\n}\nfunction getPathForRoute(route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  hashVariables,\n  relative: relative2 = true,\n  preserveQueryParams,\n  onlyHash = false,\n  siteCanonicalURL\n}) {\n  const resolvedHash = getHashForRoute(hash2, route, hashVariables);\n  if (onlyHash)\n    return resolvedHash ?? \"\";\n  let currentPath = currentRoutePath ?? \"/\";\n  if (currentPathVariables) {\n    currentPath = currentPath.replace(pathVariablesRegExp, (m2, p1) => String(currentPathVariables[p1] || m2));\n  }\n  const targetPath = (route == null ? void 0 : route.path) ?? \"/\";\n  let path = targetPath;\n  if (pathVariables) {\n    path = path.replace(pathVariablesRegExp, (m2, p1) => String(pathVariables[p1] || m2));\n  }\n  const isSamePageHashNavigation = currentPath === path && resolvedHash;\n  if (relative2) {\n    if (customNotFoundPagePaths.has(currentPath) && typeof window !== \"undefined\") {\n      const sitePrefix = getSitePrefix(siteCanonicalURL);\n      path = computeRelativePath(window.location.pathname, sitePrefix + path);\n    } else {\n      path = computeRelativePath(currentPath, path);\n    }\n  }\n  if (preserveQueryParams || isSamePageHashNavigation) {\n    path = forwardCurrentQueryParams(path);\n  }\n  if (resolvedHash) {\n    path = `${path}#${resolvedHash}`;\n  }\n  return path;\n}\nasync function handleRedirectForMissingSlugs(route, pathVariables, nextLocale) {\n  if (!route.path)\n    return false;\n  if (!pathVariables)\n    return false;\n  const prefix2 = nextLocale.slug ? `/${nextLocale.slug}` : \"\";\n  const nextLocaleWithDefaultSlugPath = `${prefix2}${fillPathVariables(route.path, pathVariables)}`;\n  const response = await fetch(nextLocaleWithDefaultSlugPath, {\n    method: \"HEAD\",\n    redirect: \"manual\"\n  });\n  const isRedirect = response.type === \"opaqueredirect\";\n  if (isRedirect) {\n    window.location.href = window.location.origin + nextLocaleWithDefaultSlugPath;\n    return true;\n  }\n  return false;\n}\nasync function switchLocale(options) {\n  const result = await getLocalizedNavigationPath(options);\n  if (!result)\n    return;\n  try {\n    localStorage.setItem(\"preferredLocale\", options.nextLocale.code);\n  } catch {\n  }\n  try {\n    if (!isString(result.path)) {\n      throw new Error(\"Expected result.path to be a string\");\n    }\n    if (result.isMissingInLocale) {\n      const hasRedirect = await handleRedirectForMissingSlugs(\n        options.route,\n        result.pathVariables,\n        options.nextLocale\n      );\n      if (hasRedirect)\n        return;\n    }\n  } catch {\n  }\n  return result;\n}\nfunction pushLoadMoreHistory(hash2, paginationInfo) {\n  try {\n    const currentHistoryState = window.history.state;\n    if (!isHistoryState(currentHistoryState))\n      return;\n    const isInitialLoad = (currentHistoryState == null ? void 0 : currentHistoryState.paginationInfo) === void 0 || currentHistoryState.paginationInfo[hash2] === void 0;\n    const newPaginationInfo = { ...currentHistoryState.paginationInfo, [hash2]: paginationInfo };\n    replaceHistoryState({ ...currentHistoryState, paginationInfo: newPaginationInfo }, void 0, isInitialLoad);\n  } catch {\n  }\n}\nfunction useNativeLoadingSpinner() {\n  const navigationPromise = useRef3(Promise.resolve());\n  const navigationController = useRef3();\n  const navigateListener = useCallback3((navigateEvent) => {\n    if (navigateEvent.navigationType === \"traverse\")\n      return;\n    const controller = navigationController.current;\n    controller == null ? void 0 : controller.signal.addEventListener(\"abort\", () => {\n      controller.abort(\"user aborted\");\n    });\n    navigateEvent.intercept({\n      handler: () => navigationPromise.current\n    });\n  }, []);\n  return useCallback3(\n    (promise, updateURL, controller) => {\n      if (!window.navigation) {\n        void updateURL();\n        return;\n      }\n      navigationPromise.current = promise;\n      navigationController.current = controller;\n      window.navigation.addEventListener(\"navigate\", navigateListener);\n      void updateURL(true);\n      promise.catch(noop).finally(() => {\n        window.navigation.removeEventListener(\"navigate\", navigateListener);\n      });\n    },\n    [navigateListener]\n  );\n}\n\n// ../../library/src/router/useRouteAnchor.ts\nimport React8 from \"react\";\nfunction useRouteAnchor(routeId, { elementId, hash: linkHash } = {}) {\n  const { navigate, currentPathVariables, preserveQueryParams, siteCanonicalURL } = useRouter();\n  const route = useRoute(routeId);\n  const currentRouteId = useCurrentRouteId();\n  const currentRoute = useRoute(currentRouteId ?? \"\");\n  useRoutePreloader([routeId], true);\n  const hash2 = linkHash ?? elementId;\n  const href = React8.useMemo(\n    () => getPathForRoute(route, {\n      currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n      currentPathVariables,\n      hash: hash2,\n      preserveQueryParams,\n      siteCanonicalURL\n    }),\n    [currentRoute, currentPathVariables, hash2, preserveQueryParams, route, siteCanonicalURL]\n  );\n  const navigateToRoute = React8.useCallback(() => navigate == null ? void 0 : navigate(routeId, hash2), [hash2, navigate, routeId]);\n  const onClick = React8.useCallback(\n    (event) => {\n      event.preventDefault();\n      navigateToRoute();\n    },\n    [navigateToRoute]\n  );\n  return { onClick, href };\n}\n\n// ../../library/src/router/useLocale.ts\nimport React9 from \"react\";\n\n// ../../library/src/router/getLocalesForCurrentRoute.ts\nasync function getLocalesForCurrentRoute(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  if (!currentRoute)\n    return locales;\n  const slugByLocaleIfCollectionPage = await getSlugByLocaleIfCollectionPage(\n    activeLocale,\n    locales,\n    currentRoute,\n    pathVariables,\n    collectionUtils\n  );\n  const includedLocalesForCurrentRoute = currentRoute.includedLocales;\n  const localesForCurrentRoute = [];\n  for (const locale of locales) {\n    if (includedLocalesForCurrentRoute) {\n      if (!includedLocalesForCurrentRoute.includes(locale.id))\n        continue;\n    }\n    if (slugByLocaleIfCollectionPage) {\n      const hasSlug = slugByLocaleIfCollectionPage.has(locale.id);\n      if (!hasSlug)\n        continue;\n    }\n    localesForCurrentRoute.push(locale);\n  }\n  return localesForCurrentRoute;\n}\nasync function getSlugByLocaleIfCollectionPage(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  var _a;\n  const { collectionId } = currentRoute;\n  if (!collectionId)\n    return null;\n  if (!activeLocale)\n    return null;\n  if (!pathVariables)\n    return null;\n  const { path } = currentRoute;\n  if (!path)\n    return null;\n  const matches = Array.from(path.matchAll(pathVariablesRegExp));\n  const lastMatch = matches.pop();\n  if (!lastMatch)\n    return null;\n  const pathVariableWithDelimiter = lastMatch == null ? void 0 : lastMatch[0];\n  const pathVariableValue = lastMatch == null ? void 0 : lastMatch[1];\n  if (!pathVariableWithDelimiter || !pathVariableValue) {\n    throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n  }\n  const currentSlug = pathVariables[pathVariableValue];\n  if (!currentSlug || !isString(currentSlug)) {\n    throw new Error(`No slug found for path variable ${pathVariableValue}`);\n  }\n  const utils = await ((_a = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a.call(collectionUtils));\n  if (!utils)\n    return null;\n  const recordId = await utils.getRecordIdBySlug(currentSlug, activeLocale);\n  if (!recordId)\n    return null;\n  const slugById = /* @__PURE__ */ new Map();\n  await Promise.all(\n    locales.map(async (locale) => {\n      const slug = await utils.getSlugByRecordId(recordId, locale);\n      if (!slug)\n        return;\n      slugById.set(locale.id, slug);\n    })\n  );\n  return slugById;\n}\n\n// ../../library/src/router/useLocale.ts\nvar noopAsync = async () => {\n};\nvar defaultLocaleInfo = {\n  activeLocale: null,\n  locales: [],\n  setLocale: noopAsync\n};\nvar LocaleInfoContext = /* @__PURE__ */ React9.createContext(defaultLocaleInfo);\nfunction useLocaleInfo() {\n  return React9.useContext(LocaleInfoContext);\n}\nfunction useLocalesForCurrentRoute() {\n  const { currentRouteId, routes, collectionUtils, currentPathVariables } = useRouter();\n  const { activeLocale, locales } = useLocaleInfo();\n  const [localesForCurrentRoute, setLocalesForCurrentRoute] = React9.useState(\n    () => activeLocale ? [activeLocale] : []\n  );\n  const currentRoute = currentRouteId ? routes == null ? void 0 : routes[currentRouteId] : void 0;\n  React9.useEffect(() => {\n    let active = true;\n    getLocalesForCurrentRoute(activeLocale, locales, currentRoute, currentPathVariables, collectionUtils).then((localesSubset) => {\n      if (!active)\n        return;\n      React9.startTransition(() => {\n        if (localesSubset) {\n          setLocalesForCurrentRoute(localesSubset);\n        } else {\n          setLocalesForCurrentRoute(activeLocale ? [activeLocale] : []);\n        }\n      });\n    }).catch(() => {\n    });\n    return () => {\n      active = false;\n    };\n  }, [activeLocale, locales, collectionUtils, currentRoute, currentPathVariables]);\n  return localesForCurrentRoute;\n}\nfunction useLocalizationInfo() {\n  const { activeLocale, locales, setLocale } = useLocaleInfo();\n  return {\n    activeLocalization: activeLocale,\n    localizations: locales,\n    setLocalization: setLocale\n  };\n}\nfunction useLocaleCode() {\n  var _a;\n  return ((_a = useLocaleInfo().activeLocale) == null ? void 0 : _a.code) ?? \"en-US\";\n}\nfunction useLocale() {\n  return useLocaleCode();\n}\n\n// ../../library/src/router/hydration/reactHydrationINPOptimizer.ts\nimport { useEffect as useEffect4 } from \"react\";\nvar eventsToStop = [\n  \"mousedown\",\n  \"mouseup\",\n  \"touchcancel\",\n  \"touchend\",\n  \"touchstart\",\n  \"auxclick\",\n  \"dblclick\",\n  \"pointercancel\",\n  \"pointerdown\",\n  \"pointerup\",\n  \"dragend\",\n  \"dragstart\",\n  \"drop\",\n  \"compositionend\",\n  \"compositionstart\",\n  \"keydown\",\n  \"keypress\",\n  \"keyup\",\n  \"input\",\n  \"textInput\",\n  // Intentionally camelCase\n  \"copy\",\n  \"cut\",\n  \"paste\",\n  \"click\",\n  \"change\",\n  \"contextmenu\",\n  \"reset\"\n];\nvar stopFn = (event) => {\n  var _a, _b;\n  if (!((_b = (_a = event.target) == null ? void 0 : _a.closest) == null ? void 0 : _b.call(_a, \"#main\")))\n    return;\n  event.stopPropagation();\n  performance.mark(\"framer-react-event-handling-prevented\");\n};\nvar shouldTurnOnEventHandling = false;\nfunction turnOffReactEventHandling() {\n  if (!eventsToStop)\n    return;\n  shouldTurnOnEventHandling = true;\n  performance.mark(\"framer-react-event-handling-start\");\n  const options = { capture: true };\n  eventsToStop.forEach((event) => document.body.addEventListener(event, stopFn, options));\n}\nfunction TurnOnReactEventHandling() {\n  useEffect4(() => {\n    if (!shouldTurnOnEventHandling || !eventsToStop)\n      return;\n    const options = { capture: true };\n    eventsToStop.forEach((event) => document.body.removeEventListener(event, stopFn, options));\n    eventsToStop = void 0;\n    performance.mark(\"framer-react-event-handling-end\");\n  }, []);\n  return null;\n}\n\n// ../../library/src/router/hydration/SetGlobalHydrationState.tsx\nimport { useEffect as useEffect5, useRef as useRef4 } from \"react\";\nvar hydrationRunning = false;\nfunction setInitialHydrationState() {\n  hydrationRunning = true;\n}\nfunction setHydrationDone() {\n  hydrationRunning = false;\n}\nfunction useIsHydrationOrSSR() {\n  const isHydrationOrSSR = useRef4(typeof window === \"undefined\" || hydrationRunning);\n  useEffect5(() => {\n    isHydrationOrSSR.current = false;\n  }, []);\n  return isHydrationOrSSR;\n}\n\n// ../../library/src/router/hydration/hydrationTimings.ts\nimport { useEffect as useEffect6, useInsertionEffect, useLayoutEffect as useLayoutEffect3 } from \"react\";\nfunction measureSafe(name, start, end) {\n  try {\n    performance.measure(name, start, end);\n  } catch (e) {\n    console.warn(`Could not measure ${name}`, e);\n  }\n}\nvar shouldMark = false;\nfunction markHydrationStart() {\n  shouldMark = true;\n  performance.mark(\"framer-hydration-start\");\n}\nvar routerHydrationInsertionEffectStartHasRun = false;\nvar routerHydrationLayoutEffectStartHasRun = false;\nvar routerHydrationEffectStartHasRun = false;\nfunction useMarkRouterEffects() {\n  const hydrationMarkPrefix = \"framer-hydration-router\";\n  useInsertionEffect(() => {\n    if (routerHydrationInsertionEffectStartHasRun || !shouldMark)\n      return;\n    routerHydrationInsertionEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}-insertion-effect`);\n  }, []);\n  useLayoutEffect3(() => {\n    if (routerHydrationLayoutEffectStartHasRun || !shouldMark)\n      return;\n    routerHydrationLayoutEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}-layout-effect`);\n  }, []);\n  useEffect6(() => {\n    if (routerHydrationEffectStartHasRun || !shouldMark)\n      return;\n    routerHydrationEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}-effect`);\n  }, []);\n}\nvar hydrationInsertionEffectStartHasRun = false;\nvar hydrationLayoutEffectStartHasRun = false;\nvar hydrationEffectStartHasRun = false;\nvar wasInBackground = false;\nfunction useMarkSuspenseEffectsStart() {\n  const hydrationMarkPrefix = \"framer-hydration-\";\n  const hydrationLayoutEffectsEnd = `${hydrationMarkPrefix}layout-effects-end`;\n  const hydrationEffectsEnd = `${hydrationMarkPrefix}effects-end`;\n  const hydrationBrowserRenderStart = `${hydrationMarkPrefix}browser-render-start`;\n  const hydrationRenderEnd = `${hydrationMarkPrefix}render-end`;\n  useInsertionEffect(() => {\n    if (hydrationInsertionEffectStartHasRun || !shouldMark)\n      return;\n    hydrationInsertionEffectStartHasRun = true;\n    performance.mark(hydrationRenderEnd);\n    measureSafe(`${hydrationMarkPrefix}render`, `${hydrationMarkPrefix}start`, hydrationRenderEnd);\n    performance.mark(`${hydrationMarkPrefix}insertion-effects-start`);\n  }, []);\n  useLayoutEffect3(() => {\n    if (hydrationLayoutEffectStartHasRun || !shouldMark)\n      return;\n    hydrationLayoutEffectStartHasRun = true;\n    performance.mark(`${hydrationMarkPrefix}layout-effects-start`);\n    if (document.visibilityState !== \"visible\") {\n      wasInBackground = true;\n      return;\n    }\n    requestAnimationFrame(() => {\n      var _a, _b;\n      performance.mark(hydrationBrowserRenderStart);\n      measureSafe(\n        `${hydrationMarkPrefix}uho`,\n        ((_a = performance.getEntriesByName(hydrationEffectsEnd)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(hydrationLayoutEffectsEnd)[0]) == null ? void 0 : _b.name),\n        hydrationBrowserRenderStart\n      );\n    });\n  }, []);\n  useEffect6(() => {\n    var _a;\n    if (hydrationEffectStartHasRun || !shouldMark)\n      return;\n    hydrationEffectStartHasRun = true;\n    const hydrationEffectsStart = `${hydrationMarkPrefix}effects-start`;\n    performance.mark(hydrationEffectsStart);\n    const hasPaintStarted = (_a = performance.getEntriesByName(hydrationBrowserRenderStart)[0]) == null ? void 0 : _a.name;\n    if (!hasPaintStarted) {\n      measureSafe(`${hydrationMarkPrefix}commit`, hydrationLayoutEffectsEnd, hydrationEffectsStart);\n      performance.mark(`${hydrationMarkPrefix}effects-sync`);\n    }\n  }, []);\n  return null;\n}\nvar hydrationInsertionEffectHasRun = false;\nvar hydrationLayoutEffectHasRun = false;\nvar hydrationEffectHasRun = false;\nfunction useMarkSuspenseEffectEnd() {\n  const hydrationMarkPrefix = \"framer-hydration-\";\n  const hydrationLayoutEffectsEnd = `${hydrationMarkPrefix}layout-effects-end`;\n  const hydrationEffectsEnd = `${hydrationMarkPrefix}effects-end`;\n  const hydrationBrowserRenderStart = `${hydrationMarkPrefix}browser-render-start`;\n  const hydrationStart = `${hydrationMarkPrefix}start`;\n  const hydrationInsertionEffectsEnd = `${hydrationMarkPrefix}insertion-effects-end`;\n  const hydrationFP = `${hydrationMarkPrefix}first-paint`;\n  const hydrationAnimationFrameEnd = `${hydrationMarkPrefix}browser-raf-end`;\n  useInsertionEffect(() => {\n    if (hydrationInsertionEffectHasRun || !shouldMark)\n      return;\n    hydrationInsertionEffectHasRun = true;\n    performance.mark(hydrationInsertionEffectsEnd);\n    measureSafe(\n      `${hydrationMarkPrefix}insertion-effects`,\n      `${hydrationMarkPrefix}insertion-effects-start`,\n      hydrationInsertionEffectsEnd\n    );\n  }, []);\n  useLayoutEffect3(() => {\n    if (hydrationLayoutEffectHasRun || !shouldMark)\n      return;\n    hydrationLayoutEffectHasRun = true;\n    performance.mark(hydrationLayoutEffectsEnd);\n    measureSafe(\n      `${hydrationMarkPrefix}layout-effects`,\n      `${hydrationMarkPrefix}layout-effects-start`,\n      hydrationLayoutEffectsEnd\n    );\n    if (wasInBackground || document.visibilityState !== \"visible\")\n      return;\n    requestAnimationFrame(() => {\n      performance.mark(hydrationAnimationFrameEnd);\n      measureSafe(`${hydrationMarkPrefix}raf`, hydrationBrowserRenderStart, hydrationAnimationFrameEnd);\n      void yieldBefore(() => {\n        performance.mark(hydrationFP);\n        measureSafe(`${hydrationMarkPrefix}time-to-first-paint`, hydrationStart, hydrationFP);\n        measureSafe(`${hydrationMarkPrefix}browser-render`, hydrationAnimationFrameEnd, hydrationFP);\n      });\n    });\n  }, []);\n  useEffect6(() => {\n    var _a, _b;\n    if (hydrationEffectHasRun || !shouldMark)\n      return;\n    hydrationEffectHasRun = true;\n    performance.mark(hydrationEffectsEnd);\n    measureSafe(\n      `${hydrationMarkPrefix}effects`,\n      ((_a = performance.getEntriesByName(hydrationFP)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(`${hydrationMarkPrefix}effects-start`)[0]) == null ? void 0 : _b.name),\n      hydrationEffectsEnd\n    );\n  }, []);\n  return null;\n}\nfunction MarkSuspenseEffectsStart() {\n  useMarkSuspenseEffectsStart();\n  return null;\n}\nfunction MarkSuspenseEffectsEnd() {\n  useMarkSuspenseEffectEnd();\n  return null;\n}\nvar MarkSuspenseEffects = { Start: MarkSuspenseEffectsStart, End: MarkSuspenseEffectsEnd };\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nimport { Component } from \"react\";\n\n// ../../library/src/router/renderPage.tsx\nimport React10 from \"react\";\nfunction renderPage(Page4, defaultPageStyle) {\n  const props = { style: defaultPageStyle, \"data-framer-root\": \"\" };\n  return React10.isValidElement(Page4) ? React10.cloneElement(Page4, props) : React10.createElement(Page4, props);\n}\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nvar NotFoundError = class extends Error {\n};\nvar NotFoundErrorBoundaryCaughtError = class extends Error {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"cause\");\n  }\n};\nvar NotFoundErrorBoundary = class extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: void 0, forceUpdateKey: props.forceUpdateKey };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  /** Resets the error when forceUpdateKey gets bumped. */\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (nextProps.forceUpdateKey !== prevState.forceUpdateKey) {\n      const newState = {\n        forceUpdateKey: nextProps.forceUpdateKey\n      };\n      if (prevState.error) {\n        newState.error = void 0;\n      }\n      return newState;\n    }\n    return null;\n  }\n  render() {\n    if (this.state.error === void 0) {\n      return this.props.children;\n    }\n    if (!(this.state.error instanceof NotFoundError)) {\n      const error = new NotFoundErrorBoundaryCaughtError();\n      error.cause = this.state.error;\n      throw error;\n    }\n    const { notFoundPage, defaultPageStyle } = this.props;\n    if (!notFoundPage) {\n      throw this.state.error;\n    }\n    return renderPage(notFoundPage, defaultPageStyle);\n  }\n};\n\n// ../../library/src/router/inferInitialRouteFromPath.ts\nvar memoPathRoutes;\nvar memoPaths;\nvar lastRoutes;\nfunction getRouteInfoMemo(routes) {\n  if (lastRoutes !== routes) {\n    memoPathRoutes = {};\n    for (const [routeId, { path }] of Object.entries(routes)) {\n      if (path)\n        memoPathRoutes[path] = { path, depth: pathDepth(path), routeId };\n    }\n    memoPaths = Object.values(memoPathRoutes);\n    memoPaths.sort(({ depth: depth1 }, { depth: depth2 }) => depth2 - depth1);\n    lastRoutes = routes;\n  }\n  return [memoPathRoutes, memoPaths];\n}\nfunction inferInitialRouteFromPath(routes, decodedLocationPath, fallback = true, locales = []) {\n  const [pathRoutes, paths] = getRouteInfoMemo(routes);\n  let activeLocale;\n  let localeId;\n  let locationPath = decodedLocationPath;\n  if (locales.length > 0) {\n    const firstPathSegment = locationPath.split(\"/\").find(Boolean);\n    if (firstPathSegment) {\n      activeLocale = locales.find(({ slug }) => slug === firstPathSegment);\n      if (activeLocale) {\n        localeId = activeLocale.id;\n        locationPath = locationPath.substring(activeLocale.slug.length + 1);\n      }\n    }\n    if (!localeId) {\n      const defaultLocale = locales.find(({ slug }) => slug === \"\");\n      if (defaultLocale) {\n        localeId = defaultLocale.id;\n      }\n    }\n  }\n  const exactMatch = pathRoutes[locationPath];\n  if (exactMatch) {\n    const match = matchPath(locationPath, exactMatch.path);\n    if (match.isMatch)\n      return { routeId: exactMatch.routeId, localeId, pathVariables: match.pathVariables };\n  }\n  for (const { path, routeId } of paths) {\n    const match = matchPath(locationPath, path);\n    if (match.isMatch)\n      return { routeId, localeId, pathVariables: match.pathVariables };\n  }\n  if (!fallback)\n    throw new Error(\"No exact match found for path\");\n  const rootPath = pathRoutes[\"/\"];\n  if (rootPath)\n    return { routeId: rootPath.routeId, localeId };\n  const firstRoute = Object.keys(routes)[0];\n  if (!firstRoute)\n    throw new Error(\"Router should not have undefined routes\");\n  return { routeId: firstRoute, localeId };\n}\nfunction pathDepth(path) {\n  const pathWithTrimmedSlashes = path.replace(/^\\/|\\/$/gu, \"\");\n  if (pathWithTrimmedSlashes === \"\")\n    return 0;\n  return pathWithTrimmedSlashes.split(\"/\").length;\n}\nfunction matchPath(path, routePath) {\n  const pathVariablesKeys = [];\n  const safeRoutePath = escapeStringRegExp(routePath);\n  const routePathRegExpString = safeRoutePath.replace(pathVariablesRegExp, (_, name) => {\n    pathVariablesKeys.push(name);\n    return \"([^/]+)\";\n  });\n  const routePathRegExp = new RegExp(routePathRegExpString + \"$\");\n  const matches = path.match(routePathRegExp);\n  if (!matches)\n    return { isMatch: false };\n  if (matches.length === 1)\n    return { isMatch: true };\n  const pathVariables = {};\n  const pathVariablesValues = matches.slice(1);\n  for (let i = 0; i < pathVariablesKeys.length; ++i) {\n    const key7 = pathVariablesKeys[i];\n    if (key7 === void 0)\n      continue;\n    const value = pathVariablesValues[i];\n    const existingValue = pathVariables[key7];\n    if (existingValue) {\n      if (existingValue !== value) {\n        return { isMatch: false };\n      } else {\n        continue;\n      }\n    }\n    if (value === void 0) {\n      throw new Error(\"Path variable values cannot be undefined\");\n    }\n    pathVariables[key7] = value;\n  }\n  return { isMatch: true, pathVariables };\n}\nfunction escapeStringRegExp(string) {\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/gu, \"\\\\$&\").replace(/-/gu, \"\\\\x2d\");\n}\n\n// ../../library/src/utils/warnOnce.ts\nvar warningMessages = /* @__PURE__ */ new Set();\nfunction warnOnce(keyMessage, ...rest) {\n  if (warningMessages.has(keyMessage))\n    return;\n  warningMessages.add(keyMessage);\n  console.warn(keyMessage, ...rest);\n}\n\n// ../../library/src/utils/deprecation.ts\nfunction deprecationWarning(removedItem, removalVersion, replacement) {\n  const replacementText = replacement ? `, use ${replacement} instead` : \"\";\n  const warningText = `Deprecation warning: ${removedItem} will be removed in version ${removalVersion}${replacementText}.`;\n  warnOnce(warningText);\n}\n\n// ../../library/src/animation/Animatable/Observers.ts\nvar Observers = class {\n  constructor() {\n    __publicField(this, \"observers\", /* @__PURE__ */ new Set());\n    __publicField(this, \"transactions\", {});\n  }\n  add(observer) {\n    this.observers.add(observer);\n    let isCalled = false;\n    return () => {\n      if (isCalled) {\n        return;\n      }\n      isCalled = true;\n      this.remove(observer);\n    };\n  }\n  remove(observer) {\n    this.observers.delete(observer);\n  }\n  notify(change, transaction) {\n    if (transaction) {\n      const accumulatedChange = this.transactions[transaction] || change;\n      accumulatedChange.value = change.value;\n      this.transactions[transaction] = accumulatedChange;\n    } else {\n      this.callObservers(change);\n    }\n  }\n  finishTransaction(transaction) {\n    const accumulatedChange = this.transactions[transaction];\n    delete this.transactions[transaction];\n    return this.callObservers(accumulatedChange, transaction);\n  }\n  callObservers(change, transaction) {\n    const finishObservers = [];\n    new Set(this.observers).forEach((observer) => {\n      if (typeof observer === \"function\") {\n        observer(change, transaction);\n      } else {\n        observer.update(change, transaction);\n        finishObservers.push(observer.finish);\n      }\n    });\n    return finishObservers;\n  }\n};\n\n// ../../library/src/animation/Animatable/Animatable.ts\nvar Animatable = /* @__PURE__ */ (() => {\n  function Animatable2(value) {\n    deprecationWarning(\"Animatable()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n    return isAnimatable(value) ? value : new AnimatableValue(value);\n  }\n  Animatable2.transaction = (update) => {\n    const transactionId = Math.random();\n    const updatedValues = /* @__PURE__ */ new Set();\n    const updater = (animatable, value) => {\n      animatable.set(value, transactionId);\n      updatedValues.add(animatable);\n    };\n    update(updater, transactionId);\n    const finishObservers = [];\n    updatedValues.forEach((value) => {\n      finishObservers.push(...value.finishTransaction(transactionId));\n    });\n    finishObservers.forEach((finish) => {\n      finish(transactionId);\n    });\n  };\n  Animatable2.getNumber = (value, defaultValue = 0) => {\n    return Animatable2.get(value, defaultValue);\n  };\n  Animatable2.get = (value, defaultValue) => {\n    if (value === void 0 || value === null) {\n      return defaultValue;\n    }\n    if (isAnimatable(value)) {\n      return value.get();\n    }\n    return value;\n  };\n  Animatable2.objectToValues = (object) => {\n    if (!object) {\n      return object;\n    }\n    const result = {};\n    for (const key7 in object) {\n      const value = object[key7];\n      if (isAnimatable(value)) {\n        result[key7] = value.get();\n      } else {\n        result[key7] = value;\n      }\n    }\n    return result;\n  };\n  return Animatable2;\n})();\nvar onUpdateKey = \"onUpdate\";\nvar finishTransactionKey = \"finishTransaction\";\nfunction isAnimatable(value) {\n  return value !== null && typeof value === \"object\" && onUpdateKey in value && value[onUpdateKey] instanceof Function && finishTransactionKey in value && value[finishTransactionKey] instanceof Function;\n}\nfunction animatableInterpolation(value, currentInterpolation) {\n  return {\n    interpolate(from, to) {\n      const fromValue = from.get();\n      const toValue = to.get();\n      const result = Animatable(fromValue);\n      return (progress2) => {\n        const v = currentInterpolation.interpolate(fromValue, toValue)(progress2);\n        result.set(v);\n        return result;\n      };\n    },\n    difference(from, to) {\n      const v = from.get();\n      return currentInterpolation.difference(v, to.get());\n    }\n  };\n}\nvar AnimatableValue = class {\n  constructor(value) {\n    this.value = value;\n    __publicField(this, \"observers\", new Observers());\n  }\n  static interpolationFor(value, currentInterpolation) {\n    if (isAnimatable(value)) {\n      return animatableInterpolation(value, currentInterpolation);\n    }\n  }\n  get() {\n    return this.value;\n  }\n  set(value, transaction) {\n    const oldValue = this.value;\n    if (isAnimatable(value)) {\n      value = value.get();\n    }\n    this.value = value;\n    const change = {\n      value,\n      oldValue\n    };\n    this.observers.notify(change, transaction);\n  }\n  finishTransaction(transaction) {\n    return this.observers.finishTransaction(transaction);\n  }\n  onUpdate(handler) {\n    return this.observers.add(handler);\n  }\n};\n\n// ../../library/src/render/utils/roundedNumber.ts\nfunction roundedNumber(value, decimals) {\n  const d = Math.round(Math.abs(decimals));\n  const multiplier = 10 ** d;\n  return Math.round(value * multiplier) / multiplier;\n}\nfunction roundedNumberString(value, decimals) {\n  const result = value.toFixed(decimals);\n  return decimals === 0 ? result : `${+result}`;\n}\nfunction roundWithOffset(value, offset) {\n  if (offset === 0) {\n    return Math.round(value);\n  }\n  offset -= offset | 0;\n  if (offset < 0) {\n    offset = 1 - offset;\n  }\n  return Math.round(value - offset) + offset;\n}\n\n// ../../library/src/render/types/Point.ts\nfunction Point(x, y) {\n  return { x, y };\n}\n((Point2) => {\n  Point2.isQuadrilateralPoints = (points) => {\n    return (points == null ? void 0 : points.length) === 4;\n  };\n  Point2.add = (...args) => {\n    return args.reduce(\n      (previousValue, currentValue) => {\n        return { x: previousValue.x + currentValue.x, y: previousValue.y + currentValue.y };\n      },\n      { x: 0, y: 0 }\n    );\n  };\n  Point2.subtract = (a, b) => {\n    return { x: a.x - b.x, y: a.y - b.y };\n  };\n  Point2.multiply = (a, b) => {\n    return { x: a.x * b, y: a.y * b };\n  };\n  Point2.divide = (a, b) => {\n    return { x: a.x / b, y: a.y / b };\n  };\n  Point2.absolute = (point) => {\n    return {\n      x: Math.abs(point.x),\n      y: Math.abs(point.y)\n    };\n  };\n  Point2.reverse = (point) => {\n    return {\n      x: point.x * -1,\n      y: point.y * -1\n    };\n  };\n  Point2.pixelAligned = (point, offset = { x: 0, y: 0 }) => {\n    return {\n      x: roundWithOffset(point.x, offset.x),\n      y: roundWithOffset(point.y, offset.y)\n    };\n  };\n  Point2.distance = (a, b) => {\n    const deltaX = Math.abs(a.x - b.x);\n    const deltaY = Math.abs(a.y - b.y);\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  };\n  Point2.angle = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;\n  };\n  Point2.angleFromX = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;\n  };\n  Point2.isEqual = (a, b) => {\n    return a.x === b.x && a.y === b.y;\n  };\n  Point2.rotationNormalizer = () => {\n    let lastValue;\n    return (value) => {\n      if (typeof lastValue !== \"number\") {\n        lastValue = value;\n      }\n      const diff = lastValue - value;\n      const maxDiff = Math.abs(diff) + 180;\n      const nTimes = Math.floor(maxDiff / 360);\n      if (diff < 180) {\n        value -= nTimes * 360;\n      }\n      if (diff > 180) {\n        value += nTimes * 360;\n      }\n      lastValue = value;\n      return value;\n    };\n  };\n  function center(a, b) {\n    return {\n      x: (a.x + b.x) / 2,\n      y: (a.y + b.y) / 2\n    };\n  }\n  Point2.center = center;\n  function centroid(points) {\n    let sumX = 0;\n    let sumY = 0;\n    points.forEach((point) => {\n      sumX += point.x;\n      sumY += point.y;\n    });\n    const centroidX = sumX / points.length;\n    const centroidY = sumY / points.length;\n    return { x: centroidX, y: centroidY };\n  }\n  Point2.centroid = centroid;\n  function sortClockwise(points) {\n    const centerPoint = Point2.centroid(points);\n    const angles = /* @__PURE__ */ new Map();\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i];\n      if (!point)\n        continue;\n      angles.set(point, Math.atan2(point.y - centerPoint.y, point.x - centerPoint.x));\n    }\n    return points.sort((a, b) => (angles.get(a) ?? 0) - (angles.get(b) ?? 0));\n  }\n  Point2.sortClockwise = sortClockwise;\n})(Point || (Point = {}));\n\n// ../../library/src/animation/Animators/BezierAnimator.ts\nvar BezierDefaults = {\n  curve: \"ease\" /* Ease */,\n  duration: 1\n};\nfunction controlPointsForCurve(curve) {\n  switch (curve) {\n    case \"linear\" /* Linear */:\n      return [0, 0, 1, 1];\n    case \"ease\" /* Ease */:\n      return [0.25, 0.1, 0.25, 1];\n    case \"ease-in\" /* EaseIn */:\n      return [0.42, 0, 1, 1];\n    case \"ease-out\" /* EaseOut */:\n      return [0, 0, 0.58, 1];\n    case \"ease-in-out\" /* EaseInOut */:\n      return [0.42, 0, 0.58, 1];\n  }\n}\nvar BezierAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    __publicField(this, \"unitBezier\");\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"interpolator\");\n    __publicField(this, \"progress\", 0);\n    __publicField(this, \"next\", (delta) => {\n      const { duration } = this.options;\n      this.progress += delta / duration;\n      const value = this.unitBezier.solve(this.progress, this.solveEpsilon(duration));\n      this.current = this.interpolator(value);\n      return this.current;\n    });\n    this.options = { ...BezierDefaults, ...options };\n    let controlPoints;\n    if (typeof this.options.curve === \"string\") {\n      controlPoints = controlPointsForCurve(this.options.curve);\n    } else {\n      controlPoints = this.options.curve;\n    }\n    const [p1x, p1y, p2x, p2y] = controlPoints;\n    this.unitBezier = new UnitBezier(Point(p1x, p1y), Point(p2x, p2y));\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setTo(value) {\n    this.destination = value;\n    this.updateInterpolator();\n  }\n  isReady() {\n    return this.interpolator !== void 0;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n  isFinished() {\n    return this.progress >= 1;\n  }\n  solveEpsilon(duration) {\n    return 1 / (200 * duration);\n  }\n};\nvar UnitBezier = class {\n  constructor(point1, point2) {\n    __publicField(this, \"a\");\n    __publicField(this, \"b\");\n    __publicField(this, \"c\");\n    this.c = Point.multiply(point1, 3);\n    this.b = Point.subtract(Point.multiply(Point.subtract(point2, point1), 3), this.c);\n    this.a = Point.subtract(Point.subtract(Point(1, 1), this.c), this.b);\n  }\n  solve(x, epsilon2) {\n    return this.sampleY(this.solveForT(x, epsilon2));\n  }\n  sampleX(t) {\n    return ((this.a.x * t + this.b.x) * t + this.c.x) * t;\n  }\n  sampleY(t) {\n    return ((this.a.y * t + this.b.y) * t + this.c.y) * t;\n  }\n  sampleDerivativeX(t) {\n    return (3 * this.a.x * t + 2 * this.b.x) * t + this.c.x;\n  }\n  solveForT(x, epsilon2) {\n    let t0, t1, t2, x2, d2, i;\n    t2 = x;\n    for (i = 0; i < 8; ++i) {\n      x2 = this.sampleX(t2) - x;\n      if (Math.abs(x2) < epsilon2)\n        return t2;\n      d2 = this.sampleDerivativeX(t2);\n      if (Math.abs(d2) < epsilon2)\n        break;\n      t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0)\n      return t0;\n    if (t2 > t1)\n      return t1;\n    while (t0 < t1) {\n      x2 = this.sampleX(t2);\n      if (Math.abs(x2 - x) < epsilon2)\n        return t2;\n      if (x > x2)\n        t0 = t2;\n      else\n        t1 = t2;\n      t2 = (t1 - t0) * 0.5 + t0;\n    }\n    return t2;\n  }\n};\n\n// ../../library/src/animation/Animators/Integrator.ts\nvar Integrator = class {\n  constructor(accelerationFunction) {\n    __publicField(this, \"accelerationForState\");\n    this.accelerationForState = accelerationFunction;\n  }\n  integrateState(state, dt) {\n    const a = this.evaluateState(state);\n    const b = this.evaluateStateWithDerivative(state, dt * 0.5, a);\n    const c = this.evaluateStateWithDerivative(state, dt * 0.5, b);\n    const d = this.evaluateStateWithDerivative(state, dt, c);\n    const dxdt = 1 / 6 * (a.dx + 2 * (b.dx + c.dx) + d.dx);\n    const dvdt = 1 / 6 * (a.dv + 2 * (b.dv + c.dv) + d.dv);\n    state.x = state.x + dxdt * dt;\n    state.v = state.v + dvdt * dt;\n    return state;\n  }\n  evaluateState(initialState2) {\n    const dv = this.accelerationForState(initialState2);\n    return { dx: initialState2.v, dv };\n  }\n  evaluateStateWithDerivative(initialState2, dt, derivative) {\n    const state = {\n      x: initialState2.x + derivative.dx * dt,\n      v: initialState2.v + derivative.dv * dt\n    };\n    const output = {\n      dx: state.v,\n      dv: this.accelerationForState(state)\n    };\n    return output;\n  }\n};\n\n// ../../library/src/animation/Animators/FrictionAnimator.ts\nvar FrictionAnimator = class {\n  constructor(options) {\n    __publicField(this, \"options\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    this.options = {\n      velocity: 0,\n      friction: 2,\n      tolerance: 1 / 10\n    };\n    Object.assign(this.options, options);\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -(this.options.friction * state.v));\n  }\n  setFrom(value) {\n    this.state.x = value;\n  }\n  setTo(value) {\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  getState() {\n    return this.state;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    return this.state.x;\n  }\n  isFinished() {\n    return Math.abs(this.state.v) < this.options.tolerance;\n  }\n};\n\n// ../../library/src/interpolation/Interpolation.ts\nfunction isInterpolatable(value) {\n  return typeof value === \"function\" && value.interpolationFor && typeof value.interpolationFor === \"function\";\n}\nvar Interpolation = {\n  /**\n   * @param from -\n   * @param to -\n   * @internal\n   */\n  handleUndefined: (from, to) => {\n    if (from === void 0) {\n      from = to;\n    }\n    if (to === void 0) {\n      to = from;\n    }\n    return [from, to];\n  }\n};\n\n// ../../library/src/interpolation/NumberInterpolation.ts\nvar NumberInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    const a1 = +from;\n    const b1 = to - a1;\n    return (progress2) => {\n      const value = a1 + b1 * progress2;\n      return value;\n    };\n  },\n  difference(from, to) {\n    return to - from;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringCurveValueConverter.ts\nvar epsilon = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration2 = 10;\nvar minDamping = /* @__PURE__ */ (() => Number.MIN_VALUE)();\nvar maxDamping = 1;\nfunction approximateRoot(func, derivative, initialGuess, times = 12) {\n  let result = initialGuess;\n  for (let i = 1, end = times, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n    result = result - func(result) / derivative(result);\n  }\n  return result;\n}\nfunction angularFrequency(undampedFrequency, dampingRatio) {\n  return undampedFrequency * Math.sqrt(1 - Math.pow(dampingRatio, 2));\n}\nvar SpringCurveValueConverter = {\n  computeDampingRatio: (tension, friction, mass = 1) => {\n    return friction / (2 * Math.sqrt(mass * tension));\n  },\n  // Tries to compute the duration of a spring,\n  // but can't for certain velocities and if dampingRatio >= 1\n  // In those cases it will return null\n  computeDuration: (tension, friction, velocity = 0, mass = 1) => {\n    let duration;\n    const dampingRatio = SpringCurveValueConverter.computeDampingRatio(tension, friction);\n    const undampedFrequency = Math.sqrt(tension / mass);\n    if (dampingRatio < 1) {\n      const a = Math.sqrt(1 - Math.pow(dampingRatio, 2));\n      const b = velocity / (a * undampedFrequency);\n      const c = dampingRatio / a;\n      const d = -((b - c) / epsilon);\n      if (d <= 0) {\n        return null;\n      }\n      duration = Math.log(d) / (dampingRatio * undampedFrequency);\n    } else {\n      return null;\n    }\n    return duration;\n  },\n  computeDerivedCurveOptions: (dampingRatio, duration, velocity = 0, mass = 1) => {\n    let derivative, envelope;\n    dampingRatio = Math.max(Math.min(dampingRatio, maxDamping), minDamping);\n    duration = Math.max(Math.min(duration, maxDuration2), minDuration);\n    if (dampingRatio < 1) {\n      envelope = function(envelopeUndampedFrequency) {\n        const exponentialDecay = envelopeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const a = exponentialDecay - velocity;\n        const b = angularFrequency(envelopeUndampedFrequency, dampingRatio);\n        const c = Math.exp(-currentDisplacement);\n        return epsilon - a / b * c;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const exponentialDecay = derivativeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const d = currentDisplacement * velocity + velocity;\n        const e = Math.pow(dampingRatio, 2) * Math.pow(derivativeUndampedFrequency, 2) * duration;\n        const f = Math.exp(-currentDisplacement);\n        const g = angularFrequency(Math.pow(derivativeUndampedFrequency, 2), dampingRatio);\n        const factor = -envelope(derivativeUndampedFrequency) + epsilon > 0 ? -1 : 1;\n        return factor * ((d - e) * f) / g;\n      };\n    } else {\n      envelope = function(envelopeUndampedFrequency) {\n        const a = Math.exp(-envelopeUndampedFrequency * duration);\n        const b = (envelopeUndampedFrequency - velocity) * duration + 1;\n        return -epsilon + a * b;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const a = Math.exp(-derivativeUndampedFrequency * duration);\n        const b = (velocity - derivativeUndampedFrequency) * Math.pow(duration, 2);\n        return a * b;\n      };\n    }\n    const result = {\n      tension: 100,\n      friction: 10,\n      velocity\n    };\n    const initialGuess = 5 / duration;\n    const undampedFrequency = approximateRoot(envelope, derivative, initialGuess);\n    if (!Number.isNaN(undampedFrequency)) {\n      result.tension = Math.pow(undampedFrequency, 2) * mass;\n      result.friction = dampingRatio * 2 * Math.sqrt(mass * result.tension);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringAnimator.ts\nvar SpringTensionFrictionDefaults = /* @__PURE__ */ (() => ({\n  tension: 500,\n  friction: 10,\n  tolerance: 1 / 1e4,\n  velocity: 0\n}))();\nvar SpringDampingDurationDefaults = {\n  dampingRatio: 1,\n  duration: 1,\n  velocity: 0,\n  mass: 1\n};\nfunction isDampingDurationSpringOptions(options) {\n  if (!options) {\n    return false;\n  }\n  return typeof options.dampingRatio === \"number\" || typeof options.duration === \"number\" || typeof options.mass === \"number\";\n}\nvar SpringAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"difference\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    __publicField(this, \"interpolator\");\n    let _opt;\n    if (isDampingDurationSpringOptions(options)) {\n      const toPass = { ...SpringDampingDurationDefaults, ...options };\n      _opt = SpringCurveValueConverter.computeDerivedCurveOptions(\n        toPass.dampingRatio,\n        toPass.duration,\n        toPass.velocity,\n        toPass.mass\n      );\n    } else {\n      _opt = options;\n    }\n    this.options = { ...SpringTensionFrictionDefaults, ..._opt };\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -this.options.tension * state.x - this.options.friction * state.v);\n  }\n  isReady() {\n    return this.interpolator !== void 0 && this.difference !== void 0;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    const value = this.interpolator(this.progress());\n    return value;\n  }\n  isFinished() {\n    const positionNearZero = Math.abs(this.state.x) < this.options.tolerance;\n    const velocityNearZero = Math.abs(this.state.v) < this.options.tolerance;\n    return positionNearZero && velocityNearZero;\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  progress() {\n    return 1 - this.state.x / this.difference;\n  }\n  // The spring always settles to 0, so we create an interpolation to the destination\n  // And calculate the progress based on the current state and the span of the interpolation\n  // This lets us integrate over state.x, even though Value is generic\n  setTo(value) {\n    this.destination = value;\n    this.difference = this.interpolation.difference(this.destination, this.current);\n    this.state.x = this.difference;\n    this.updateInterpolator();\n  }\n  /** @internal */\n  getState() {\n    return this.state;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n};\n\n// ../../library/src/animation/Animators/InertialScrollAnimator.ts\nvar Defaults = {\n  velocity: 0,\n  min: 0,\n  max: 0,\n  momentum: {\n    friction: 2,\n    tolerance: 10\n  },\n  bounce: {\n    tension: 500,\n    friction: 10,\n    tolerance: 1\n  }\n};\nvar InertialScrollAnimator = class {\n  constructor(options) {\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"frictionAnimator\");\n    __publicField(this, \"springAnimator\");\n    __publicField(this, \"useSpring\");\n    this.options = Object.assign({ ...Defaults }, options);\n    this.frictionAnimator = new FrictionAnimator({\n      friction: this.options.momentum.friction,\n      tolerance: this.options.momentum.tolerance,\n      velocity: this.options.velocity\n    });\n    this.springAnimator = new SpringAnimator(\n      {\n        tension: this.options.bounce.tension,\n        friction: this.options.bounce.friction,\n        tolerance: this.options.bounce.tolerance,\n        velocity: this.options.velocity\n      },\n      NumberInterpolation\n    );\n    this.useSpring = false;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.current = this.currentAnimator.next(delta);\n    if (!this.useSpring) {\n      this.tryTransitionToSpring();\n    }\n    return this.current;\n  }\n  get currentAnimator() {\n    if (this.useSpring) {\n      return this.springAnimator;\n    }\n    return this.frictionAnimator;\n  }\n  isFinished() {\n    return this.currentAnimator.isFinished();\n  }\n  get state() {\n    return this.currentAnimator.getState();\n  }\n  setFrom(value) {\n    this.setState({ x: value, v: this.state.v });\n  }\n  setState(state) {\n    this.frictionAnimator.setFrom(state.x);\n    this.frictionAnimator.setVelocity(state.v);\n    if (this.isValidState()) {\n      return this.tryTransitionToSpring();\n    } else {\n      let bound = 0;\n      if (this.state.x <= this.options.min) {\n        bound = this.options.min;\n      }\n      if (this.state.x >= this.options.max) {\n        bound = this.options.max;\n      }\n      return this.transitionToSpring(bound);\n    }\n  }\n  setTo(destination) {\n    this.frictionAnimator.setTo(destination);\n    this.springAnimator.setTo(destination);\n  }\n  setLimits(min, max) {\n    this.options.min = min;\n    this.options.max = max;\n  }\n  // If the position is outside the min and max bounds, and traveling\n  // further away, then transition from friction to spring animation\n  tryTransitionToSpring() {\n    const belowMinWithVelocity = this.state.x < this.options.min && this.state.v <= 0;\n    const aboveMaxWithVelocity = this.state.x > this.options.max && this.state.v >= 0;\n    if (belowMinWithVelocity || aboveMaxWithVelocity) {\n      let bound;\n      if (belowMinWithVelocity) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      this.transitionToSpring(bound);\n    } else {\n      this.useSpring = false;\n    }\n  }\n  transitionToSpring(bound) {\n    this.springAnimator.setFrom(this.state.x);\n    this.springAnimator.setVelocity(this.state.v);\n    this.springAnimator.setTo(bound);\n    this.useSpring = true;\n  }\n  // If the position is outside the min and max bounds, but traveling\n  // back towards the bounds, check if the velocity is sufficient to\n  // carry the position back within bounds. If it is, let friction do the\n  // work. If not, the state is invalid, so use the spring.\n  isValidState() {\n    const belowMinTravelingBack = this.state.x < this.options.min && this.state.v > 0;\n    const aboveMaxTravelingBack = this.state.x > this.options.max && this.state.v < 0;\n    if (belowMinTravelingBack || aboveMaxTravelingBack) {\n      let bound;\n      if (belowMinTravelingBack) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      const friction = this.frictionAnimator.options.friction;\n      const solution = 1 - friction * (bound - this.state.x) / this.state.v;\n      return solution > 0;\n    }\n    return true;\n  }\n  // The math behind _isValidState:\n  //\n  // 1. Integrate the friction animator's acceleration to find velocity\n  //\n  //         a = - k * v\n  //     dv/dt = - k * v\n  // Int(dv/v) = - k * Int(dt)\n  //      ln v = - k * t + C\n  //\n  // => Solve for C at t = 0\n  //\n  // ln v(0) = - k * 0 + C\n  // ln v(0) = C\n  //\n  // => Plug C back into v(t)\n  //\n  //     ln v = - k * t + ln v(0)\n  // e^(ln v) = e^(- k * t) + e^(ln v(0))\n  //        v = v(0) * e^(- k * t)\n  //\n  // 2. Integrate velocity to find position\n  //\n  // Int(v) = v(0) * Int(e^(- k * t))\n  //      x = - v(0) * e^(-k * t) / k + C\n  //\n  // => Solve for C at t = 0\n  //\n  //            x(0) = - v(0) * e^(-k * 0) / k + C\n  //            x(0) = - v(0) / k + C\n  // x(0) + v(0) / k = C\n  //\n  // => Plug C back into x(t)\n  //\n  // x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //\n  // 3. Check if a (real) solution exists for t for position x\n  //\n  //                                x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //                         x - x(0) = - v(0) * e^(-k * t) / k + v(0) / k\n  //                   k * (x - x(0)) = - v(0) * e^(-k * t) + v(0)\n  //            k * (x - x(0)) - v(0) = - v(0) * e^(-k * t)\n  // (k * (x - x(0)) - v(0)) / - v(0) = e^(-k * t)\n  //       1 - (k * (x - x(0)) / v(0) = e^(-k * t)\n  //   ln(1 - (k * (x - x(0)) / v(0)) = -k * t\n  //\n  // Therefore, a real solution exists if 1 - (k * (x - x(0)) / v(0) > 0\n};\n\n// ../../library/src/render/types/Color/CSSNames.ts\nvar cssNames = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\"\n};\n\n// ../../library/src/render/types/Color/Utils.ts\nfunction modulate(value, rangeA, rangeB, limit = false) {\n  const [fromLow, fromHigh] = rangeA;\n  const [toLow, toHigh] = rangeB;\n  const fromDelta = fromHigh - fromLow;\n  if (fromDelta === 0)\n    return (toHigh + toLow) / 2;\n  const toDelta = toHigh - toLow;\n  if (toDelta === 0)\n    return toLow;\n  const result = toLow + (value - fromLow) / fromDelta * toDelta;\n  if (limit === true) {\n    if (toLow < toHigh) {\n      if (result < toLow) {\n        return toLow;\n      }\n      if (result > toHigh) {\n        return toHigh;\n      }\n    } else {\n      if (result > toLow) {\n        return toLow;\n      }\n      if (result < toHigh) {\n        return toHigh;\n      }\n    }\n  }\n  return result;\n}\nfunction isNumeric(value) {\n  return !Number.isNaN(value) && Number.isFinite(value);\n}\nfunction percentToFraction(val) {\n  const digits = numberFromString(val);\n  if (digits !== void 0) {\n    if (val.includes(\"%\")) {\n      return digits / 100;\n    }\n    return digits;\n  }\n  return 0;\n}\nfunction numberFromString(input) {\n  const match = /\\d?\\.?\\d+/u.exec(input);\n  return match ? Number(match[0]) : void 0;\n}\n\n// ../../library/src/render/types/Color/types.ts\nvar ColorFormat = /* @__PURE__ */ ((ColorFormat2) => {\n  ColorFormat2[\"RGB\"] = \"rgb\";\n  ColorFormat2[\"HSL\"] = \"hsl\";\n  ColorFormat2[\"HSV\"] = \"hsv\";\n  ColorFormat2[\"HEX\"] = \"hex\";\n  ColorFormat2[\"NAME\"] = \"name\";\n  return ColorFormat2;\n})(ColorFormat || {});\nvar ColorMixModelType = /* @__PURE__ */ ((ColorMixModelType2) => {\n  ColorMixModelType2[\"RGB\"] = \"rgb\";\n  ColorMixModelType2[\"RGBA\"] = \"rgba\";\n  ColorMixModelType2[\"HSL\"] = \"hsl\";\n  ColorMixModelType2[\"HSLA\"] = \"hsla\";\n  ColorMixModelType2[\"HUSL\"] = \"husl\";\n  return ColorMixModelType2;\n})(ColorMixModelType || {});\n\n// ../../library/src/render/types/Color/converters.ts\nvar Hsluv = /* @__PURE__ */ (() => require_hsluv().Hsluv)();\nvar hsluvConverter = /* @__PURE__ */ new Hsluv();\nfunction rgbToHsluv(r, g, b) {\n  hsluvConverter.rgb_r = r / 255;\n  hsluvConverter.rgb_g = g / 255;\n  hsluvConverter.rgb_b = b / 255;\n  hsluvConverter.rgbToHsluv();\n  return {\n    h: hsluvConverter.hsluv_h,\n    s: hsluvConverter.hsluv_s,\n    l: hsluvConverter.hsluv_l\n  };\n}\nfunction rgbaFromHusl(h, s, l, a = 1) {\n  hsluvConverter.hsluv_h = h;\n  hsluvConverter.hsluv_s = s;\n  hsluvConverter.hsluv_l = l;\n  hsluvConverter.hsluvToRgb();\n  return {\n    r: hsluvConverter.rgb_r * 255,\n    g: hsluvConverter.rgb_g * 255,\n    b: hsluvConverter.rgb_b * 255,\n    a\n  };\n}\nfunction hsvToStr(h, s, v, a) {\n  const _h = Math.round(h);\n  const _s = Math.round(s * 100);\n  const _v = Math.round(v * 100);\n  return a === void 0 || a === 1 ? \"hsv(\" + _h + \", \" + _s + \"%, \" + _v + \"%)\" : \"hsva(\" + _h + \", \" + _s + \"%, \" + _v + \"%, \" + a + \")\";\n}\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: isNumeric(r) ? bound01(r, 255) * 255 : 0,\n    g: isNumeric(g) ? bound01(g, 255) * 255 : 0,\n    b: isNumeric(b) ? bound01(b, 255) * 255 : 0\n  };\n}\nfunction rgbToHex(r, g, b, allow3Char) {\n  const hex = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16))\n  ];\n  if (allow3Char && hex[0].charAt(0) === hex[0].charAt(1) && hex[1].charAt(0) === hex[1].charAt(1) && hex[2].charAt(0) === hex[2].charAt(1)) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n  }\n  return hex.join(\"\");\n}\nfunction rgbToHsl(r, g, b) {\n  let l;\n  let s;\n  const _r = bound01(r, 255);\n  const _g = bound01(g, 255);\n  const _b = bound01(b, 255);\n  const max = Math.max(_r, _g, _b);\n  const min = Math.min(_r, _g, _b);\n  let h = s = l = (max + min) / 2;\n  if (max === min) {\n    h = s = 0;\n  } else {\n    const d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case _r:\n        h = (_g - _b) / d + (_g < _b ? 6 : 0);\n        break;\n      case _g:\n        h = (_b - _r) / d + 2;\n        break;\n      case _b:\n        h = (_r - _g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h: h * 360, s, l };\n}\nfunction hue2rgb(p, q, t) {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\nfunction hslToRgb(h, s, l) {\n  let r;\n  let g;\n  let b;\n  h = bound01(h, 360);\n  s = bound01(s * 100, 100);\n  l = bound01(l * 100, 100);\n  if (s === 0) {\n    r = g = b = l;\n  } else {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h;\n  const s = max === 0 ? 0 : d / max;\n  const v = max;\n  if (max === min) {\n    h = 0;\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h, s, v };\n}\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s * 100, 100);\n  v = bound01(v * 100, 100);\n  const i = Math.floor(h);\n  const f = h - i;\n  const p = v * (1 - s);\n  const q = v * (1 - f * s);\n  const t = v * (1 - (1 - f) * s);\n  const mod = i % 6;\n  const r = [v, q, p, p, t, v][mod];\n  const g = [t, v, v, q, p, p][mod];\n  const b = [p, p, t, v, v, q][mod];\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction bound01(n, max) {\n  let _max;\n  let _n;\n  if (typeof max === \"string\")\n    _max = parseFloat(max);\n  else\n    _max = max;\n  if (typeof n === \"string\") {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n    const processPercent = isPercentage(n);\n    _n = Math.min(_max, Math.max(0, parseFloat(n)));\n    if (processPercent) {\n      _n = Math.floor(_n * _max) / 100;\n    }\n  } else {\n    _n = n;\n  }\n  if (Math.abs(_n - _max) < 1e-6) {\n    return 1;\n  }\n  return _n % _max / _max;\n}\nfunction isOnePointZero(n) {\n  return typeof n === \"string\" && n.includes(\".\") && parseFloat(n) === 1;\n}\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.includes(\"%\");\n}\nfunction pad2(char) {\n  if (char.length === 1) {\n    return \"0\" + char;\n  } else {\n    return \"\" + char;\n  }\n}\nvar matchers = /* @__PURE__ */ (() => {\n  const cssInteger = \"[-\\\\+]?\\\\d+%?\";\n  const cssNumber = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n  const cssUnit = \"(?:\" + cssNumber + \")|(?:\" + cssInteger + \")\";\n  const permissiveMatch3 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  const permissiveMatch4 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  return {\n    rgb: new RegExp(\"rgb\" + permissiveMatch3),\n    rgba: new RegExp(\"rgba\" + permissiveMatch4),\n    hsl: new RegExp(\"hsl\" + permissiveMatch3),\n    hsla: new RegExp(\"hsla\" + permissiveMatch4),\n    hsv: new RegExp(\"hsv\" + permissiveMatch3),\n    hsva: new RegExp(\"hsva\" + permissiveMatch4),\n    hex3: /^([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex6: /^([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu,\n    hex4: /^#?([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex8: /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu\n  };\n})();\nfunction stringToObject(inputColor) {\n  if (inputColor.includes(\"gradient(\"))\n    return false;\n  if (inputColor.includes(\"var(\"))\n    return false;\n  const trimLeft = /^[\\s,#]+/u;\n  let color2 = inputColor.replace(trimLeft, \"\").trimEnd().toLowerCase();\n  const namedColor = cssNames[color2];\n  if (namedColor) {\n    color2 = namedColor;\n  }\n  if (color2 === \"transparent\") {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: \"name\" /* NAME */\n    };\n  }\n  let match;\n  if (match = matchers.rgb.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: 1,\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.rgba.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.hsl.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsla.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsv.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hsva.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hex8.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: convertHexToDecimal(match[4] ?? \"\"),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex6.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: 1,\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex4.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex3.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: 1,\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  } else {\n    return false;\n  }\n}\nfunction parseIntFromHex(hex) {\n  return parseInt(hex, 16);\n}\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\n// ../../library/src/render/types/Color/Color.ts\nvar cache = /* @__PURE__ */ new Map();\nvar Color = /* @__PURE__ */ (() => {\n  function Color2(color2, r, g, b) {\n    if (typeof color2 === \"string\") {\n      let c = cache.get(color2);\n      if (c)\n        return c;\n      c = createColor(color2);\n      if (c === void 0)\n        return { ...Color2(\"black\"), isValid: false };\n      cache.set(color2, c);\n      return c;\n    }\n    const created = createColor(color2, r, g, b);\n    return created !== void 0 ? created : { ...Color2(\"black\"), isValid: false };\n  }\n  function createColor(color2, r, g, b) {\n    if (color2 === \"\")\n      return void 0;\n    const colorData = getCompleteColorStrategy(color2, r, g, b);\n    if (colorData) {\n      const newColor = {\n        r: colorData.r,\n        g: colorData.g,\n        b: colorData.b,\n        a: colorData.a,\n        h: colorData.h,\n        s: colorData.s,\n        l: colorData.l,\n        initialValue: typeof color2 === \"string\" && colorData.format !== \"hsv\" /* HSV */ ? color2 : void 0,\n        roundA: Math.round(100 * colorData.a) / 100,\n        format: colorData.format,\n        mix: Color2.mix,\n        toValue: () => Color2.toRgbString(newColor)\n      };\n      return newColor;\n    } else {\n      return void 0;\n    }\n  }\n  const ColorMixModel = {\n    isRGB(colorModel) {\n      return colorModel === \"rgb\" /* RGB */ || colorModel === \"rgba\" /* RGBA */;\n    },\n    isHSL(colorModel) {\n      return colorModel === \"hsl\" /* HSL */ || colorModel === \"hsla\" /* HSLA */;\n    }\n  };\n  Color2.inspect = (color2, initialValue) => {\n    if (color2.format === \"hsl\" /* HSL */) {\n      return `<${color2.constructor.name} h:${color2.h} s:${color2.s} l:${color2.l} a:${color2.a}>`;\n    } else if (color2.format === \"hex\" /* HEX */ || color2.format === \"name\" /* NAME */) {\n      return `<${color2.constructor.name} \"${initialValue}\">`;\n    } else {\n      return `<${color2.constructor.name} r:${color2.r} g:${color2.g} b:${color2.b} a:${color2.a}>`;\n    }\n  };\n  Color2.isColor = (color2) => {\n    if (typeof color2 === \"string\") {\n      return Color2.isColorString(color2);\n    } else {\n      return Color2.isColorObject(color2);\n    }\n  };\n  Color2.isColorString = (colorString) => {\n    if (typeof colorString === \"string\") {\n      return stringToObject(colorString) !== false;\n    }\n    return false;\n  };\n  Color2.isColorObject = (color2) => {\n    return color2 && typeof color2 !== \"string\" && typeof color2.r === \"number\" && typeof color2.g === \"number\" && typeof color2.b === \"number\" && typeof color2.h === \"number\" && typeof color2.s === \"number\" && typeof color2.l === \"number\" && typeof color2.a === \"number\" && typeof color2.roundA === \"number\" && typeof color2.format === \"string\";\n  };\n  Color2.toString = (color2) => {\n    return Color2.toRgbString(color2);\n  };\n  Color2.toHex = (color2, allow3Char = false) => {\n    return rgbToHex(color2.r, color2.g, color2.b, allow3Char);\n  };\n  Color2.toHexString = (color2, allow3Char = false) => {\n    return `#${Color2.toHex(color2, allow3Char)}`;\n  };\n  Color2.toRgbString = (color2) => {\n    return color2.a === 1 ? \"rgb(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \")\" : \"rgba(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \", \" + color2.roundA + \")\";\n  };\n  Color2.toHusl = (color2) => {\n    return {\n      ...rgbToHsluv(color2.r, color2.g, color2.b),\n      a: color2.roundA\n    };\n  };\n  Color2.toHslString = (color2) => {\n    const hsl = Color2.toHsl(color2);\n    const h = Math.round(hsl.h);\n    const s = Math.round(hsl.s * 100);\n    const l = Math.round(hsl.l * 100);\n    return color2.a === 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toHsv = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: color2.a };\n  };\n  Color2.toHsvString = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    const h = Math.round(hsv.h * 360);\n    const s = Math.round(hsv.s * 100);\n    const v = Math.round(hsv.v * 100);\n    return color2.a === 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toName = (color2) => {\n    if (color2.a === 0) {\n      return \"transparent\";\n    }\n    if (color2.a < 1) {\n      return false;\n    }\n    const hex = rgbToHex(color2.r, color2.g, color2.b, true);\n    for (const key7 of Object.keys(cssNames)) {\n      const value = cssNames[key7];\n      if (value === hex) {\n        return key7;\n      }\n    }\n    return false;\n  };\n  Color2.toHsl = (color2) => {\n    return {\n      h: Math.round(color2.h),\n      s: color2.s,\n      l: color2.l,\n      a: color2.a\n    };\n  };\n  Color2.toRgb = (color2) => {\n    return {\n      r: Math.round(color2.r),\n      g: Math.round(color2.g),\n      b: Math.round(color2.b),\n      a: color2.a\n    };\n  };\n  Color2.brighten = (color2, amount = 10) => {\n    const rgb = Color2.toRgb(color2);\n    rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n    rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n    rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n    return Color2(rgb);\n  };\n  Color2.lighten = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l += amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.darken = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l -= amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.saturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s += amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.desaturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s -= amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.grayscale = (color2) => {\n    return Color2.desaturate(color2, 100);\n  };\n  Color2.hueRotate = (color2, angle) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.h += angle;\n    hsl.h = hsl.h > 360 ? hsl.h - 360 : hsl.h;\n    return Color2(hsl);\n  };\n  Color2.alpha = (color2, a = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a\n    });\n  };\n  Color2.transparent = (color2) => {\n    return Color2.alpha(color2, 0);\n  };\n  Color2.multiplyAlpha = (color2, alphaValue = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a: color2.a * alphaValue\n    });\n  };\n  Color2.interpolate = (colorA, colorB, model = \"rgb\" /* RGB */) => {\n    if (!Color2.isColorObject(colorA) || !Color2.isColorObject(colorB)) {\n      throw new TypeError(\"Both arguments for Color.interpolate must be Color objects\");\n    }\n    return (progress2) => {\n      const color2 = Color2.mixAsColor(colorA, colorB, progress2, false, model);\n      return color2;\n    };\n  };\n  Color2.mix = (from, toColor, { model = \"rgb\" /* RGB */ } = {}) => {\n    const fromColor = typeof from === \"string\" ? Color2(from) : from;\n    const mixer = Color2.interpolate(fromColor, toColor, model);\n    return (p) => Color2.toRgbString(mixer(p));\n  };\n  Color2.mixAsColor = (colorA, colorB, fraction2 = 0.5, limit = false, model = \"rgb\" /* RGB */) => {\n    let result = null;\n    if (ColorMixModel.isRGB(model)) {\n      result = Color2({\n        r: modulate(fraction2, [0, 1], [colorA.r, colorB.r], limit),\n        g: modulate(fraction2, [0, 1], [colorA.g, colorB.g], limit),\n        b: modulate(fraction2, [0, 1], [colorA.b, colorB.b], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      });\n    } else {\n      let hslA, hslB;\n      if (ColorMixModel.isHSL(model)) {\n        hslA = Color2.toHsl(colorA);\n        hslB = Color2.toHsl(colorB);\n      } else {\n        hslA = Color2.toHusl(colorA);\n        hslB = Color2.toHusl(colorB);\n      }\n      if (hslA.s === 0) {\n        hslA.h = hslB.h;\n      } else if (hslB.s === 0) {\n        hslB.h = hslA.h;\n      }\n      const fromH = hslA.h;\n      const toH = hslB.h;\n      let deltaH = toH - fromH;\n      if (deltaH > 180) {\n        deltaH = toH - 360 - fromH;\n      } else if (deltaH < -180) {\n        deltaH = toH + 360 - fromH;\n      }\n      const tween = {\n        h: modulate(fraction2, [0, 1], [fromH, fromH + deltaH], limit),\n        s: modulate(fraction2, [0, 1], [hslA.s, hslB.s], limit),\n        l: modulate(fraction2, [0, 1], [hslA.l, hslB.l], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      };\n      if (ColorMixModel.isHSL(model)) {\n        result = Color2(tween);\n      } else {\n        result = Color2(rgbaFromHusl(tween.h, tween.s, tween.l, tween.a));\n      }\n    }\n    return result;\n  };\n  Color2.random = (alphaValue = 1) => {\n    function gen() {\n      return Math.floor(Math.random() * 255);\n    }\n    return Color2(\"rgba(\" + gen() + \", \" + gen() + \", \" + gen() + \", \" + alphaValue + \")\");\n  };\n  Color2.grey = (amount = 0.5, alphaValue = 1) => {\n    amount = Math.floor(amount * 255);\n    return Color2(\"rgba(\" + amount + \", \" + amount + \", \" + amount + \", \" + alphaValue + \")\");\n  };\n  Color2.gray = Color2.grey;\n  Color2.rgbToHsl = (r, g, b) => {\n    return rgbToHsl(r, g, b);\n  };\n  Color2.isValidColorProperty = (name, value) => {\n    const isColorKey = name.toLowerCase().slice(-5) === \"color\" || name === \"fill\" || name === \"stroke\";\n    if (isColorKey && typeof value === \"string\" && Color2.isColorString(value)) {\n      return true;\n    }\n    return false;\n  };\n  Color2.difference = (colorA, colorB) => {\n    const _r = (colorA.r + colorB.r) / 2;\n    const deltaR = colorA.r - colorB.r;\n    const deltaG = colorA.g - colorB.g;\n    const deltaB = colorA.b - colorB.b;\n    const deltaR2 = Math.pow(deltaR, 2);\n    const deltaG2 = Math.pow(deltaG, 2);\n    const deltaB2 = Math.pow(deltaB, 2);\n    return Math.sqrt(2 * deltaR2 + 4 * deltaG2 + 3 * deltaB2 + _r * (deltaR2 - deltaB2) / 256);\n  };\n  Color2.equal = (colorA, colorB, tolerance = 0.1) => {\n    if (Math.abs(colorA.r - colorB.r) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.g - colorB.g) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.b - colorB.b) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.a - colorB.a) * 256 >= tolerance) {\n      return false;\n    }\n    return true;\n  };\n  const channelToDecimal = interpolate([0, 255], [0, 1]);\n  function convertChannelToLinearRgb(channel) {\n    channel = channelToDecimal(channel);\n    const abs = Math.abs(channel);\n    if (abs < 0.04045)\n      return channel / 12.92;\n    return (Math.sign(channel) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n  }\n  Color2.luminance = (color2) => {\n    const { r, g, b } = Color2.toRgb(color2);\n    return 0.2126 * convertChannelToLinearRgb(r) + 0.7152 * convertChannelToLinearRgb(g) + 0.0722 * convertChannelToLinearRgb(b);\n  };\n  Color2.contrast = (a, b) => {\n    const l1 = Color2.luminance(a);\n    const l2 = Color2.luminance(b);\n    return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);\n  };\n  return Color2;\n})();\nfunction getCompleteColorStrategy(colorOrR, g, b, a = 1) {\n  let completeColor;\n  if (typeof colorOrR === \"number\" && !Number.isNaN(colorOrR) && typeof g === \"number\" && !Number.isNaN(g) && typeof b === \"number\" && !Number.isNaN(b)) {\n    const _r = colorOrR;\n    const _g = g;\n    const _b = b;\n    const _a = a;\n    completeColor = getCompleteColorFromRGB({ r: _r, g: _g, b: _b, a: _a });\n  } else if (typeof colorOrR === \"string\") {\n    completeColor = getCompleteColorFromString(colorOrR);\n  } else if (typeof colorOrR === \"object\") {\n    if (colorOrR.hasOwnProperty(\"r\") && colorOrR.hasOwnProperty(\"g\") && colorOrR.hasOwnProperty(\"b\")) {\n      completeColor = getCompleteColorFromRGB(colorOrR);\n    } else {\n      completeColor = getCompleteColorFromHSL(colorOrR);\n    }\n  }\n  return completeColor;\n}\nfunction getCompleteColorFromString(color2) {\n  const result = stringToObject(color2);\n  if (result) {\n    if (result.format === \"hsl\" /* HSL */) {\n      return getCompleteColorFromHSL(result);\n    } else if (result.format === \"hsv\" /* HSV */) {\n      return getCompleteColorFromHSV(result);\n    } else {\n      return getCompleteColorFromRGB(result);\n    }\n  }\n}\nfunction getCompleteColorFromHSV(color2) {\n  const rgb = hsvToRgb(color2.h, color2.s, color2.v);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromRGB(color2) {\n  const rgb = rgbToRgb(color2.r, color2.g, color2.b);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromHSL(color2) {\n  let h;\n  let s;\n  let l;\n  let rgb = { r: 0, g: 0, b: 0 };\n  let hsl = { h: 0, s: 0, l: 0 };\n  h = isNumeric(color2.h) ? color2.h : 0;\n  h = (h + 360) % 360;\n  s = isNumeric(color2.s) ? color2.s : 1;\n  if (typeof color2.s === \"string\") {\n    s = numberFromString(color2.s);\n  }\n  l = isNumeric(color2.l) ? color2.l : 0.5;\n  if (typeof color2.l === \"string\") {\n    l = numberFromString(color2.l);\n  }\n  rgb = hslToRgb(h, s, l);\n  hsl = {\n    h,\n    s,\n    l\n  };\n  return {\n    ...rgb,\n    ...hsl,\n    a: color2.a === void 0 ? 1 : color2.a,\n    format: \"hsl\" /* HSL */\n  };\n}\nfunction correctAlpha(alphaValue) {\n  alphaValue = parseFloat(alphaValue);\n  if (alphaValue < 0) {\n    alphaValue = 0;\n  }\n  if (Number.isNaN(alphaValue) || alphaValue > 1) {\n    alphaValue = 1;\n  }\n  return alphaValue;\n}\n\n// ../../library/src/interpolation/ColorInterpolation.ts\nvar ColorInterpolation = (type = \"husl\" /* HUSL */) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return Color.interpolate(Color(from), Color(to), type);\n    },\n    difference(from, to) {\n      return Color.difference(Color(from), Color(to));\n    }\n  };\n};\n\n// ../../library/src/interpolation/NoInterpolation.ts\nvar NoInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    return (progress2) => {\n      return progress2 < 0.5 ? from : to;\n    };\n  },\n  difference(from, to) {\n    return from === to ? 0 : 1;\n  }\n};\n\n// ../../library/src/interpolation/ObjectInterpolation.ts\nvar ObjectInterpolation = (valueInterpolation) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      const result = Object.assign({}, from);\n      const interpolations = {};\n      const keys3 = /* @__PURE__ */ new Set();\n      for (const key7 in from) {\n        interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n        keys3.add(key7);\n      }\n      for (const key7 in to) {\n        if (!keys3.has(key7)) {\n          interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n          keys3.add(key7);\n        }\n      }\n      return (progress2) => {\n        for (const key7 in interpolations) {\n          result[key7] = interpolations[key7](progress2);\n        }\n        return result;\n      };\n    },\n    difference(from, to) {\n      let sum = 0;\n      for (const key7 in from) {\n        const difference = valueInterpolation.difference(from[key7], to[key7]);\n        sum += Math.pow(difference, 2);\n      }\n      return Math.sqrt(sum);\n    }\n  };\n};\n\n// ../../library/src/interpolation/ValueInterpolation.ts\nvar DefaultInterpolationOptions = {\n  colorModel: \"husl\" /* HUSL */\n};\nvar ValueInterpolation = class {\n  /**\n   * @internal\n   */\n  constructor(options = DefaultInterpolationOptions) {\n    __publicField(this, \"options\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"interpolate\", (from, to) => {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return this.interPolationForValue(from).interpolate(from, to);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"difference\", (from, to) => {\n      const interpolation = this.interPolationForValue(from);\n      return interpolation.difference(from, to);\n    });\n    this.options = { ...DefaultInterpolationOptions, ...options };\n  }\n  /**\n   * @internal\n   */\n  interPolationForValue(value) {\n    const type = typeof value;\n    if (type === \"number\") {\n      return NumberInterpolation;\n    } else if (type === \"boolean\" || type === \"function\") {\n      return NoInterpolation;\n    } else if (Color.isColor(value)) {\n      return ColorInterpolation(this.options.colorModel);\n    } else if (type === \"object\") {\n      if (value === null) {\n        return NoInterpolation;\n      }\n      const constructor = value.constructor;\n      if (constructor && isInterpolatable(constructor)) {\n        const interpolation = constructor.interpolationFor(value, this);\n        if (interpolation && interpolation !== this && interpolation.constructor !== ValueInterpolation) {\n          return interpolation;\n        }\n      }\n      return ObjectInterpolation(this);\n    }\n    console.warn(`No interpolation defined for ${value}`);\n    return NoInterpolation;\n  }\n};\nvar AnyInterpolation = /* @__PURE__ */ new ValueInterpolation();\n\n// ../../library/src/render/utils/isMotionValue.ts\nvar isMotionValue2 = (v) => v instanceof MotionValue;\n\n// ../../library/src/animation/Animators/PrecalculatedAnimator.ts\nvar Defaults2 = /* @__PURE__ */ (() => ({\n  delta: 1 / 60,\n  maxValues: 1e4\n}))();\nvar PrecalculatedAnimator = class {\n  constructor(options) {\n    __publicField(this, \"animator\");\n    __publicField(this, \"values\");\n    __publicField(this, \"currentTime\", 0);\n    __publicField(this, \"totalTime\");\n    __publicField(this, \"options\");\n    this.options = { ...Defaults2, ...options };\n    this.animator = options.animator;\n  }\n  preCalculate() {\n    if (!this.animator.isReady()) {\n      return;\n    }\n    const { delta } = this.options;\n    this.values = [];\n    while (!this.animator.isFinished() && this.values.length < this.options.maxValues) {\n      let value = this.animator.next(this.options.delta);\n      if (typeof value === \"object\" && value) {\n        const object = value;\n        const copy = { ...object };\n        value = copy;\n      }\n      this.values.push(value);\n    }\n    this.totalTime = this.values.length * delta;\n  }\n  indexForTime(time) {\n    return Math.max(\n      0,\n      Math.min(this.values.length - 1, Math.round(this.values.length * (time / this.totalTime)) - 1)\n    );\n  }\n  valueForTime(time) {\n    const index = this.indexForTime(time);\n    const value = this.values[index];\n    return value;\n  }\n  setFrom(value) {\n    this.animator.setFrom(value);\n    this.preCalculate();\n  }\n  setTo(end) {\n    this.animator.setTo(end);\n    this.preCalculate();\n  }\n  isReady() {\n    return this.values !== void 0 && this.values.length > 0 && this.totalTime > 0;\n  }\n  next(delta) {\n    this.currentTime += delta;\n    return this.valueForTime(this.currentTime);\n  }\n  isFinished() {\n    return this.totalTime === 0 || this.currentTime >= this.totalTime;\n  }\n  get endValue() {\n    this.preCalculate();\n    const value = this.valueForTime(this.totalTime);\n    return this.values.length > 0 ? value : this.animator.next(0);\n  }\n};\n\n// ../../library/src/core/EventEmitter.ts\nvar EventEmitter3 = /* @__PURE__ */ (() => require_eventemitter3().EventEmitter)();\nvar EventEmitter = class {\n  constructor() {\n    __publicField(this, \"_emitter\", new EventEmitter3());\n  }\n  eventNames() {\n    return this._emitter.eventNames();\n  }\n  eventListeners() {\n    const listeners = {};\n    for (const eventName of this._emitter.eventNames()) {\n      listeners[eventName] = this._emitter.listeners(eventName);\n    }\n    return listeners;\n  }\n  on(eventName, fn) {\n    this.addEventListener(eventName, fn, false, false, this);\n  }\n  off(eventName, fn) {\n    this.removeEventListeners(eventName, fn);\n  }\n  once(eventName, fn) {\n    this.addEventListener(eventName, fn, true, false, this);\n  }\n  unique(eventName, fn) {\n    this.addEventListener(eventName, fn, false, true, this);\n  }\n  addEventListener(eventName, fn, once, unique, context) {\n    if (unique) {\n      for (const name of this._emitter.eventNames()) {\n        if (fn === this._emitter.listeners(name)) {\n          return;\n        }\n      }\n    }\n    if (once === true) {\n      this._emitter.once(eventName, fn, context);\n    } else {\n      this._emitter.addListener(eventName, fn, context);\n    }\n  }\n  removeEventListeners(eventName, fn) {\n    if (eventName) {\n      this._emitter.removeListener(eventName, fn);\n    } else {\n      this.removeAllEventListeners();\n    }\n  }\n  removeAllEventListeners() {\n    this._emitter.removeAllListeners();\n  }\n  countEventListeners(eventName, handler) {\n    if (eventName) {\n      return this._emitter.listeners(eventName).length;\n    } else {\n      let count = 0;\n      for (const name of this._emitter.eventNames()) {\n        count += this._emitter.listeners(name).length;\n      }\n      return count;\n    }\n  }\n  emit(eventName, ...args) {\n    this._emitter.emit(eventName, ...args);\n  }\n};\n\n// ../../library/src/core/Time.ts\nvar _raf = (f) => {\n  setTimeout(f, 1 / 60);\n};\nvar __raf = /* @__PURE__ */ (() => safeWindow[\"requestAnimationFrame\"] || _raf)();\nvar raf = (f) => __raf(f);\n\n// ../../library/src/core/Loop.ts\nvar LoopTimeStep = /* @__PURE__ */ (() => 1 / 60)();\nvar Loop = class extends EventEmitter {\n  /**\n   * @internal\n   */\n  constructor(start = false) {\n    super();\n    __publicField(this, \"_started\", false);\n    __publicField(this, \"_frame\", 0);\n    __publicField(this, \"_frameTasks\", []);\n    /**\n     * @internal\n     */\n    __publicField(this, \"tick\", () => {\n      if (!this._started)\n        return;\n      raf(this.tick);\n      this.emit(\"update\", this._frame, LoopTimeStep);\n      this.emit(\"render\", this._frame, LoopTimeStep);\n      this._processFrameTasks();\n      this._frame++;\n    });\n    if (start) {\n      this.start();\n    }\n  }\n  /**\n   * To add a task to be done at the end of a frame.\n   * Tasks added from a task will be ignored. These will run after loop events have been processed.\n   * @internal\n   */\n  addFrameTask(task) {\n    this._frameTasks.push(task);\n  }\n  _processFrameTasks() {\n    var _a;\n    const postEventTasks = this._frameTasks;\n    const length = postEventTasks.length;\n    if (length === 0)\n      return;\n    for (let i = 0; i < length; i++) {\n      (_a = postEventTasks[i]) == null ? void 0 : _a.call(postEventTasks);\n    }\n    postEventTasks.length = 0;\n  }\n  /**\n   * @internal\n   */\n  static set TimeStep(value) {\n    LoopTimeStep = value;\n  }\n  /**\n   * @internal\n   */\n  static get TimeStep() {\n    return LoopTimeStep;\n  }\n  /**\n   * @internal\n   */\n  start() {\n    if (this._started)\n      return this;\n    this._frame = 0;\n    this._started = true;\n    raf(this.tick);\n    return this;\n  }\n  /**\n   * @internal\n   * @deprecated Don\u2019t use `stop` as you could be stopping the MainLoop for others.\n   */\n  stop() {\n    this._started = false;\n    return this;\n  }\n  /**\n   * @internal\n   */\n  get frame() {\n    return this._frame;\n  }\n  /**\n   * @internal\n   */\n  get time() {\n    return this._frame * LoopTimeStep;\n  }\n};\nvar MainLoop = /* @__PURE__ */ new Loop();\n\n// ../../library/src/render/types/RenderEnvironment.ts\nvar RenderEnvironment = {\n  target: \"PREVIEW\" /* preview */,\n  zoom: 1\n};\nfunction executeInRenderEnvironment(customEnvironment, task) {\n  const previousEnvironment = Object.assign({}, RenderEnvironment);\n  Object.assign(RenderEnvironment, customEnvironment);\n  const result = task();\n  Object.assign(RenderEnvironment, previousEnvironment);\n  return result;\n}\nfunction setGlobalRenderEnvironment(environment2) {\n  Object.assign(RenderEnvironment, environment2);\n}\nfunction useRenderEnvironment(target, zoom) {\n  let willChangeElements = false;\n  if (RenderEnvironment.target !== target) {\n    RenderEnvironment.target = target;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.zoom !== zoom) {\n    RenderEnvironment.zoom = zoom;\n  }\n  return { willChangeElements };\n}\nvar RenderTarget = {\n  /**\n   * The component is to be rendered for the Framer canvas.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.canvas) {\n   *     return <CanvasComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  canvas: \"CANVAS\" /* canvas */,\n  /**\n   * The component is to be rendered for export.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.export) {\n   *     return <ExportComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  export: \"EXPORT\" /* export */,\n  /**\n   * The component is to be rendered as a preview thumbnail, for example in the\n   * component panel.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <Thumbnail />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  thumbnail: \"THUMBNAIL\" /* thumbnail */,\n  /**\n   * The component is being rendered in the preview window.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   React.useEffect(() => {\n   *     if (RenderTarget.current() === RenderTarget.preview) {\n   *       // Do something in preview.\n   *     }\n   *   })\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  preview: \"PREVIEW\" /* preview */,\n  /**\n   * Returns the current `RenderTarget` allowing components to apply\n   * different behaviors depending on the environment.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <PreviewIcon />\n   *   }\n   *   return <Frame>...</Frame>\n   * }\n   * ```\n   */\n  current: () => RenderEnvironment.target,\n  /**\n   * Returns true if the current `RenderTarget` has performance restrictions.\n   * Use this to avoid doing heavy work in these contexts because they may\n   * bail on the rendering if the component takes too long.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.hasRestrictions()) {\n   *     return <SomePlaceholder />\n   *   }\n   *   return <RichPreviewContent />\n   * }\n   * ```\n   */\n  hasRestrictions: () => {\n    const target = RenderEnvironment.target;\n    if (target === \"CANVAS\" /* canvas */)\n      return true;\n    if (target === \"EXPORT\" /* export */)\n      return true;\n    return false;\n  }\n};\n\n// ../../library/src/animation/Drivers/AnimationDriver.ts\nvar AnimationDriver = class {\n  constructor(animator, updateCallback, finishedCallback) {\n    this.animator = animator;\n    this.updateCallback = updateCallback;\n    this.finishedCallback = finishedCallback;\n    __publicField(this, \"update\", (frame2, elapsed) => {\n      if (this.animator.isFinished()) {\n        this.finish();\n      } else {\n        const value = this.animator.next(elapsed);\n        this.updateCallback(value);\n      }\n    });\n    if (!this.animator.isReady()) {\n      console.warn(\"AnimationDriver initialized with animator that isn't ready\");\n    }\n  }\n  finish() {\n    if (this.finishedCallback) {\n      this.finishedCallback(this.animator.isFinished());\n    }\n  }\n  isFinished() {\n    return this.animator.isFinished();\n  }\n};\n\n// ../../library/src/animation/Drivers/MainLoopDriver.ts\nvar MainLoopAnimationDriver = class extends AnimationDriver {\n  play() {\n    if (RenderEnvironment.target !== RenderTarget.preview) {\n      this.finishedCallback && this.finishedCallback(false);\n      return;\n    }\n    MainLoop.on(\"update\", this.update);\n  }\n  cancel() {\n    MainLoop.off(\"update\", this.update);\n  }\n  finish() {\n    MainLoop.off(\"update\", this.update);\n    super.finish();\n  }\n};\n\n// ../../library/src/animation/FramerAnimation.ts\nvar DefaultDeprecatedAnimationOptions = {\n  precalculate: false,\n  colorModel: \"husl\" /* HUSL */\n};\nvar FramerAnimation = class {\n  /**\n   * @internal\n   */\n  constructor(target, from, to, animatorClass, options, driverClass = MainLoopAnimationDriver) {\n    /**\n     * @internal\n     */\n    __publicField(this, \"driver\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"playStateSource\", \"idle\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"onfinish\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"oncancel\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyPromise\", Promise.resolve());\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyResolve\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedPromise\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedResolve\");\n    /**\n     * @internal\n     */\n    // biome-ignore lint/suspicious/noExplicitAny: deprecated\n    __publicField(this, \"finishedReject\");\n    this.resetFinishedPromise();\n    const deprecatedAnimationOptions = { ...DefaultDeprecatedAnimationOptions };\n    const animatorOptions = {};\n    if (options) {\n      Object.assign(deprecatedAnimationOptions, options);\n      Object.assign(animatorOptions, options);\n    }\n    let interpolation;\n    if (deprecatedAnimationOptions.customInterpolation) {\n      interpolation = deprecatedAnimationOptions.customInterpolation;\n    } else {\n      interpolation = new ValueInterpolation(options);\n    }\n    let animator;\n    if (!animatorClass) {\n      animator = new BezierAnimator({}, interpolation);\n    } else {\n      animator = new animatorClass(animatorOptions, interpolation);\n    }\n    if (deprecatedAnimationOptions.precalculate) {\n      animator = new PrecalculatedAnimator({ animator });\n    }\n    animator.setFrom(from);\n    animator.setTo(to);\n    const updateCallback = (value) => {\n      FramerAnimation.driverCallbackHandler(target, value);\n    };\n    const finishedCallback = (isFinished) => {\n      if (isFinished) {\n        FramerAnimation.driverCallbackHandler(target, to);\n        if (this.playStateSource === \"running\") {\n          this.playStateValue = \"finished\";\n        }\n      }\n    };\n    this.driver = new driverClass(animator, updateCallback, finishedCallback);\n  }\n  /**\n   * @internal\n   */\n  static driverCallbackHandler(target, value) {\n    if (isAnimatable(target) || isMotionValue2(target)) {\n      target.set(value);\n    } else {\n      const targetObject = target;\n      Animatable.transaction((update) => {\n        for (const key7 in targetObject) {\n          const targetValue = targetObject[key7];\n          if (isAnimatable(targetValue)) {\n            update(targetValue, value[key7]);\n          } else {\n            targetObject[key7] = value[key7];\n          }\n        }\n      });\n    }\n  }\n  /**\n   * @internal\n   */\n  get playStateValue() {\n    return this.playStateSource;\n  }\n  /**\n   * @internal\n   */\n  set playStateValue(value) {\n    if (value !== this.playStateSource) {\n      const oldValue = value;\n      this.playStateSource = value;\n      switch (value) {\n        case \"idle\":\n          if (oldValue === \"running\") {\n            this.oncancel && this.oncancel();\n          }\n          this.readyResolve && this.readyResolve();\n          this.resetReadyPromise();\n          break;\n        case \"finished\":\n          if (oldValue === \"idle\") {\n            console.warn(\"Bad state transition\");\n            break;\n          }\n          this.onfinish && this.onfinish();\n          this.finishedResolve && this.finishedResolve();\n          break;\n        case \"running\":\n          this.resetReadyPromise();\n          break;\n      }\n      if (oldValue === \"finished\") {\n        this.resetFinishedPromise();\n      }\n      if (value === \"finished\") {\n        this.playStateValue = \"idle\";\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  get playState() {\n    return this.playStateValue;\n  }\n  /**\n   * @internal\n   */\n  resetReadyPromise() {\n    this.readyResolve = null;\n    this.readyPromise = new Promise((resolve, reject) => {\n      this.readyResolve = resolve;\n    });\n  }\n  /**\n       * Wait for the animation to be ready to play.\n       * @remarks\n       * ```jsx\n       * const animation = animate.ease(value, 100)\n       * animation.ready().then(() => {\n       *    // Animation is ready\n       * })\n  \n       * // async/await syntax\n       * const animation = animate.ease(value, 100)\n       * await animation.ready()\n       * // Animation is ready\n       * ```\n       * @returns Promise that is resolved when the animation is ready to play\n       * @public\n       */\n  get ready() {\n    return this.readyPromise;\n  }\n  /**\n   * @internal\n   */\n  resetFinishedPromise() {\n    this.finishedResolve = null;\n    this.finishedReject = null;\n    this.finishedPromise = new Promise((resolve, reject) => {\n      this.finishedResolve = resolve;\n      this.finishedReject = reject;\n    });\n    this.finishedPromise.catch((reason) => {\n    });\n  }\n  /**\n   * Wait for the animation to be finished.\n   * @remarks\n   * ```jsx\n   * // async/await syntax\n   * const animation = animate.ease(value, 100)\n   * await animation.finished()\n   * // Animation is finished\n   *\n   *\n   * const animation = animate.ease(value, 100)\n   * animation.ready().then(() => {\n   *    // Animation is finished\n   * })\n   * ```\n   * @returns Promise that is resolved when the animation is ready to play\n   * @public\n   */\n  get finished() {\n    return this.finishedPromise;\n  }\n  /**\n   * @internal\n   */\n  play() {\n    this.playStateValue = \"running\";\n    this.driver.play();\n  }\n  /**\n   * Cancels the animation if it is still running.\n   * @remarks\n   * ```jsx\n   * const animation = animate.ease(value, 100, {duration: 3})\n   * setTimeout(() => animation.cancel(), 500)\n   * ```\n   * @public\n   */\n  cancel() {\n    if (this.playStateValue !== \"running\") {\n      return;\n    }\n    this.driver.cancel();\n    if (this.playState !== \"idle\") {\n      const reason = \"AbortError\";\n      this.finishedReject && this.finishedReject(reason);\n    }\n    this.playStateValue = \"idle\";\n  }\n  /**\n   * @internal\n   */\n  finish() {\n    if (this.playStateSource === \"running\") {\n      this.playStateValue = \"finished\";\n      this.driver.finish();\n    }\n  }\n  /**\n   * @internal\n   */\n  isFinished() {\n    return this.playStateValue === \"finished\";\n  }\n};\n\n// ../../library/src/animation/Motion/autoValueHandlers.ts\nvar correctBorderScale = (axis) => ({\n  correct: (latest, { delta, treeScale }) => {\n    if (typeof latest === \"string\")\n      latest = parseFloat(latest);\n    if (latest === 0)\n      return \"0px\";\n    let corrected = latest;\n    if (delta && treeScale) {\n      corrected = Math.round(latest / delta[axis].scale / treeScale[axis]);\n      corrected = Math.max(corrected, 1);\n    }\n    return corrected + \"px\";\n  }\n});\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\nimport { Fragment, jsx as jsx4 } from \"react/jsx-runtime\";\naddScaleCorrector({\n  borderTopWidth: correctBorderScale(\"y\"),\n  borderLeftWidth: correctBorderScale(\"x\"),\n  borderRightWidth: correctBorderScale(\"x\"),\n  borderBottomWidth: correctBorderScale(\"y\")\n});\nfunction MotionSetup({ children }) {\n  return /* @__PURE__ */ jsx4(Fragment, { children });\n}\n\n// ../../library/src/animation/Motion/startAnimation.ts\nfunction startAnimation(_key, value, target, transition = {}) {\n  warnOnce(\n    `\"startAnimation\" is unsupported. Use \"animate\" instead: https://www.framer.com/api/motion/utilities/#animate`\n  );\n  return new Promise((resolve) => {\n    animate(value, target, {\n      ...transition,\n      onComplete: () => resolve()\n    });\n  });\n}\n\n// ../../library/src/animation/animate.ts\nfunction deprecatedAnimate(from, to, animator, options) {\n  deprecationWarning(\"animate()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n  const target = from;\n  let fromValue;\n  if (isAnimatable(from) || isMotionValue2(from)) {\n    fromValue = from.get();\n  } else {\n    fromValue = Animatable.objectToValues(from);\n  }\n  const animation = new FramerAnimation(target, fromValue, to, animator, options);\n  animation.play();\n  return animation;\n}\nvar animate2 = /* @__PURE__ */ (() => {\n  function animate3(from, to, animatorOrTransition, options) {\n    return isAnimatable(from) ? deprecatedAnimate(from, to, animatorOrTransition, options) : animate(from, to, animatorOrTransition);\n  }\n  animate3.spring = (from, to, options) => {\n    return animate3(from, to, SpringAnimator, options);\n  };\n  animate3.bezier = (from, to, options) => {\n    return animate3(from, to, BezierAnimator, options);\n  };\n  animate3.linear = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"linear\" /* Linear */ });\n  };\n  animate3.ease = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease\" /* Ease */ });\n  };\n  animate3.easeIn = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in\" /* EaseIn */ });\n  };\n  animate3.easeOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-out\" /* EaseOut */ });\n  };\n  animate3.easeInOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in-out\" /* EaseInOut */ });\n  };\n  return animate3;\n})();\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport React11, { useCallback as useCallback4, useContext as useContext2, useMemo, useRef as useRef5 } from \"react\";\n\n// ../../library/src/utils/assert.ts\nfunction assert(condition, ...msg) {\n  var _a, _b;\n  if (condition)\n    return;\n  const e = Error(\"Assertion Error\" + (msg.length > 0 ? \": \" + msg.join(\" \") : \"\"));\n  if (e.stack) {\n    try {\n      const lines = e.stack.split(\"\\n\");\n      if ((_a = lines[1]) == null ? void 0 : _a.includes(\"assert\")) {\n        lines.splice(1, 1);\n        e.stack = lines.join(\"\\n\");\n      } else if ((_b = lines[0]) == null ? void 0 : _b.includes(\"assert\")) {\n        lines.splice(0, 1);\n        e.stack = lines.join(\"\\n\");\n      }\n    } catch {\n    }\n  }\n  throw e;\n}\nfunction assertNever(x, error) {\n  throw error || new Error(x ? `Unexpected value: ${x}` : \"Application entered invalid state\");\n}\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport { Fragment as Fragment2, jsx as jsx5 } from \"react/jsx-runtime\";\nvar LayoutIdContext = /* @__PURE__ */ React11.createContext({\n  getLayoutId: (args) => null,\n  persistLayoutIdCache: () => {\n  },\n  top: false,\n  enabled: true\n});\nfunction LayoutIdProvider({ children }) {\n  const context = useContext2(LayoutIdContext);\n  if (context.top)\n    return /* @__PURE__ */ jsx5(Fragment2, { children });\n  const cache2 = useRef5({\n    // When we provide a layoutId for a node based on it's first\n    // duplicatedFrom id, we save it's layoutId mapped to it's actual id.\n    // Future screen's nodes will check this cache first, to see if they've\n    // previously been assigned a layoutId, or if any of there other\n    // duplicatedFrom ids matched a node that was previously assigned a\n    // layoutId.\n    byId: {},\n    byName: {},\n    // When we navigate from screens that were duplicated from a future\n    // screen, to that future screen, we want to do a reverse lookup on the\n    // last duplicatedFrom id, rather than the id. We need to keep them\n    // separate so they don't overlap.\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {},\n    // When we don't have a cached layoutId for all duplicatedFrom ids, we\n    // need to increment and save it so that we don't create clashing\n    // layoutIds. We also need to reset name counts between screens, so we\n    // record those separately.\n    count: {\n      byId: {},\n      byName: {}\n    }\n  });\n  const screen = useRef5({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {}\n  });\n  const usedIds = useRef5(/* @__PURE__ */ new Set()).current;\n  const getLayoutId = useCallback4(({ id, name, duplicatedFrom }) => {\n    if (!id)\n      return null;\n    const cacheKey = name ? \"byName\" : \"byId\";\n    const previousId = cache2.current[cacheKey][id];\n    if (previousId)\n      return previousId;\n    const nodeIdentifier = name || id;\n    if (!duplicatedFrom && !usedIds.has(nodeIdentifier) && (!cache2.current.byLayoutId[nodeIdentifier] || cache2.current.byLayoutId[nodeIdentifier] === nodeIdentifier)) {\n      if (cache2.current.count[cacheKey][nodeIdentifier] === void 0) {\n        cache2.current.count[cacheKey][nodeIdentifier] = 0;\n        cache2.current.byLayoutId[nodeIdentifier] = nodeIdentifier;\n        screen.current[cacheKey][id] = nodeIdentifier;\n      }\n      usedIds.add(nodeIdentifier);\n      return nodeIdentifier;\n    }\n    let possibleMatch = void 0;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      for (let index = duplicatedFrom.length - 1; index >= 0; index--) {\n        const duplicatedId = duplicatedFrom[index];\n        assert(!!duplicatedId, `duplicatedId must be defined`);\n        const match = cache2.current[cacheKey][duplicatedId];\n        const byLastIdMatch = cache2.current.byLastId[duplicatedId];\n        if (byLastIdMatch && !possibleMatch) {\n          const matchedLayoutId = cache2.current.byLayoutId[byLastIdMatch];\n          const shouldUseNamedLastIdMatch = !matchedLayoutId || matchedLayoutId === name;\n          if (byLastIdMatch && !usedIds.has(byLastIdMatch) && (name ? shouldUseNamedLastIdMatch : true)) {\n            possibleMatch = [byLastIdMatch, duplicatedId];\n          }\n        }\n        const previousLayoutId = match ? cache2.current.byLayoutId[match] : void 0;\n        const shouldUseNamedMatch = !previousLayoutId || previousLayoutId === name;\n        if (match && !usedIds.has(match) && (name ? shouldUseNamedMatch : true)) {\n          screen.current[cacheKey][id] = match;\n          screen.current.byLastId[duplicatedId] = match;\n          usedIds.add(match);\n          return match;\n        }\n      }\n    }\n    const last = cache2.current.byLastId[id];\n    if (last && !usedIds.has(last)) {\n      usedIds.add(last);\n      screen.current.byId[id] = last;\n      return last;\n    }\n    if (possibleMatch) {\n      const [match, duplicatedId] = possibleMatch;\n      screen.current[cacheKey][id] = match;\n      screen.current.byLastId[duplicatedId] = match;\n      usedIds.add(match);\n      return match;\n    }\n    const possible = cache2.current.byPossibleId[id];\n    if (possible && !usedIds.has(possible)) {\n      usedIds.add(possible);\n      screen.current.byId[id] = possible;\n      return possible;\n    }\n    const rootDuplicatedId = duplicatedFrom == null ? void 0 : duplicatedFrom[0];\n    const identifier = name || rootDuplicatedId || id;\n    const value = (cache2.current.count[cacheKey][identifier] ?? -1) + 1;\n    const { layoutId, value: nextValue } = nextLayoutId(identifier, value, usedIds);\n    cache2.current.count[cacheKey][identifier] = nextValue;\n    screen.current[cacheKey][id] = layoutId;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      if (!name) {\n        const lastId = duplicatedFrom[duplicatedFrom.length - 1];\n        if (lastId) {\n          screen.current.byLastId[lastId] = layoutId;\n        }\n        if (duplicatedFrom.length > 1) {\n          for (let index = 0; index < duplicatedFrom.length - 1; index++) {\n            const possibleId = duplicatedFrom[index];\n            if (possibleId === void 0)\n              continue;\n            if (!screen.current.byPossibleId[possibleId]) {\n              screen.current.byPossibleId[possibleId] = layoutId;\n            }\n          }\n        }\n      }\n    }\n    screen.current.byLayoutId[layoutId] = nodeIdentifier;\n    usedIds.add(layoutId);\n    return layoutId;\n  }, []);\n  const persistLayoutIdCache = useCallback4(() => {\n    cache2.current = {\n      byId: {\n        ...cache2.current.byId,\n        ...screen.current.byId\n      },\n      byLastId: {\n        ...cache2.current.byLastId,\n        ...screen.current.byLastId\n      },\n      byPossibleId: {\n        ...cache2.current.byPossibleId,\n        ...screen.current.byPossibleId\n      },\n      byName: {\n        ...cache2.current.byName,\n        ...screen.current.byName\n      },\n      byLastName: { ...cache2.current.byLastName, ...screen.current.byLastName },\n      byLayoutId: { ...cache2.current.byLayoutId, ...screen.current.byLayoutId },\n      // Unlike the count.byId, we need to reset the count.byName because\n      // named layers might not have duplicatedFrom ids (e.g. imported\n      // from Figma). When we can use duplicatedFrom ids to check if an id\n      // was assigned on a previous screen, we don't increment the count,\n      // which means that the count only increments for new items, and\n      // only increments on a new screen if the node is new. Since named\n      // layers need to always match in some way between screens, we reset\n      // the count so that the second named layer on a second screen is\n      // always name-1 if it doesn't have any duplicatedFrom ids.\n      count: {\n        ...cache2.current.count,\n        byName: {}\n      }\n    };\n    screen.current = {\n      byId: {},\n      byName: {},\n      byLastId: {},\n      byPossibleId: {},\n      byLastName: {},\n      byLayoutId: {}\n    };\n    usedIds.clear();\n  }, []);\n  const contextValue = useRef5({\n    getLayoutId,\n    persistLayoutIdCache,\n    top: true,\n    enabled: true\n  }).current;\n  return /* @__PURE__ */ jsx5(LayoutIdContext.Provider, { value: contextValue, children });\n}\nfunction nextLayoutId(identifier, initialValue, usedIds) {\n  let value = initialValue;\n  let layoutId = value ? `${identifier}-${value}` : identifier;\n  while (usedIds.has(layoutId)) {\n    value++;\n    layoutId = `${identifier}-${value}`;\n  }\n  return { layoutId, value };\n}\nfunction AutomaticLayoutIds({ enabled = true, ...props }) {\n  const context = useContext2(LayoutIdContext);\n  const contextValue = useMemo(() => {\n    return {\n      ...context,\n      enabled\n    };\n  }, [enabled]);\n  return /* @__PURE__ */ jsx5(LayoutIdContext.Provider, { ...props, value: contextValue });\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport React12, { Component as Component2 } from \"react\";\n\n// ../../library/src/components/utils/useConstant.ts\nimport { useRef as useRef6 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef6(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../library/src/components/Device/ErrorPlaceholder.tsx\nimport { jsx as jsx6, jsxs } from \"react/jsx-runtime\";\nvar baseStyle = {\n  background: void 0,\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  lineHeight: \"1.4em\",\n  textOverflow: \"ellipsis\",\n  overflow: \"hidden\",\n  minHeight: 0,\n  width: \"100%\",\n  height: \"100%\"\n};\nvar errorStyle = /* @__PURE__ */ (() => ({\n  ...baseStyle,\n  border: \"1px solid rgba(149, 149, 149, 0.15)\",\n  borderRadius: 6,\n  fontSize: \"12px\",\n  backgroundColor: \"rgba(149, 149, 149, 0.1)\",\n  color: \"#a5a5a5\"\n}))();\nvar textStyle = {\n  overflow: \"hidden\",\n  whiteSpace: \"nowrap\",\n  textOverflow: \"ellipsis\",\n  maxWidth: \"100%\",\n  flexShrink: 0,\n  padding: `0 10px`\n};\nvar titleStyle = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  // TODO: Use Fresco tokens for this.\n  fontWeight: 500\n}))();\nvar messageStyle = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  whiteSpace: \"pre\",\n  maxHeight: \"calc(50% - calc(20px * var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)))\",\n  WebkitMaskImage: \"linear-gradient(to bottom, black 80%, transparent 100%)\"\n}))();\nfunction ErrorPlaceholder(props) {\n  const { error, file } = props;\n  const title = file ? `Error in ${stripSlash(file)}` : \"Error\";\n  const message = error instanceof Error ? error.message : \"\" + error;\n  return /* @__PURE__ */ jsxs(\"div\", { style: errorStyle, children: [\n    /* @__PURE__ */ jsx6(\"div\", { className: \"text\", style: titleStyle, children: title }),\n    message && /* @__PURE__ */ jsx6(\"div\", { className: \"text\", style: messageStyle, children: message })\n  ] });\n}\nfunction stripSlash(title) {\n  if (title.startsWith(\"./\")) {\n    return title.replace(\"./\", \"\");\n  }\n  return title;\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport { jsx as jsx7, jsxs as jsxs2 } from \"react/jsx-runtime\";\nfunction getScaleData(deviceOptions, containerSize) {\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const scaleX = containerSize.width / componentWidth;\n  const scaleY = containerSize.height / componentHeight;\n  const scale = Math.min(scaleX, scaleY, 1);\n  let screenScalePixelFix = 1;\n  if (scale < 1) {\n    const actualScreenWidth = deviceOptions.screenWidth * scale;\n    const desiredScreenWidth = actualScreenWidth + 1;\n    const screenScaleX = desiredScreenWidth / actualScreenWidth;\n    const actualScreenHeight = deviceOptions.screenHeight * scale;\n    const desiredScreenHeight = actualScreenHeight + 1;\n    const screenScaleY = desiredScreenHeight / actualScreenHeight;\n    const screenScale = Math.max(screenScaleX, screenScaleY);\n    screenScalePixelFix = screenScale;\n  }\n  return {\n    scale,\n    screenScalePixelFix,\n    scaledComponentWidth: componentWidth * scale,\n    scaledComponentHeight: componentHeight * scale,\n    scaledDeviceWidth: deviceOptions.deviceWidth * scale,\n    scaledDeviceHeight: deviceOptions.deviceHeight * scale\n  };\n}\nfunction getColorsFromTheme(theme, type) {\n  if (type === \"none\")\n    return {};\n  if (!theme)\n    return {};\n  const isDarkTheme = theme === \"dark\";\n  return {\n    shadowColor: isDarkTheme ? \"rgba(0, 0, 0, 0.55)\" : \"rgba(0, 0, 0, 0.15)\",\n    bezelColor: isDarkTheme ? \"#222\" : \"#fff\",\n    bezelShadeColor: isDarkTheme ? \"#000\" : \"rgba(0, 0, 0, 0.2)\",\n    screenColor: isDarkTheme ? \"#333\" : \"#eee\"\n  };\n}\nvar ErrorBoundary = class extends Component2 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", {});\n  }\n  componentDidCatch(error, info) {\n    var _a;\n    let stack = (_a = info.componentStack) == null ? void 0 : _a.split(\"\\n\").filter((line) => line.length !== 0);\n    let currentIndex = 0;\n    if (stack) {\n      for (const line of stack) {\n        if (line.startsWith(`    in ${this.constructor.name}`)) {\n          break;\n        }\n        currentIndex++;\n      }\n      stack = stack.slice(0, currentIndex);\n    }\n    this.setState({\n      lastError: {\n        error,\n        componentStack: stack\n      }\n    });\n  }\n  componentDidUpdate(_, prevState) {\n    if (this.state.lastError === void 0)\n      return;\n    if (prevState.lastError === this.state.lastError)\n      this.setState({ lastError: void 0 });\n  }\n  render() {\n    if (this.state.lastError) {\n      return /* @__PURE__ */ jsx7(ErrorPlaceholder, { error: this.state.lastError.error.message, file: \"Prototype\" });\n    }\n    return this.props.children;\n  }\n};\nfunction Device({\n  canResize = false,\n  children,\n  ResizeObserver = safeWindow.ResizeObserver,\n  ...options\n}) {\n  var _a, _b;\n  const optionsRef = React12.useRef(void 0);\n  if (optionsRef.current === void 0)\n    optionsRef.current = options;\n  const deviceAppearance = (_a = options.deviceOptions) == null ? void 0 : _a.appearance.type;\n  const scaleDataRef = React12.useRef();\n  const containerRef = React12.useRef(null);\n  const deviceRef = React12.useRef(null);\n  const screenRef = React12.useRef(null);\n  const updateImperativeScale = ({ scale, screenScalePixelFix }) => {\n    if (!scaleDataRef.current || !deviceRef.current || !screenRef.current)\n      return;\n    deviceRef.current.style.transform = `scale(${scale})`;\n    screenRef.current.style.transform = `scale(${screenScalePixelFix})`;\n  };\n  if (scaleDataRef.current === void 0 && options.deviceOptions && options.scaleTo && options.scaleTo !== \"dynamic\") {\n    const scale = scaleDataRef.current = getScaleData(options.deviceOptions, options.scaleTo);\n    updateImperativeScale(scale);\n  }\n  const invertScale = React12.useCallback(\n    (point) => {\n      if (!scaleDataRef.current)\n        return point;\n      const { scale = 1 } = scaleDataRef.current;\n      return { x: point.x / scale, y: point.y / scale };\n    },\n    [scaleDataRef]\n  );\n  const updateScale = React12.useCallback(() => {\n    const { deviceOptions, scaleTo, onScaleChange } = optionsRef.current ?? {};\n    if (!deviceOptions || !scaleTo || scaleTo !== \"dynamic\" || !containerRef.current)\n      return;\n    if (containerRef.current.offsetWidth === 0 || containerRef.current.offsetHeight === 0)\n      return;\n    const scaleData = scaleDataRef.current = getScaleData(deviceOptions, {\n      width: containerRef.current.offsetWidth,\n      height: containerRef.current.offsetHeight\n    });\n    onScaleChange == null ? void 0 : onScaleChange(scaleData);\n    updateImperativeScale(scaleData);\n  }, []);\n  const observer = useConstant(() => {\n    if (!ResizeObserver) {\n      return;\n    }\n    return new ResizeObserver(() => updateScale());\n  });\n  React12.useLayoutEffect(() => {\n    optionsRef.current = {\n      deviceOptions: options.deviceOptions,\n      onScaleChange: options.onScaleChange,\n      overrideTheme: options.overrideTheme,\n      scaleTo: options.scaleTo\n    };\n  }, [options.deviceOptions, options.onScaleChange, options.overrideTheme, options.scaleTo]);\n  React12.useLayoutEffect(() => {\n    updateScale();\n  }, [updateScale]);\n  React12.useEffect(() => {\n    if (!observer || !containerRef.current)\n      return;\n    observer.observe(containerRef.current);\n    return () => observer.disconnect();\n  }, [observer]);\n  const { containerStyle, handStyle, deviceStyle, deviceImageStyle, screenStyle } = getDeviceStyle(options);\n  const resizeStyles = canResize ? {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  } : {};\n  const screenBackground = ((_b = options.deviceOptions) == null ? void 0 : _b.transparentBackground) ? \"transparent\" : \"white\";\n  return /* @__PURE__ */ jsx7(\"div\", { style: { ...containerStyle, ...resizeStyles }, ref: containerRef, children: /* @__PURE__ */ jsxs2(\"div\", { style: { ...deviceStyle }, ref: deviceRef, children: [\n    handStyle && /* @__PURE__ */ jsx7(\"div\", { style: handStyle }),\n    deviceAppearance === \"external-clay\" && deviceImageStyle && /* @__PURE__ */ jsx7(\"div\", { style: deviceImageStyle }),\n    /* @__PURE__ */ jsx7(\n      \"div\",\n      {\n        style: {\n          ...screenStyle,\n          pointerEvents: void 0,\n          backgroundColor: children ? screenBackground : screenStyle.backgroundColor\n        },\n        ref: screenRef,\n        children: /* @__PURE__ */ jsx7(MotionConfig, { transformPagePoint: invertScale, children: /* @__PURE__ */ jsx7(ErrorBoundary, { children }) })\n      }\n    ),\n    deviceAppearance === \"realistic\" && deviceImageStyle && /* @__PURE__ */ jsx7(\"div\", { style: deviceImageStyle })\n  ] }) });\n}\nvar DEVICE_PADDING = 45;\nvar HAND_IMG_WIDTH = 2400;\nvar HAND_IMG_HEIGHT = 3740;\nvar HAND_IMG_GAP_WIDTH = 859;\nvar HAND_IMG_GAP_LEFT = 772;\nvar HAND_IMG_GAP_BOTTOM = /* @__PURE__ */ (() => 992 - 5)();\nvar noDeviceSize = { componentWidth: 500, componentHeight: 500 };\nfunction getComponentSize(options) {\n  if (!options)\n    return noDeviceSize;\n  const { deviceWidth, deviceHeight, noPadding } = options;\n  const padding = noPadding ? 0 : DEVICE_PADDING * 2;\n  return {\n    componentWidth: deviceWidth + padding,\n    componentHeight: deviceHeight + padding\n  };\n}\nfunction getDeviceStyle({ scaleTo, deviceOptions, overrideTheme } = {}) {\n  const noDeviceStyle = { containerStyle: {}, deviceStyle: {}, screenStyle: {} };\n  if (!deviceOptions)\n    return noDeviceStyle;\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const overriddenColors = getColorsFromTheme(overrideTheme, deviceOptions.appearance.type);\n  const {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenMaxHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius,\n    screenMaskImage,\n    screenColor,\n    shadow,\n    background,\n    hand\n  } = deviceOptions;\n  const boxShadows = [];\n  if (appearance.type === \"clay\" && shadow) {\n    boxShadows.push(shadow);\n  }\n  let bezelStyle = void 0;\n  if (appearance.type === \"clay\") {\n    bezelStyle = {\n      borderRadius: appearance.bezelRadius,\n      backgroundColor: overriddenColors.bezelColor || appearance.bezelColor\n    };\n    if (overriddenColors.bezelShadeColor || appearance.bezelShadeColor) {\n      boxShadows.push(`inset 0 0 15px ${overriddenColors.bezelShadeColor || appearance.bezelShadeColor}`);\n    }\n  }\n  const handOffsetLeft = (hand == null ? void 0 : hand.offsetLeft) ?? 0;\n  const handOffsetRight = (hand == null ? void 0 : hand.offsetRight) ?? 0;\n  const handOffsetBottom = (hand == null ? void 0 : hand.offsetBottom) ?? 0;\n  const handScale = (deviceWidth - handOffsetLeft - handOffsetRight) / HAND_IMG_GAP_WIDTH;\n  return {\n    containerStyle: {\n      width: scaleTo ? \"100%\" : componentWidth,\n      height: scaleTo ? \"100%\" : componentHeight,\n      flex: \"1 1 0\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      background\n    },\n    handStyle: hand && {\n      width: HAND_IMG_WIDTH * handScale,\n      height: HAND_IMG_HEIGHT * handScale,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      backgroundImage: `url(\"${hand.imageUrl}\")`,\n      backgroundSize: \"contain\",\n      backgroundRepeat: \"no-repeat\",\n      left: -HAND_IMG_GAP_LEFT * handScale + handOffsetLeft,\n      bottom: -HAND_IMG_GAP_BOTTOM * handScale + handOffsetBottom\n    },\n    deviceStyle: {\n      width: deviceWidth,\n      height: deviceHeight,\n      flexShrink: 0,\n      position: \"absolute\",\n      boxShadow: boxShadows.join(\",\"),\n      ...bezelStyle\n    },\n    deviceImageStyle: appearance.type === \"realistic\" || appearance.type === \"external-clay\" ? {\n      width: appearance.imageWidth,\n      height: appearance.imageHeight,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      overflow: \"hidden\",\n      backgroundImage: `url(\"${appearance.imageUrl}\")`,\n      backgroundPosition: \"top left\",\n      backgroundRepeat: \"no-repeat\",\n      backgroundSize: `${appearance.imageWidth}px ${appearance.imageHeight}px`,\n      // Rotate 90 degrees counter-clockwise around (0,0), then move the\n      // result down into the viewport (rightmost transform is applied first).\n      transformOrigin: \"top left\",\n      transform: appearance.rotateImage ? `translateY(${appearance.imageWidth}px) rotate(-90deg)` : void 0\n    } : void 0,\n    screenStyle: {\n      width: screenWidth,\n      height: screenHeight,\n      maxHeight: screenMaxHeight,\n      position: \"absolute\",\n      top: screenOffsetTop,\n      left: screenOffsetLeft,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      borderRadius: screenRadius,\n      backgroundColor: overriddenColors.screenColor || screenColor,\n      ...screenMaskImage && {\n        maskImage: screenMaskImage,\n        WebkitMaskImage: screenMaskImage,\n        maskSize: \"contain\",\n        WebkitMaskSize: \"contain\"\n      }\n    }\n  };\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport React15 from \"react\";\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport React13 from \"react\";\n\n// ../../library/src/render/utils/isFiniteNumber.ts\nfunction isFiniteNumber(value) {\n  return Number.isFinite(value);\n}\nfunction finiteNumber(value) {\n  return isFiniteNumber(value) ? value : void 0;\n}\n\n// ../../library/src/utils/type-guards.ts\nfunction isEmpty(obj) {\n  return !obj || !Object.keys(obj).length && obj.constructor === Object;\n}\nfunction isReactElement(test) {\n  return typeof test !== \"string\" && typeof test !== \"number\";\n}\nfunction isReactChild(test) {\n  return test !== null && typeof test !== \"undefined\" && typeof test !== \"boolean\" && !isEmpty(test);\n}\n\n// ../../library/src/render/utils/degreesToRadians.ts\nfunction degreesToRadians(degrees) {\n  return degrees * (Math.PI / 180);\n}\n\n// ../../library/src/render/types/Line.ts\nvar Line = /* @__PURE__ */ (() => {\n  function Line2(a, b) {\n    return { a, b };\n  }\n  Line2.offset = (line, offset) => {\n    const angle = Point.angleFromX(line.a, line.b);\n    const rad = degreesToRadians(angle);\n    const x = offset * Math.sin(rad);\n    const y = offset * Math.cos(rad);\n    return Line2(\n      { x: line.a.x + x, y: line.a.y - y },\n      {\n        x: line.b.x + x,\n        y: line.b.y - y\n      }\n    );\n  };\n  Line2.intersection = (lineA, lineB, segments) => {\n    const x1 = lineA.a.x;\n    const y1 = lineA.a.y;\n    const x2 = lineA.b.x;\n    const y2 = lineA.b.y;\n    const x3 = lineB.a.x;\n    const y3 = lineB.a.y;\n    const x4 = lineB.b.x;\n    const y4 = lineB.b.y;\n    const a1 = (x4 - x3) * (y3 - y1) - (y4 - y3) * (x3 - x1);\n    const b1 = (x4 - x3) * (y2 - y1) - (y4 - y3) * (x2 - x1);\n    const c1 = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);\n    if (a1 === 0 && b1 === 0)\n      return null;\n    if (b1 === 0)\n      return null;\n    const alpha = a1 / b1;\n    const beta = c1 / b1;\n    if (segments && (alpha < 0 || alpha > 1 || beta < 0 || beta > 1))\n      return null;\n    return {\n      x: x1 + alpha * (x2 - x1),\n      y: y1 + alpha * (y2 - y1)\n    };\n  };\n  Line2.intersectionAngle = (lineA, lineB) => {\n    const deltaAX = lineA.b.x - lineA.a.x;\n    const deltaAY = lineA.b.y - lineA.a.y;\n    const deltaBX = lineB.b.x - lineB.a.x;\n    const deltaBY = lineB.b.y - lineB.a.y;\n    const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);\n    return angle * (180 / Math.PI);\n  };\n  Line2.isOrthogonal = (line) => {\n    return line.a.x === line.b.x || line.a.y === line.b.y;\n  };\n  Line2.perpendicular = (line, pointOnLine) => {\n    const deltaX = line.a.x - line.b.x;\n    const deltaY = line.a.y - line.b.y;\n    const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);\n    return Line2(pointB, pointOnLine);\n  };\n  Line2.projectPoint = (line, point) => {\n    const perp = Line2.perpendicular(line, point);\n    return Line2.intersection(line, perp);\n  };\n  Line2.pointAtPercentDistance = (line, distance2) => {\n    const hypotenuse = Line2.distance(line);\n    const r = distance2 * hypotenuse / hypotenuse;\n    return {\n      x: r * line.b.x + (1 - r) * line.a.x,\n      y: r * line.b.y + (1 - r) * line.a.y\n    };\n  };\n  Line2.distance = (line) => {\n    return Point.distance(line.a, line.b);\n  };\n  return Line2;\n})();\n\n// ../../library/src/render/types/Rect.ts\nvar Rect = {\n  /**\n   *\n   * @param rect -\n   * @param other -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   */\n  equals: function(rect, other) {\n    if (rect === other)\n      return true;\n    if (!rect || !other)\n      return false;\n    return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;\n  },\n  /** @internal */\n  atOrigin: (size) => {\n    return { ...size, x: 0, y: 0 };\n  },\n  /** @internal */\n  fromTwoPoints: (a, b) => {\n    return {\n      x: Math.min(a.x, b.x),\n      y: Math.min(a.y, b.y),\n      width: Math.abs(a.x - b.x),\n      height: Math.abs(a.y - b.y)\n    };\n  },\n  /** @internal */\n  fromRect: (rect) => {\n    return {\n      x: rect.left,\n      y: rect.top,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n  },\n  /** @internal */\n  multiply: (rect, n) => {\n    return {\n      x: rect.x * n,\n      y: rect.y * n,\n      width: rect.width * n,\n      height: rect.height * n\n    };\n  },\n  /** @internal */\n  divide: (rect, n) => {\n    return Rect.multiply(rect, 1 / n);\n  },\n  /** @internal */\n  offset: (rect, delta) => {\n    const xOffset = typeof delta.x === \"number\" ? delta.x : 0;\n    const yOffset = typeof delta.y === \"number\" ? delta.y : 0;\n    return {\n      ...rect,\n      x: rect.x + xOffset,\n      y: rect.y + yOffset\n    };\n  },\n  /** @internal */\n  inflate: (rect, value) => {\n    if (value === 0)\n      return rect;\n    const doubleValue = 2 * value;\n    return {\n      x: rect.x - value,\n      y: rect.y - value,\n      width: rect.width + doubleValue,\n      height: rect.height + doubleValue\n    };\n  },\n  /** @internal */\n  pixelAligned: (rect) => {\n    const x = Math.round(rect.x);\n    const y = Math.round(rect.y);\n    const rectMaxX = Math.round(rect.x + rect.width);\n    const rectMaxY = Math.round(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  halfPixelAligned: (rect) => {\n    const x = Math.round(rect.x * 2) / 2;\n    const y = Math.round(rect.y * 2) / 2;\n    const rectMaxX = Math.round((rect.x + rect.width) * 2) / 2;\n    const rectMaxY = Math.round((rect.y + rect.height) * 2) / 2;\n    const width = Math.max(rectMaxX - x, 1);\n    const height = Math.max(rectMaxY - y, 1);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  round: (rect, decimals = 0) => {\n    const x = roundedNumber(rect.x, decimals);\n    const y = roundedNumber(rect.y, decimals);\n    const width = roundedNumber(rect.width, decimals);\n    const height = roundedNumber(rect.height, decimals);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  roundToOutside: (rect) => {\n    const x = Math.floor(rect.x);\n    const y = Math.floor(rect.y);\n    const rectMaxX = Math.ceil(rect.x + rect.width);\n    const rectMaxY = Math.ceil(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minX: (rect) => {\n    return rect.x;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxX: (rect) => {\n    return rect.x + rect.width;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minY: (rect) => {\n    return rect.y;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxY: (rect) => {\n    return rect.y + rect.height;\n  },\n  /** @internal */\n  positions: (rect) => {\n    return {\n      minX: rect.x,\n      midX: rect.x + rect.width / 2,\n      maxX: Rect.maxX(rect),\n      minY: rect.y,\n      midY: rect.y + rect.height / 2,\n      maxY: Rect.maxY(rect)\n    };\n  },\n  /**\n   *\n   * @param rect -\n   * @internal\n   */\n  center: (rect) => {\n    return {\n      x: rect.x + rect.width / 2,\n      y: rect.y + rect.height / 2\n    };\n  },\n  /** @internal */\n  boundingRectFromPoints: (ps) => {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    for (let i = 0; i < ps.length; i++) {\n      const point = ps[i];\n      minX = Math.min(minX, point.x);\n      maxX = Math.max(maxX, point.x);\n      minY = Math.min(minY, point.y);\n      maxY = Math.max(maxY, point.y);\n    }\n    return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n  },\n  /**\n   * Returns the precise box defined by the given points, starting from the top-left point. This produces the same\n   * Rect as Rect.boundingRectFromPoints *only* when the rect described by the points is not rotated.\n   *\n   * @internal\n   */\n  fromPoints: (ps) => {\n    const [tl, tr, _, bl] = ps;\n    const { x, y } = tl;\n    const width = Point.distance(tl, tr);\n    const height = Point.distance(tl, bl);\n    return { x, y, width, height };\n  },\n  /**\n   * Returns a rect containing all input rects\n   * @param rect - a list of rectangles\n   * @returns A rectangle that fits exactly around the input rects\n   * @internal\n   */\n  merge: (...rect) => {\n    const min = {\n      x: Math.min(...rect.map(Rect.minX)),\n      y: Math.min(...rect.map(Rect.minY))\n    };\n    const max = {\n      x: Math.max(...rect.map(Rect.maxX)),\n      y: Math.max(...rect.map(Rect.maxY))\n    };\n    return Rect.fromTwoPoints(min, max);\n  },\n  /** @internal */\n  intersection: (rect1, rect2) => {\n    const x = Math.max(rect1.x, rect2.x);\n    const x2 = Math.min(rect1.x + rect1.width, rect2.x + rect2.width);\n    const y = Math.max(rect1.y, rect2.y);\n    const y2 = Math.min(rect1.y + rect1.height, rect2.y + rect2.height);\n    return { x, y, width: x2 - x, height: y2 - y };\n  },\n  /**\n   * Returns all the corner points for a rect\n   * @param rect -\n   * @internal\n   */\n  points: (rect) => {\n    return [\n      { x: Rect.minX(rect), y: Rect.minY(rect) },\n      { x: Rect.minX(rect), y: Rect.maxY(rect) },\n      { x: Rect.maxX(rect), y: Rect.minY(rect) },\n      { x: Rect.maxX(rect), y: Rect.maxY(rect) }\n    ];\n  },\n  /**\n   * Returns all the corner points for a rect at the origin.\n   * @internal\n   */\n  pointsAtOrigin: (rect) => {\n    return [\n      { x: 0, y: 0 },\n      { x: rect.width, y: 0 },\n      { x: rect.width, y: rect.height },\n      { x: 0, y: rect.height }\n    ];\n  },\n  /** Takes a rect and transforms it by a matrix, resulting in the bounding rectangle of the\n   * rotated and/or translated original.\n   * @param rect - rectangle to transform\n   * @param matrix - matrix to transform by\n   * @returns The bounding rectangle of the rotated and/or translated rect.\n   */\n  transform: (rect, matrix) => {\n    const { x: x1, y: y1 } = matrix.transformPoint({ x: rect.x, y: rect.y });\n    const { x: x2, y: y2 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y });\n    const { x: x3, y: y3 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y + rect.height });\n    const { x: x4, y: y4 } = matrix.transformPoint({ x: rect.x, y: rect.y + rect.height });\n    const x = Math.min(x1, x2, x3, x4);\n    const width = Math.max(x1, x2, x3, x4) - x;\n    const y = Math.min(y1, y2, y3, y4);\n    const height = Math.max(y1, y2, y3, y4) - y;\n    return { x, y, width, height };\n  },\n  /**\n   * Checks if a rectangle contains a point\n   * @param rect - The rectangle to check\n   * @param point - The point to check\n   * @returns true if the provided rectangle contains the provided point\n   * @internal\n   */\n  containsPoint: (rect, point) => {\n    if (point.x < Rect.minX(rect)) {\n      return false;\n    }\n    if (point.x > Rect.maxX(rect)) {\n      return false;\n    }\n    if (point.y < Rect.minY(rect)) {\n      return false;\n    }\n    if (point.y > Rect.maxY(rect)) {\n      return false;\n    }\n    if (Number.isNaN(rect.x)) {\n      return false;\n    }\n    if (Number.isNaN(rect.y)) {\n      return false;\n    }\n    return true;\n  },\n  /**\n   * Returns wether a rect contains another rect entirely\n   * @param rectA -\n   * @param rectB -\n   * @returns true if rectA contains rectB\n   */\n  containsRect: (rectA, rectB) => {\n    for (const point of Rect.points(rectB)) {\n      if (!Rect.containsPoint(rectA, point)) {\n        return false;\n      }\n    }\n    return true;\n  },\n  /** @internal */\n  toCSS: (rect) => {\n    return {\n      display: \"block\",\n      transform: `translate(${rect.x}px, ${rect.y}px)`,\n      width: `${rect.width}px`,\n      height: `${rect.height}px`\n    };\n  },\n  /** @internal */\n  inset: (rect, n) => {\n    return {\n      x: rect.x + n,\n      y: rect.y + n,\n      width: Math.max(0, rect.width - 2 * n),\n      height: Math.max(0, rect.height - 2 * n)\n    };\n  },\n  /** @internal */\n  intersects: (rectA, rectB) => {\n    return !(rectB.x >= Rect.maxX(rectA) || Rect.maxX(rectB) <= rectA.x || rectB.y >= Rect.maxY(rectA) || Rect.maxY(rectB) <= rectA.y);\n  },\n  /** @internal */\n  overlapHorizontally: (rectA, rectB) => {\n    const aMax = Rect.maxX(rectA);\n    const bMax = Rect.maxX(rectB);\n    return aMax > rectB.x && bMax > rectA.x;\n  },\n  /** @internal */\n  overlapVertically: (rectA, rectB) => {\n    const aMax = Rect.maxY(rectA);\n    const bMax = Rect.maxY(rectB);\n    return aMax > rectB.y && bMax > rectA.y;\n  },\n  /** @internal */\n  doesNotIntersect: (rect, rects) => {\n    return rects.find((comparingRect) => {\n      return Rect.intersects(comparingRect, rect);\n    }) === void 0;\n  },\n  /**\n   *\n   * @param rectA -\n   * @param rectB -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   * @deprecated: please use Rect.equals instead\n   */\n  isEqual: (rectA, rectB) => {\n    return Rect.equals(rectA, rectB);\n  },\n  // @TODO: duplicate of points()\n  /**\n   * @returns [tl, tr, br, bl]\n   * @internal\n   */\n  cornerPoints: (rect) => {\n    const rectMinX = rect.x;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMaxY = rect.y + rect.height;\n    const corner1 = { x: rectMinX, y: rectMinY };\n    const corner2 = { x: rectMaxX, y: rectMinY };\n    const corner3 = { x: rectMaxX, y: rectMaxY };\n    const corner4 = { x: rectMinX, y: rectMaxY };\n    return [corner1, corner2, corner3, corner4];\n  },\n  /** @internal */\n  midPoints: (rect) => {\n    const rectMinX = rect.x;\n    const rectMidX = rect.x + rect.width / 2;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMidY = rect.y + rect.height / 2;\n    const rectMaxY = rect.y + rect.height;\n    const top = { x: rectMidX, y: rectMinY };\n    const right = { x: rectMaxX, y: rectMidY };\n    const bottom = { x: rectMidX, y: rectMaxY };\n    const left = { x: rectMinX, y: rectMidY };\n    return [top, right, bottom, left];\n  },\n  /** @internal */\n  pointDistance: (rect, point) => {\n    let x = 0;\n    let y = 0;\n    if (point.x < rect.x) {\n      x = rect.x - point.x;\n    } else if (point.x > Rect.maxX(rect)) {\n      x = point.x - Rect.maxX(rect);\n    }\n    if (point.y < rect.y) {\n      y = rect.y - point.y;\n    } else if (point.y > Rect.maxY(rect)) {\n      y = point.y - Rect.maxY(rect);\n    }\n    return Point.distance({ x, y }, { x: 0, y: 0 });\n  },\n  /** @internal */\n  fromAny: (rect, defaults = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  }) => {\n    return {\n      x: rect.x || defaults.x,\n      y: rect.y || defaults.y,\n      width: rect.width || defaults.width,\n      height: rect.height || defaults.height\n    };\n  },\n  delta: (a, b) => {\n    const pointA = { x: Rect.minX(a), y: Rect.minY(a) };\n    const pointB = { x: Rect.minX(b), y: Rect.minY(b) };\n    return {\n      x: pointA.x - pointB.x,\n      y: pointA.y - pointB.y\n    };\n  },\n  /** @internal */\n  withMinSize: (rect, minSize) => {\n    const { width: minWidth, height: minHeight } = minSize;\n    const diffX = rect.width - minWidth;\n    const diffY = rect.height - minHeight;\n    return {\n      width: Math.max(rect.width, minWidth),\n      height: Math.max(rect.height, minHeight),\n      x: rect.width < minWidth ? rect.x + diffX / 2 : rect.x,\n      y: rect.height < minHeight ? rect.y + diffY / 2 : rect.y\n    };\n  },\n  /**\n   * Return false if any point is not inside or on the provided rect.\n   * @internal\n   */\n  anyPointsOutsideRect: (rect, ps) => {\n    const rectMinX = Rect.minX(rect);\n    const rectMinY = Rect.minY(rect);\n    const rectMaxX = Rect.maxX(rect);\n    const rectMaxY = Rect.maxY(rect);\n    for (const point of ps) {\n      if (point.x < rectMinX || point.x > rectMaxX) {\n        return true;\n      }\n      if (point.y < rectMinY || point.y > rectMaxY) {\n        return true;\n      }\n    }\n    return false;\n  },\n  /** @internal */\n  edges: (rect) => {\n    const [tl, tr, br, bl] = Rect.cornerPoints(rect);\n    return [Line(tl, tr), Line(tr, br), Line(br, bl), Line(bl, tl)];\n  },\n  /**\n   * Return a new rect projected into a new position based on the anchor rect and the given direction/alignment.\n   * @internal\n   */\n  rebaseRectOnto: (rect, anchorRect, direction, alignment) => {\n    const rebasedRect = { ...rect };\n    switch (direction) {\n      case \"bottom\":\n      case \"top\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.x = anchorRect.x;\n            break;\n          case \"center\":\n            rebasedRect.x = anchorRect.x + anchorRect.width / 2 - rect.width / 2;\n            break;\n          case \"end\":\n            rebasedRect.x = anchorRect.x + anchorRect.width - rect.width;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"left\":\n        rebasedRect.x = anchorRect.x - rect.width;\n        break;\n      case \"right\":\n        rebasedRect.x = anchorRect.x + anchorRect.width;\n        break;\n      default:\n        assertNever(direction);\n    }\n    switch (direction) {\n      case \"left\":\n      case \"right\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.y = anchorRect.y;\n            break;\n          case \"center\":\n            rebasedRect.y = anchorRect.y + anchorRect.height / 2 - rect.height / 2;\n            break;\n          case \"end\":\n            rebasedRect.y = anchorRect.y + anchorRect.height - rect.height;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"top\":\n        rebasedRect.y = anchorRect.y - rect.height;\n        break;\n      case \"bottom\":\n        rebasedRect.y = anchorRect.y + anchorRect.height;\n        break;\n      default:\n        assertNever(direction);\n    }\n    return rebasedRect;\n  }\n};\n\n// ../../library/src/render/types/Constraints.ts\nvar constraintDefaults = {\n  left: null,\n  right: null,\n  top: null,\n  bottom: null,\n  centerX: \"50%\",\n  centerY: \"50%\",\n  aspectRatio: null,\n  parentSize: null,\n  width: 100,\n  height: 100\n};\nvar DimensionType = /* @__PURE__ */ ((DimensionType2) => {\n  DimensionType2[DimensionType2[\"FixedNumber\"] = 0] = \"FixedNumber\";\n  DimensionType2[DimensionType2[\"Percentage\"] = 1] = \"Percentage\";\n  DimensionType2[DimensionType2[\"Auto\"] = 2] = \"Auto\";\n  DimensionType2[DimensionType2[\"FractionOfFreeSpace\"] = 3] = \"FractionOfFreeSpace\";\n  DimensionType2[DimensionType2[\"Viewport\"] = 4] = \"Viewport\";\n  return DimensionType2;\n})(DimensionType || {});\nfunction isConstraintSupportingChild(child) {\n  if (!isReactChild(child) || !isReactElement(child)) {\n    return false;\n  }\n  return true;\n}\nvar ConstraintMask = {\n  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.\n  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.\n  quickfix: (constraints) => {\n    if (constraints.widthType === 2 /* Auto */ || constraints.heightType === 2 /* Auto */) {\n      constraints.aspectRatio = null;\n    }\n    if (isFiniteNumber(constraints.aspectRatio)) {\n      if (constraints.left && constraints.right) {\n        constraints.widthType = 0 /* FixedNumber */;\n      }\n      if (constraints.top && constraints.bottom) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n      if (constraints.left && constraints.right && constraints.top && constraints.bottom) {\n        constraints.bottom = false;\n      }\n      if (constraints.widthType !== 0 /* FixedNumber */ && constraints.heightType !== 0 /* FixedNumber */) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n    }\n    if (constraints.left && constraints.right) {\n      if (constraints.fixedSize || constraints.widthType === 2 /* Auto */ || isFiniteNumber(constraints.maxWidth)) {\n        constraints.right = false;\n      }\n      constraints.widthType = 0 /* FixedNumber */;\n    }\n    if (constraints.top && constraints.bottom) {\n      if (constraints.fixedSize || constraints.heightType === 2 /* Auto */ || isFiniteNumber(constraints.maxHeight)) {\n        constraints.bottom = false;\n      }\n      constraints.heightType = 0 /* FixedNumber */;\n    }\n    return constraints;\n  }\n};\nfunction valueToDimensionType(value) {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    if (trimmedValue === \"auto\")\n      return 2 /* Auto */;\n    if (trimmedValue.endsWith(\"fr\"))\n      return 3 /* FractionOfFreeSpace */;\n    if (trimmedValue.endsWith(\"%\"))\n      return 1 /* Percentage */;\n    if (trimmedValue.endsWith(\"vw\") || trimmedValue.endsWith(\"vh\"))\n      return 4 /* Viewport */;\n  }\n  return 0 /* FixedNumber */;\n}\nvar ConstraintValues = {\n  // Returns concrete current values given some ConstraintProperties.\n  fromProperties: (props) => {\n    const { left, right, top, bottom, width, height, centerX, centerY, aspectRatio, autoSize } = props;\n    const constraints = ConstraintMask.quickfix({\n      left: isFiniteNumber(left) || isAnimatable(left),\n      right: isFiniteNumber(right) || isAnimatable(right),\n      top: isFiniteNumber(top) || isAnimatable(top),\n      bottom: isFiniteNumber(bottom) || isAnimatable(bottom),\n      widthType: valueToDimensionType(width),\n      heightType: valueToDimensionType(height),\n      aspectRatio: aspectRatio || null,\n      fixedSize: autoSize === true\n    });\n    let widthValue = null;\n    let heightValue = null;\n    let widthType = 0 /* FixedNumber */;\n    let heightType = 0 /* FixedNumber */;\n    if (constraints.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n      const parsedWidth = parseFloat(width);\n      if (width.endsWith(\"fr\")) {\n        widthType = 3 /* FractionOfFreeSpace */;\n        widthValue = parsedWidth;\n      } else if (width === \"auto\") {\n        widthType = 2 /* Auto */;\n      } else {\n        widthType = 1 /* Percentage */;\n        widthValue = parsedWidth / 100;\n      }\n    } else if (width !== void 0 && typeof width !== \"string\") {\n      widthValue = Animatable.getNumber(width);\n    }\n    if (constraints.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n      const parsedHeight = parseFloat(height);\n      if (height.endsWith(\"fr\")) {\n        heightType = 3 /* FractionOfFreeSpace */;\n        heightValue = parsedHeight;\n      } else if (height === \"auto\") {\n        heightType = 2 /* Auto */;\n      } else {\n        heightType = 1 /* Percentage */;\n        heightValue = parseFloat(height) / 100;\n      }\n    } else if (height !== void 0 && typeof height !== \"string\") {\n      heightValue = Animatable.getNumber(height);\n    }\n    let centerAnchorX = 0.5;\n    let centerAnchorY = 0.5;\n    if (centerX) {\n      centerAnchorX = parseFloat(centerX) / 100;\n    }\n    if (centerY) {\n      centerAnchorY = parseFloat(centerY) / 100;\n    }\n    return {\n      left: constraints.left ? Animatable.getNumber(left) : null,\n      right: constraints.right ? Animatable.getNumber(right) : null,\n      top: constraints.top ? Animatable.getNumber(top) : null,\n      bottom: constraints.bottom ? Animatable.getNumber(bottom) : null,\n      widthType,\n      heightType,\n      width: widthValue,\n      height: heightValue,\n      aspectRatio: constraints.aspectRatio || null,\n      centerAnchorX,\n      centerAnchorY\n    };\n  },\n  toSize: (values, parentSizeInfo, autoSize, freeSpace) => {\n    let width = null;\n    let height = null;\n    const parentWidth = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.width) : null;\n    const parentHeight = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.height) : null;\n    const hOpposingPinsOffset = pinnedOffset(values.left, values.right);\n    if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {\n      width = parentWidth - hOpposingPinsOffset;\n    } else if (autoSize && values.widthType === 2 /* Auto */) {\n      width = autoSize.width;\n    } else if (isFiniteNumber(values.width)) {\n      switch (values.widthType) {\n        case 0 /* FixedNumber */:\n          width = values.width;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          width = freeSpace ? freeSpace.freeSpaceInParent.width / freeSpace.freeSpaceUnitDivisor.width * values.width : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentWidth) {\n            width = parentWidth * values.width;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.widthType);\n      }\n    }\n    const vOpposingPinsOffset = pinnedOffset(values.top, values.bottom);\n    if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {\n      height = parentHeight - vOpposingPinsOffset;\n    } else if (autoSize && values.heightType === 2 /* Auto */) {\n      height = autoSize.height;\n    } else if (isFiniteNumber(values.height)) {\n      switch (values.heightType) {\n        case 0 /* FixedNumber */:\n          height = values.height;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          height = freeSpace ? freeSpace.freeSpaceInParent.height / freeSpace.freeSpaceUnitDivisor.height * values.height : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentHeight) {\n            height = parentHeight * values.height;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.heightType);\n      }\n    }\n    return sizeAfterApplyingConstraintsAndAspectRatio(\n      width,\n      height,\n      values,\n      {\n        height: parentHeight ?? 0,\n        width: parentWidth ?? 0\n      },\n      parentSizeInfo == null ? void 0 : parentSizeInfo.viewport\n    );\n  },\n  // Returns a parent-relative rect given concrete ConstraintValues.\n  toRect: (values, parentSizeInfo = null, autoSize = null, pixelAlign = false, freeSpace = null) => {\n    let x = values.left || 0;\n    let y = values.top || 0;\n    const { width, height } = ConstraintValues.toSize(values, parentSizeInfo, autoSize, freeSpace);\n    const parentSizeForPositioning = (parentSizeInfo == null ? void 0 : parentSizeInfo.positioning) ?? null;\n    const positioningParentWidth = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.width) : null;\n    const positioningParentHeight = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.height) : null;\n    if (values.left !== null) {\n      x = values.left;\n    } else if (positioningParentWidth && values.right !== null) {\n      x = positioningParentWidth - values.right - width;\n    } else if (positioningParentWidth) {\n      x = values.centerAnchorX * positioningParentWidth - width / 2;\n    }\n    if (values.top !== null) {\n      y = values.top;\n    } else if (positioningParentHeight && values.bottom !== null) {\n      y = positioningParentHeight - values.bottom - height;\n    } else if (positioningParentHeight) {\n      y = values.centerAnchorY * positioningParentHeight - height / 2;\n    }\n    const f = { x, y, width, height };\n    if (pixelAlign) {\n      return Rect.pixelAligned(f);\n    }\n    return f;\n  }\n};\nvar defaultWidth = 200;\nvar defaultHeight = 200;\nfunction getConstraintValue(constraint, value, parentSize, viewport) {\n  if (typeof value === \"string\") {\n    if (value.endsWith(\"%\") && parentSize) {\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * parentSize.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * parentSize.height;\n        default:\n          break;\n      }\n    }\n    if (value.endsWith(\"vh\")) {\n      if (!viewport)\n        return constraintValueForUncalculatedViewport(constraint);\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * viewport.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * viewport.height;\n        default:\n          break;\n      }\n    }\n    return parseFloat(value);\n  }\n  return value;\n}\nfunction constraintValueForUncalculatedViewport(constraint) {\n  switch (constraint) {\n    case \"minWidth\":\n    case \"minHeight\":\n      return Number.NEGATIVE_INFINITY;\n    case \"maxWidth\":\n    case \"maxHeight\":\n      return Number.POSITIVE_INFINITY;\n    default:\n      assertNever(constraint, \"unknown constraint key\");\n  }\n}\nfunction constrainHeight(height, values, parentSize, viewport) {\n  if (values.minHeight) {\n    height = Math.max(getConstraintValue(\"minHeight\", values.minHeight, parentSize, viewport), height);\n  }\n  if (values.maxHeight) {\n    height = Math.min(getConstraintValue(\"maxHeight\", values.maxHeight, parentSize, viewport), height);\n  }\n  return height;\n}\nfunction constrainWidth(width, values, parentSize, viewport) {\n  if (values.minWidth) {\n    width = Math.max(getConstraintValue(\"minWidth\", values.minWidth, parentSize, viewport), width);\n  }\n  if (values.maxWidth) {\n    width = Math.min(getConstraintValue(\"maxWidth\", values.maxWidth, parentSize, viewport), width);\n  }\n  return width;\n}\nfunction sizeAfterApplyingConstraintsAndAspectRatio(width, height, values, parentSize, viewport) {\n  let w = constrainWidth(isFiniteNumber(width) ? width : defaultWidth, values, parentSize, viewport);\n  let h = constrainHeight(isFiniteNumber(height) ? height : defaultHeight, values, parentSize, viewport);\n  if (isFiniteNumber(values.aspectRatio) && values.aspectRatio > 0) {\n    if (isFiniteNumber(values.left) && isFiniteNumber(values.right)) {\n      h = w / values.aspectRatio;\n    } else if (isFiniteNumber(values.top) && isFiniteNumber(values.bottom)) {\n      w = h * values.aspectRatio;\n    } else if (values.widthType !== 0 /* FixedNumber */) {\n      h = w / values.aspectRatio;\n    } else {\n      w = h * values.aspectRatio;\n    }\n  }\n  return {\n    width: w,\n    height: h\n  };\n}\nfunction pinnedOffset(start, end) {\n  if (!isFiniteNumber(start) || !isFiniteNumber(end))\n    return null;\n  return start + end;\n}\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport { Fragment as Fragment3, jsx as jsx8 } from \"react/jsx-runtime\";\nfunction containsInvalidStringValues(props) {\n  if (typeof props.right === \"string\")\n    return true;\n  if (typeof props.bottom === \"string\")\n    return true;\n  if (typeof props.left === \"string\" && (!props.center || props.center === \"y\")) {\n    return true;\n  }\n  if (typeof props.top === \"string\" && (!props.center || props.center === \"x\")) {\n    return true;\n  }\n  return false;\n}\nfunction constraintsEnabled(props) {\n  if (!props._constraints)\n    return false;\n  if (containsInvalidStringValues(props))\n    return false;\n  return props._constraints.enabled;\n}\nfunction sizeFromFiniteNumberProps(props) {\n  const { size } = props;\n  let { width, height } = props;\n  if (isFiniteNumber(size)) {\n    if (width === void 0) {\n      width = size;\n    }\n    if (height === void 0) {\n      height = size;\n    }\n  }\n  if (isFiniteNumber(width) && isFiniteNumber(height)) {\n    return {\n      width,\n      height\n    };\n  }\n  return null;\n}\nfunction rectFromFiniteNumberProps(props) {\n  const size = sizeFromFiniteNumberProps(props);\n  if (size === null) {\n    return null;\n  }\n  const { left, top } = props;\n  if (isFiniteNumber(left) && isFiniteNumber(top)) {\n    return {\n      x: left,\n      y: top,\n      ...size\n    };\n  }\n  return null;\n}\nfunction calculateRect(props, parentSize, pixelAlign = true) {\n  if (props.positionFixed || props.positionAbsolute)\n    return null;\n  const parentSizeDisabled = parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */;\n  if (!constraintsEnabled(props) || parentSizeDisabled) {\n    return rectFromFiniteNumberProps(props);\n  }\n  const constraintValues = getConstraintValues(props);\n  const enabledParentSize = deprecatedParentSize(parentSize);\n  const parentSizeInfo = enabledParentSize ? { sizing: enabledParentSize, positioning: enabledParentSize, viewport: null } : null;\n  return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, pixelAlign, null);\n}\nfunction getConstraintValues(props) {\n  const { left, right, top, bottom, center, _constraints, size } = props;\n  let { width, height } = props;\n  if (width === void 0) {\n    width = size;\n  }\n  if (height === void 0) {\n    height = size;\n  }\n  const { aspectRatio, autoSize } = _constraints;\n  const constraintMask = ConstraintMask.quickfix({\n    left: isFiniteNumber(left),\n    right: isFiniteNumber(right),\n    top: isFiniteNumber(top),\n    bottom: isFiniteNumber(bottom),\n    widthType: valueToDimensionType(width),\n    heightType: valueToDimensionType(height),\n    aspectRatio: aspectRatio || null,\n    fixedSize: autoSize === true\n  });\n  let widthValue = null;\n  let heightValue = null;\n  let widthType = 0 /* FixedNumber */;\n  let heightType = 0 /* FixedNumber */;\n  if (constraintMask.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n    const parsedWidth = parseFloat(width);\n    if (width.endsWith(\"fr\")) {\n      widthType = 3 /* FractionOfFreeSpace */;\n      widthValue = parsedWidth;\n    } else if (width === \"auto\") {\n      widthType = 2 /* Auto */;\n    } else {\n      widthType = 1 /* Percentage */;\n      widthValue = parsedWidth / 100;\n    }\n  } else if (width !== void 0 && typeof width !== \"string\") {\n    widthValue = width;\n  }\n  if (constraintMask.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n    const parsedHeight = parseFloat(height);\n    if (height.endsWith(\"fr\")) {\n      heightType = 3 /* FractionOfFreeSpace */;\n      heightValue = parsedHeight;\n    } else if (height === \"auto\") {\n      heightType = 2 /* Auto */;\n    } else {\n      heightType = 1 /* Percentage */;\n      heightValue = parseFloat(height) / 100;\n    }\n  } else if (height !== void 0 && typeof height !== \"string\") {\n    heightValue = height;\n  }\n  let centerAnchorX = 0.5;\n  let centerAnchorY = 0.5;\n  if (center === true || center === \"x\") {\n    constraintMask.left = false;\n    if (typeof left === \"string\") {\n      centerAnchorX = parseFloat(left) / 100;\n    }\n  }\n  if (center === true || center === \"y\") {\n    constraintMask.top = false;\n    if (typeof top === \"string\") {\n      centerAnchorY = parseFloat(top) / 100;\n    }\n  }\n  return {\n    // Because we check isFiniteNumber when creating the masks,\n    // We know that left, right, top and bottom are numbers if the mask is true for the corresponding value\n    // We need to cast this because typescript does not understand that\n    left: constraintMask.left ? left : null,\n    right: constraintMask.right ? right : null,\n    top: constraintMask.top ? top : null,\n    bottom: constraintMask.bottom ? bottom : null,\n    widthType,\n    heightType,\n    width: widthValue,\n    height: heightValue,\n    aspectRatio: constraintMask.aspectRatio || null,\n    centerAnchorX,\n    centerAnchorY,\n    minHeight: props.minHeight,\n    maxHeight: props.maxHeight,\n    minWidth: props.minWidth,\n    maxWidth: props.maxWidth\n  };\n}\nvar ParentSizeState = /* @__PURE__ */ ((ParentSizeState2) => {\n  ParentSizeState2[ParentSizeState2[\"Unknown\"] = 0] = \"Unknown\";\n  ParentSizeState2[ParentSizeState2[\"Disabled\"] = 1] = \"Disabled\";\n  ParentSizeState2[ParentSizeState2[\"DisabledForCurrentLevel\"] = 2] = \"DisabledForCurrentLevel\";\n  return ParentSizeState2;\n})(ParentSizeState || {});\nvar ConstraintsContext = /* @__PURE__ */ React13.createContext({\n  parentSize: 0 /* Unknown */\n});\nfunction deprecatedParentSize(parentSize) {\n  if (parentSize === 0 /* Unknown */ || parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */) {\n    return null;\n  }\n  return parentSize;\n}\nfunction useParentSize() {\n  return React13.useContext(ConstraintsContext).parentSize;\n}\nfunction isSize(o) {\n  return typeof o === \"object\";\n}\nvar ProvideParentSize = (props) => {\n  const currentParentSize = useParentSize();\n  const { parentSize, children } = props;\n  const value = React13.useMemo(\n    () => ({ parentSize }),\n    [getParentWidth(parentSize), getParentHeight(parentSize)]\n  );\n  if (currentParentSize === 1 /* Disabled */) {\n    return children ? /* @__PURE__ */ jsx8(Fragment3, { children }) : null;\n  }\n  return /* @__PURE__ */ jsx8(ConstraintsContext.Provider, { value, children });\n};\nfunction getParentWidth(parentSize) {\n  return isSize(parentSize) ? parentSize.width : parentSize;\n}\nfunction getParentHeight(parentSize) {\n  return isSize(parentSize) ? parentSize.height : parentSize;\n}\nfunction useProvideParentSize(node, parentSize) {\n  return /* @__PURE__ */ jsx8(ProvideParentSize, { parentSize, children: node });\n}\nfunction useConstraints(props) {\n  const parentSize = useParentSize();\n  const calculatedRect = calculateRect(props, parentSize, true);\n  return calculatedRect;\n}\nfunction isAutoSized({\n  width,\n  height\n}) {\n  return width === \"auto\" || width === \"min-content\" || height === \"auto\" || height === \"min-content\";\n}\n\n// ../../library/src/render/types/PropertyControls.ts\nvar ControlType = /* @__PURE__ */ ((ControlType2) => {\n  ControlType2[\"Boolean\"] = \"boolean\";\n  ControlType2[\"Number\"] = \"number\";\n  ControlType2[\"String\"] = \"string\";\n  ControlType2[\"RichText\"] = \"richtext\";\n  ControlType2[\"FusedNumber\"] = \"fusednumber\";\n  ControlType2[\"Enum\"] = \"enum\";\n  ControlType2[\"SegmentedEnum\"] = \"segmentedenum\";\n  ControlType2[\"Color\"] = \"color\";\n  ControlType2[\"Image\"] = \"image\";\n  ControlType2[\"ResponsiveImage\"] = \"responsiveimage\";\n  ControlType2[\"File\"] = \"file\";\n  ControlType2[\"ComponentInstance\"] = \"componentinstance\";\n  ControlType2[\"Array\"] = \"array\";\n  ControlType2[\"EventHandler\"] = \"eventhandler\";\n  ControlType2[\"Transition\"] = \"transition\";\n  ControlType2[\"BoxShadow\"] = \"boxshadow\";\n  ControlType2[\"Link\"] = \"link\";\n  ControlType2[\"Date\"] = \"date\";\n  ControlType2[\"Object\"] = \"object\";\n  ControlType2[\"Font\"] = \"font\";\n  ControlType2[\"PageScope\"] = \"pagescope\";\n  ControlType2[\"ScrollSectionRef\"] = \"scrollsectionref\";\n  ControlType2[\"CustomCursor\"] = \"customcursor\";\n  ControlType2[\"Border\"] = \"border\";\n  ControlType2[\"Cursor\"] = \"cursor\";\n  ControlType2[\"Padding\"] = \"padding\";\n  ControlType2[\"BorderRadius\"] = \"borderradius\";\n  ControlType2[\"CollectionReference\"] = \"collectionreference\";\n  ControlType2[\"MultiCollectionReference\"] = \"multicollectionreference\";\n  ControlType2[\"TrackingId\"] = \"trackingid\";\n  ControlType2[\"VectorSetItem\"] = \"vectorsetitem\";\n  return ControlType2;\n})(ControlType || {});\n\n// ../../library/src/modules/isFlexboxGapSupported.ts\nvar isFlexboxGapSupportedCached;\nfunction isFlexboxGapSupported() {\n  if (isFlexboxGapSupportedCached !== void 0) {\n    return isFlexboxGapSupportedCached;\n  }\n  const flex = document.createElement(\"div\");\n  Object.assign(flex.style, {\n    position: \"absolute\",\n    // avoid layout shift\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"1px\"\n  });\n  flex.appendChild(document.createElement(\"div\"));\n  flex.appendChild(document.createElement(\"div\"));\n  document.body.appendChild(flex);\n  const isSupported = flex.scrollHeight === 1;\n  if (flex.parentNode) {\n    flex.parentNode.removeChild(flex);\n  }\n  isFlexboxGapSupportedCached = isSupported;\n  return isSupported;\n}\n\n// ../../library/src/modules/workaroundFlexboxGapNotSupported.ts\nvar flexboxGapNotSupportedClass = \"flexbox-gap-not-supported\";\nvar initialized = false;\nfunction installFlexboxGapWorkaroundIfNeeded() {\n  if (initialized)\n    return;\n  initialized = true;\n  if (isFlexboxGapSupported())\n    return;\n  document.body.classList.add(flexboxGapNotSupportedClass);\n}\n\n// ../../library/src/render/utils/injectDeprecatedRichTextRules.ts\nvar richTextStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6,\n[data-framer-component-type=\"DeprecatedRichText\"] li,\n[data-framer-component-type=\"DeprecatedRichText\"] ol,\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] span:not([data-text-fill]) {\n    font-family: var(--framer-font-family, Inter, Inter Placeholder, sans-serif);\n    font-style: var(--framer-font-style, normal);\n    font-weight: var(--framer-font-weight, 400);\n    color: var(--framer-text-color, #000);\n    font-size: var(--framer-font-size, 16px);\n    letter-spacing: var(--framer-letter-spacing, 0);\n    text-transform: var(--framer-text-transform, none);\n    text-decoration: var(--framer-text-decoration, none);\n    line-height: var(--framer-line-height, 1.2em);\n    text-align: var(--framer-text-alignment, start);\n}\n`;\nvar richTextParagraphSpacingStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] div:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h1:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h2:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h3:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h4:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h5:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h6:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ol:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ul:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image:not(:first-child) {\n    margin-top: var(--framer-paragraph-spacing, 0);\n}\n`;\nvar richTextBackgroundMaskStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] span[data-text-fill] {\n    display: inline-block;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n}\n`;\nvar richTextLinkStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a,\n[data-framer-component-type=\"DeprecatedRichText\"] a span:not([data-text-fill]) {\n    font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n    font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n    font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n    color: var(--framer-link-text-color, var(--framer-text-color, #000));\n    font-size: var(--framer-link-font-size, var(--framer-font-size, 16px));\n    text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n    text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n}\n`;\nvar richTextLinkHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current],\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current] span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n    color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n}\n`;\nvar richTextBoldStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] strong {\n    font-weight: bolder;\n}\n`;\nvar richTextItalicStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] em {\n    font-style: italic;\n}\n`;\nvar richTextImageRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}\n`;\nvar richTextBlockElementResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6 {\n    margin: 0;\n    padding: 0;\n}\n`;\nvar richTextStylesPresetResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .text-styles-preset-reset {\n    --framer-font-family: Inter, Inter Placeholder, sans-serif;\n    --framer-font-style: normal;\n    --framer-font-weight: 500;\n    --framer-text-color: #000;\n    --framer-font-size: 16px;\n    --framer-letter-spacing: 0;\n    --framer-text-transform: none;\n    --framer-text-decoration: none;\n    --framer-line-height: 1.2em;\n    --framer-text-alignment: start;\n    --framer-font-open-type-features: normal;\n    --font-variation-settings: normal;\n}\n`;\nvar richTextStylesList = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] ol {\n    display: table;\n    width: 100%;\n    padding-left: 0;\n    margin: 0;\n}\n`;\nvar richTextStylesListItem = `\n[data-framer-component-type=\"DeprecatedRichText\"] li {\n    display: table-row;\n    counter-increment: list-item;\n    list-style: none;\n}\n`;\nvar richTextStylesNumberedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ol > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: counter(list-item) \".\";\n    white-space: nowrap;\n}\n`;\nvar richTextStylesBulletedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: \"\\u2022\";\n}\n`;\nvar deprecatedRichTextCSSRules = [\n  `[data-framer-component-type=\"DeprecatedRichText\"] { cursor: inherit; }`,\n  richTextStylesPresetResetRule,\n  richTextBlockElementResetRule,\n  richTextStylesRule,\n  richTextParagraphSpacingStylesRule,\n  richTextBackgroundMaskStylesRule,\n  richTextLinkStylesRule,\n  richTextLinkHoverStylesRule,\n  richTextLinkCurrentStylesRule,\n  richTextLinkCurrentHoverStylesRule,\n  richTextBoldStylesRule,\n  richTextItalicStylesRule,\n  richTextImageRule,\n  richTextStylesList,\n  richTextStylesListItem,\n  richTextStylesNumberedListMarker,\n  richTextStylesBulletedListMarker\n];\n\n// ../../library/src/render/utils/injectRichTextRules.ts\nvar richTextCSSRules = [\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        figure.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        ol.framer-text,\n        ul.framer-text {\n            margin: 0;\n            padding: 0;\n        }\n    `,\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        li.framer-text,\n        ol.framer-text,\n        ul.framer-text,\n        span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-blockquote-text-color, var(--framer-text-color, #000));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-text-transform, none));\n            text-decoration: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, none));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n            text-align: var(--framer-blockquote-text-alignment, var(--framer-text-alignment, start));\n            -webkit-text-stroke-width: var(--framer-text-stroke-width, initial);\n            -webkit-text-stroke-color: var(--framer-text-stroke-color, initial);\n            -moz-font-feature-settings: var(--framer-font-open-type-features, initial);\n            -webkit-font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-variation-settings: var(--framer-font-variation-axes, normal);\n            text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));\n        }\n    `,\n  /* css */\n  `\n        .framer-fit-text .framer-text {\n            white-space: nowrap;\n            white-space-collapse: preserve;\n        }\n    `,\n  /* css */\n  `\n        strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold, var(--framer-font-family-bold));\n            font-style: var(--framer-blockquote-font-style-bold, var(--framer-font-style-bold));\n            font-weight: var(--framer-blockquote-font-weight-bold, var(--framer-font-weight-bold, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold, var(--framer-font-variation-axes-bold));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text {\n            font-family: var(--framer-blockquote-font-family-italic, var(--framer-font-family-italic));\n            font-style: var(--framer-blockquote-font-style-italic, var(--framer-font-style-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-italic, var(--framer-font-weight-italic));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-italic, var(--framer-font-variation-axes-italic));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text > strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold-italic, var(--framer-font-family-bold-italic));\n            font-style: var(--framer-blockquote-font-style-bold-italic, var(--framer-font-style-bold-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-bold-italic, var(--framer-font-weight-bold-italic, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold-italic, var(--framer-font-variation-axes-bold-italic));\n        }\n    `,\n  /* css */\n  `\n        p.framer-text:not(:first-child),\n        div.framer-text:not(:first-child),\n        h1.framer-text:not(:first-child),\n        h2.framer-text:not(:first-child),\n        h3.framer-text:not(:first-child),\n        h4.framer-text:not(:first-child),\n        h5.framer-text:not(:first-child),\n        h6.framer-text:not(:first-child),\n        ol.framer-text:not(:first-child),\n        ul.framer-text:not(:first-child),\n        blockquote.framer-text:not(:first-child),\n        table.framer-text:not(:first-child),\n        figure.framer-text:not(:first-child),\n        .framer-image.framer-text:not(:first-child) {\n            margin-top: var(--framer-blockquote-paragraph-spacing, var(--framer-paragraph-spacing, 0));\n        }\n    `,\n  // The first child of a list item is a paragraph. If the second child is a\n  // nested list we don't want it to have paragraph spacing.\n  /* css */\n  `\n        li.framer-text > ul.framer-text:nth-child(2),\n        li.framer-text > ol.framer-text:nth-child(2) {\n            margin-top: 0;\n        }\n    `,\n  // background-clip: text clips to the physical dimensions of text as appose\n  // to the rendered dimensions. normal text will bleed out side these\n  // constraints but since this is just a clipping mask over the area the text\n  // takes up we have cases where the text will get clipped. That is why we\n  // need to expand the area that the gradient applies to to allow users to\n  // use low line-heights. This will result in gradients not aligning\n  // perfectly to the edges of the text. but this is a acceptable trade off at\n  // this point. For now we increase the area of the clipping mask on the\n  // bottom (for descenders) and the right for italic or wide fonts.\n  /* css */\n  `\n        .framer-text[data-text-fill] {\n            display: inline-block;\n            background-clip: text;\n            -webkit-background-clip: text;\n            /* make this a transparent color if you want to visualise the clipping  */\n            -webkit-text-fill-color: transparent;\n            padding: max(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / 2));\n            margin: min(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / -2));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text,\n        code.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n        }\n    `,\n  /* css */\n  `\n        blockquote.framer-text {\n            margin-block-start: initial;\n            margin-block-end: initial;\n            margin-inline-start: initial;\n            margin-inline-end: initial;\n            unicode-bidi: initial;\n        }\n    `,\n  /* css */\n  `\n        a.framer-text,\n        a.framer-text span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link],\n        span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n            /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */\n            cursor: var(--framer-custom-cursors, pointer);\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text,\n        code.framer-text a.framer-text span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link],\n        code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link]:hover,\n        span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link]:hover,\n        code.framer-text span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current],\n        a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        span.framer-text[data-framer-page-link-current],\n        span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current],\n        code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current],\n        code.framer-text span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current]:hover,\n        a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-framer-page-link-current]:hover,\n        span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        .framer-image.framer-text {\n            display: block;\n            max-width: 100%;\n            height: auto;\n        }\n    `,\n  /* css */\n  `\n        .text-styles-preset-reset.framer-text {\n            --framer-font-family: Inter, Inter Placeholder, sans-serif;\n            --framer-font-style: normal;\n            --framer-font-weight: 500;\n            --framer-text-color: #000;\n            --framer-font-size: 16px;\n            --framer-letter-spacing: 0;\n            --framer-text-transform: none;\n            --framer-text-decoration: none;\n            --framer-line-height: 1.2em;\n            --framer-text-alignment: start;\n            --framer-font-open-type-features: normal;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text {\n            --list-style-type: decimal;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text,\n        ol.framer-text {\n            display: table;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        li.framer-text {\n            display: table-row;\n            counter-increment: list-item;\n            list-style: none;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-inline-end: 0.75ch;\n            content: counter(list-item, var(--list-style-type)) \".\";\n            white-space: nowrap;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-inline-end: 0.75ch;\n            content: \"\\u2022\";\n        }\n    `,\n  /* css */\n  `\n        .framer-table-wrapper {\n            overflow-x: auto;\n        }\n    `,\n  /* css */\n  `\n        table.framer-text,\n        .framer-table-wrapper table {\n            border-collapse: separate;\n            border-spacing: 0;\n            table-layout: auto;\n            white-space: nowrap;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] {\n                position: relative;\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"]::before {\n                content: \"\";\n                display: block;\n                padding-bottom: calc(100% / calc(var(--aspect-ratio)));\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n                position: absolute;\n                top: 0;\n                left: 0;\n                height: 100%;\n            }\n        }\n    `\n];\n\n// ../../library/src/render/utils/setDocumentStyles.ts\nvar defaultCache = /* @__PURE__ */ new Set();\nvar defaultSheet;\nfunction injectCSSRule(cssRule, sheet, cache2 = defaultCache) {\n  if (!cssRule || cache2.has(cssRule) || typeof document === \"undefined\")\n    return;\n  cache2.add(cssRule);\n  if (!sheet) {\n    if (!defaultSheet) {\n      const styleElement = document.createElement(\"style\");\n      styleElement.setAttribute(\"type\", \"text/css\");\n      styleElement.setAttribute(\"data-framer-css\", \"true\");\n      if (!document.head) {\n        console.warn(\"not injecting CSS: the document is missing a <head> element\");\n        return;\n      }\n      document.head.appendChild(styleElement);\n      if (styleElement.sheet) {\n        defaultSheet = styleElement.sheet;\n      } else {\n        console.warn(\"not injecting CSS: injected <style> element does not have a sheet\", styleElement);\n        return;\n      }\n    }\n    sheet = defaultSheet;\n  }\n  try {\n    sheet.insertRule(cssRule, sheet.cssRules.length);\n  } catch {\n  }\n}\n\n// ../../library/src/render/utils/injectComponentCSSRules.ts\nvar componentCSSRules = [`[data-framer-component-type] { position: absolute; }`];\nvar textAlignmentRule = `\n[data-framer-component-type=\"Text\"] > * {\n    text-align: var(--framer-text-alignment, start);\n}`;\nvar textBlockSpanRule = `\n[data-framer-component-type=\"Text\"] span span,\n[data-framer-component-type=\"Text\"] p span,\n[data-framer-component-type=\"Text\"] h1 span,\n[data-framer-component-type=\"Text\"] h2 span,\n[data-framer-component-type=\"Text\"] h3 span,\n[data-framer-component-type=\"Text\"] h4 span,\n[data-framer-component-type=\"Text\"] h5 span,\n[data-framer-component-type=\"Text\"] h6 span {\n    display: block;\n}`;\nvar textInlineSpanRule = `\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span {\n    display: unset;\n}`;\nvar renderTextStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    font-family: var(--font-family);\n    font-style: var(--font-style);\n    font-weight: min(calc(var(--framer-font-weight-increase, 0) + var(--font-weight, 400)), 900);\n    color: var(--text-color);\n    letter-spacing: var(--letter-spacing);\n    font-size: var(--font-size);\n    text-transform: var(--text-transform);\n    text-decoration: var(--text-decoration);\n    line-height: var(--line-height);\n}`;\nvar textStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    --font-family: var(--framer-font-family);\n    --font-style: var(--framer-font-style);\n    --font-weight: var(--framer-font-weight);\n    --text-color: var(--framer-text-color);\n    --letter-spacing: var(--framer-letter-spacing);\n    --font-size: var(--framer-font-size);\n    --text-transform: var(--framer-text-transform);\n    --text-decoration: var(--framer-text-decoration);\n    --line-height: var(--framer-line-height);\n}`;\nvar linkStylesRule = `\n[data-framer-component-type=\"Text\"] a,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] a span span span,\n[data-framer-component-type=\"Text\"] a p span span,\n[data-framer-component-type=\"Text\"] a h1 span span,\n[data-framer-component-type=\"Text\"] a h2 span span,\n[data-framer-component-type=\"Text\"] a h3 span span,\n[data-framer-component-type=\"Text\"] a h4 span span,\n[data-framer-component-type=\"Text\"] a h5 span span,\n[data-framer-component-type=\"Text\"] a h6 span span {\n    --font-family: var(--framer-link-font-family, var(--framer-font-family));\n    --font-style: var(--framer-link-font-style, var(--framer-font-style));\n    --font-weight: var(--framer-link-font-weight, var(--framer-font-weight));\n    --text-color: var(--framer-link-text-color, var(--framer-text-color));\n    --font-size: var(--framer-link-font-size, var(--framer-font-size));\n    --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));\n    --text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration));\n}`;\nvar linkHoverStylesRule = `\n[data-framer-component-type=\"Text\"] a:hover,\n[data-framer-component-type=\"Text\"] a div span:hover,\n[data-framer-component-type=\"Text\"] a span span span:hover,\n[data-framer-component-type=\"Text\"] a p span span:hover,\n[data-framer-component-type=\"Text\"] a h1 span span:hover,\n[data-framer-component-type=\"Text\"] a h2 span span:hover,\n[data-framer-component-type=\"Text\"] a h3 span span:hover,\n[data-framer-component-type=\"Text\"] a h4 span span:hover,\n[data-framer-component-type=\"Text\"] a h5 span span:hover,\n[data-framer-component-type=\"Text\"] a h6 span span:hover {\n    --font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar linkCurrentStylesRule = `\n[data-framer-component-type=\"Text\"].isCurrent a,\n[data-framer-component-type=\"Text\"].isCurrent a div span,\n[data-framer-component-type=\"Text\"].isCurrent a span span span,\n[data-framer-component-type=\"Text\"].isCurrent a p span span,\n[data-framer-component-type=\"Text\"].isCurrent a h1 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h2 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h3 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h4 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h5 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h6 span span {\n    --font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar textCSSRules = [\n  `[data-framer-component-type=\"Text\"] { cursor: inherit; }`,\n  `[data-framer-component-text-autosized] * { white-space: pre; }`,\n  textAlignmentRule,\n  textBlockSpanRule,\n  textInlineSpanRule,\n  renderTextStylesRule,\n  textStylesRule,\n  linkStylesRule,\n  linkHoverStylesRule,\n  linkCurrentStylesRule\n];\nvar stackPositionRule = `\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-component-type],\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > [data-framer-component-type] {\n    position: relative;\n}`;\nvar nativeStackGapRules = /* @__PURE__ */ (() => [\n  `[data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: var(--stack-native-row-gap);\n        column-gap: var(--stack-native-column-gap);\n    }`,\n  `.${flexboxGapNotSupportedClass} [data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: unset;\n        column-gap: unset;\n    }`\n])();\nvar stackGapRule = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass} [data-framer-legacy-stack-gap-enabled=\"true\"] > *, [data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"] {\n    margin-top: calc(var(--stack-gap-y) / 2);\n    margin-bottom: calc(var(--stack-gap-y) / 2);\n    margin-right: calc(var(--stack-gap-x) / 2);\n    margin-left: calc(var(--stack-gap-x) / 2);\n}\n`)();\nvar stackDirectionRuleVertical = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child {\n    margin-top: 0;\n    margin-left: 0;\n}`)();\nvar stackDirectionRuleHorizontal = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child {\n    margin-right: 0;\n    margin-bottom: 0;\n}`)();\nvar stackCSSRules = /* @__PURE__ */ (() => [\n  stackPositionRule,\n  stackGapRule,\n  ...nativeStackGapRules,\n  stackDirectionRuleVertical,\n  stackDirectionRuleHorizontal\n])();\nvar navigationCSSRules = [\n  `\nNavigationContainer\n[data-framer-component-type=\"NavigationContainer\"] > *,\n[data-framer-component-type=\"NavigationContainer\"] > [data-framer-component-type] {\n    position: relative;\n}`\n];\nvar scrollCSSRules = [\n  `[data-framer-component-type=\"Scroll\"]::-webkit-scrollbar { display: none; }`,\n  `[data-framer-component-type=\"ScrollContentWrapper\"] > * { position: relative; }`\n];\nvar nativeScrollCSSRules = [\n  `[data-framer-component-type=\"NativeScroll\"] { -webkit-overflow-scrolling: touch; }`,\n  `[data-framer-component-type=\"NativeScroll\"] > * { position: relative; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-both { overflow-x: scroll; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical { overflow-x: hidden; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal { overflow-x: scroll; overflow-y: hidden; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical > * { width: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal > * { height: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].scrollbar-hidden::-webkit-scrollbar { display: none; }`\n];\nvar deviceComponentCSSRules = [\n  `[data-framer-component-type=\"DeviceComponent\"].no-device > * { width: 100% !important; height: 100% !important; }`\n];\nvar pageContentWrapperWrapperCSSRules = [\n  `[data-framer-component-type=\"PageContentWrapper\"] > *, [data-framer-component-type=\"PageContentWrapper\"] > [data-framer-component-type] { position: relative; }`\n];\nvar presenceCSS = [\n  `[data-is-present=\"false\"], [data-is-present=\"false\"] * { pointer-events: none !important; }`\n];\nvar cursorCSS = [\n  `[data-framer-cursor=\"pointer\"] { cursor: pointer; }`,\n  `[data-framer-cursor=\"grab\"] { cursor: grab; }`,\n  `[data-framer-cursor=\"grab\"]:active { cursor: grabbing; }`\n];\nvar frameCSS = [\n  // Non-sites prototyping projects render with FrameWithMotion and Stacks. In\n  // that context this rule ensures pointer events work in a specific way\n  // designed for prototypes that we don't care about anymore in sites. We\n  // can't remove it for legacy reasons, but sites will never render any\n  // elements that are impacted by this rule. However, users can still use the\n  // <Frame> api in code, at which point this rule will kick in. We don't\n  // encourage the use of this API anymore, and bugs that come from this will\n  // be the user's concern.\n  `[data-framer-component-type=\"Frame\"] *, [data-framer-component-type=\"Stack\"] * { pointer-events: auto; }`,\n  // This is fully deprecated, and will never exist in code that is generated\n  // after 24/01/2023. There will be existing code-generated that depends on\n  // this rule existing, so we can't remove it.\n  `[data-framer-generated] * { pointer-events: unset }`\n];\nvar resetCSS = [\n  `[data-reset=\"button\"] {\n        border-width: 0;\n        padding: 0;\n        background: none;\n}`\n];\nvar hideScrollbars = [\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar { width: 0px; height: 0px; }`,\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar-thumb { background: transparent; }`,\n  `[data-hide-scrollbars=\"true\"] { scrollbar-width: none; }`\n];\nvar willChangeOverrideCSSVariable = \"--framer-will-change-override\";\nvar willChangeEffectOverrideCSSVariable = \"--framer-will-change-effect-override\";\nvar anySafariVersion = \"(background: -webkit-named-image(i))\";\nvar safari16OrGreater = \"(grid-template-rows: subgrid)\";\nvar willChangeTransformRules = (isPreview) => isPreview ? [\n  `body { ${willChangeOverrideCSSVariable}: none; }`,\n  `@supports ${anySafariVersion} and (not ${safari16OrGreater}) { body { ${willChangeOverrideCSSVariable}: transform; } }`\n] : [`body { ${willChangeOverrideCSSVariable}: none; ${willChangeEffectOverrideCSSVariable}: none; }`];\nvar frameCSSRules = (isPreview) => {\n  return isPreview ? frameCSS : [];\n};\nvar svgCSSRules = [`.svgContainer svg { display: block; }`];\nvar combineCSSRules = (isPreview) => [\n  ...willChangeTransformRules(isPreview),\n  ...componentCSSRules,\n  ...textCSSRules,\n  ...richTextCSSRules,\n  ...deprecatedRichTextCSSRules,\n  ...stackCSSRules,\n  ...navigationCSSRules,\n  ...scrollCSSRules,\n  ...nativeScrollCSSRules,\n  ...pageContentWrapperWrapperCSSRules,\n  ...deviceComponentCSSRules,\n  ...presenceCSS,\n  ...cursorCSS,\n  ...frameCSSRules(isPreview),\n  ...svgCSSRules,\n  ...resetCSS,\n  ...hideScrollbars\n];\nvar combinedCSSRules = /* @__PURE__ */ combineCSSRules(false);\nvar combinedCSSRulesForPreview = /* @__PURE__ */ combineCSSRules(true);\nvar didInject = false;\nfunction injectComponentCSSRules() {\n  if (didInject)\n    return;\n  didInject = true;\n  const styles4 = RenderTarget.current() === RenderTarget.preview ? combinedCSSRulesForPreview : combinedCSSRules;\n  for (const rule of styles4) {\n    injectCSSRule(rule, void 0, void 0);\n  }\n}\n\n// ../../library/src/utils/applyControlDefaultsToReactDefaultProps.ts\nfunction isReactComponent(component) {\n  return isObject(component) || isFunction(component);\n}\nvar optionalKey = \"optional\";\nfunction controlIsOptional(control) {\n  return !!control && optionalKey in control && control[optionalKey] === true;\n}\nfunction shouldBeNever(_) {\n}\nfunction getControlDefaultValue(control) {\n  try {\n    switch (control.type) {\n      case \"string\" /* String */:\n      case \"collectionreference\" /* CollectionReference */:\n      case \"multicollectionreference\" /* MultiCollectionReference */:\n      case \"color\" /* Color */:\n      case \"date\" /* Date */:\n      case \"link\" /* Link */:\n      case \"boxshadow\" /* BoxShadow */:\n      case \"padding\" /* Padding */:\n      case \"borderradius\" /* BorderRadius */:\n        return isString(control.defaultValue) ? control.defaultValue : void 0;\n      case \"boolean\" /* Boolean */:\n        return isBoolean(control.defaultValue) ? control.defaultValue : void 0;\n      case \"enum\" /* Enum */:\n        if (isUndefined(control.defaultValue))\n          return void 0;\n        return control.options.includes(control.defaultValue) ? control.defaultValue : void 0;\n      case \"fusednumber\" /* FusedNumber */:\n      case \"number\" /* Number */:\n        return isNumber(control.defaultValue) ? control.defaultValue : void 0;\n      case \"transition\" /* Transition */:\n        return isObject(control.defaultValue) ? control.defaultValue : void 0;\n      case \"border\" /* Border */:\n        return isObject(control.defaultValue) ? control.defaultValue : void 0;\n      case \"font\" /* Font */:\n        return isObject(control.defaultValue) ? control.defaultValue : void 0;\n      case \"object\" /* Object */: {\n        const value = isObject(control.defaultValue) ? control.defaultValue : {};\n        if (isObject(control.controls)) {\n          applyControlDefaultsToDefaultProps(value, control.controls);\n        }\n        return value;\n      }\n      case \"array\" /* Array */:\n        return isArray(control.defaultValue) ? control.defaultValue : void 0;\n      case \"file\" /* File */:\n      case \"image\" /* Image */:\n      case \"richtext\" /* RichText */:\n      case \"pagescope\" /* PageScope */:\n      case \"eventhandler\" /* EventHandler */:\n      case \"segmentedenum\" /* SegmentedEnum */:\n      case \"responsiveimage\" /* ResponsiveImage */:\n      case \"componentinstance\" /* ComponentInstance */:\n      case \"scrollsectionref\" /* ScrollSectionRef */:\n      case \"customcursor\" /* CustomCursor */:\n      case \"cursor\" /* Cursor */:\n      case \"trackingid\" /* TrackingId */:\n      case \"vectorsetitem\" /* VectorSetItem */:\n        return void 0;\n      default:\n        shouldBeNever(control);\n        return void 0;\n    }\n  } catch {\n    return void 0;\n  }\n}\nfunction applyControlDefaultsToDefaultProps(defaultProps, controls) {\n  for (const controlKey in controls) {\n    const control = controls[controlKey];\n    if (!control)\n      continue;\n    const currentDefault = defaultProps[controlKey];\n    if (!isUndefined(currentDefault))\n      continue;\n    if (controlIsOptional(control))\n      continue;\n    const defaultValue = getControlDefaultValue(control);\n    if (isUndefined(defaultValue))\n      continue;\n    defaultProps[controlKey] = defaultValue;\n  }\n}\nfunction getDefaultProps(component) {\n  if (isObject(component.defaultProps)) {\n    return component.defaultProps;\n  }\n  const defaultProps = {};\n  component.defaultProps = defaultProps;\n  return defaultProps;\n}\nfunction applyControlDefaultsToReactDefaultProps(component, controls) {\n  if (!isReactComponent(component))\n    return;\n  const defaultProps = getDefaultProps(component);\n  applyControlDefaultsToDefaultProps(defaultProps, controls);\n}\n\n// ../../library/src/utils/addPropertyControls.ts\nfunction addPropertyControls(component, propertyControls) {\n  Object.assign(component, { propertyControls });\n  applyControlDefaultsToReactDefaultProps(component, propertyControls);\n}\nfunction getPropertyControls(component) {\n  return component.propertyControls;\n}\n\n// ../../library/src/components/Device/presets.ts\nvar defaultPresetId = \"iphone-12-pro\";\nvar presetsBase = /* @__PURE__ */ (() => ({\n  iPhonePro: {\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 21,\n    clayBezelRight: 21,\n    clayBezelTop: 21,\n    clayBezelBottom: 21,\n    clayBezelRadius: 38 + 21\n  },\n  iPhone8: {\n    screenRadius: 0,\n    clayBezelLeft: 24,\n    clayBezelRight: 24,\n    clayBezelTop: 96,\n    clayBezelBottom: 96,\n    clayBezelRadius: 38 * 1.5\n  },\n  iPadPro: {\n    screenRadius: 25,\n    clayBezelLeft: 38,\n    clayBezelRight: 38,\n    clayBezelTop: 38,\n    clayBezelBottom: 38,\n    clayBezelRadius: 25 + 38\n  },\n  desktop: {\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 20,\n    clayBezelBottom: 20,\n    clayBezelRadius: 20\n  }\n}))();\nvar devicePresets = /* @__PURE__ */ (() => [\n  {\n    id: \"iphone-12\",\n    title: \"iPhone 12\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 500,\n      height: 974,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-mini\",\n    title: \"iPhone 12 Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 450,\n      height: 890,\n      screenOffsetTop: 55,\n      screenOffsetLeft: 45\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M142 18c0 19 14 47 43 48h349c31 0 44-29 44-48 0-12 4-18 14-18h18c38 0 52 4 66 11 14 8 25 19 33 33v1c7 14 11 28 11 65v1340c0 38-4 52-11 66-8 14-19 25-33 33h-1c-14 7-28 11-65 11H110c-38 0-52-4-66-11-14-8-25-19-33-33v-1c-7-13-11-27-11-64V110c0-38 4-52 11-66 8-14 19-25 33-33h1C58 4 72 0 109 0h16c11 0 17 6 17 18z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 460,\n      height: 880,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 31.5, right: 30.5, bottom: 30 }\n    }\n  },\n  {\n    id: \"iphone-12-pro\",\n    title: \"iPhone 12 Pro\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 494,\n      height: 968,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-pro-max\",\n    title: \"iPhone 12 Pro Max\",\n    screenRadius: 50,\n    // to prevent leaking pixel in the corners, see https://github.com/framer/company/issues/20429\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 428,\n    screenHeight: 926,\n    externalClay: {\n      width: 532,\n      height: 1050,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<path d=\"M102 0c6 0 7 3 7 9 0 10 7 23 24 23h164c13 0 22-12 22-23 0-6 1-9 7-9h34c24 0 32 2 41 7s15 11 20 20 7 17 7 41v790c0 24-2 32-7 41s-11 15-20 20-17 7-41 7H68c-24 0-32-2-41-7s-15-11-20-20-7-17-7-41V68c0-24 2-32 7-41S18 12 27 7s17-7 41-7h34z\" fill=\"#000\" fill-rule=\"evenodd\"/>',\n    realisticImage: {\n      width: 528,\n      height: 1026,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 28.5, right: 28, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-11\",\n    title: \"iPhone 11\",\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 35.5,\n    clayBezelRight: 35.5,\n    clayBezelTop: 35.5,\n    clayBezelBottom: 35.5,\n    clayBezelRadius: 77,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M85.5 0C89.1 0 92 3 92 6.5c.3 6 1.5 10 3.4 13.5 2.2 4.1 5.5 7.4 9.6 9.6 4.2 2.2 8.9 3.4 17 3.4h170c8.1 0 12.8-1.2 17-3.4 4.1-2.2 7.4-5.5 9.6-9.6A31 31 0 00322 6.5c0-3.6 3-6.5 6.5-6.5h32.3c18.5 0 25.2 2 32 5.5 6.7 3.7 12 9 15.7 15.7 3.6 6.8 5.5 13.5 5.5 32v789.6c0 18.5-2 25.2-5.5 32-3.7 6.7-9 12-15.7 15.7-6.8 3.6-13.5 5.5-32 5.5H53.2c-18.5 0-25.2-2-32-5.5-6.7-3.7-12-9-15.7-15.7C2 868 0 861.3 0 842.8V53.2c0-18.5 2-25.2 5.5-32 3.7-6.7 9-12 15.7-15.7C28 2 34.7 0 53.2 0h32.3z\" fill=\"#000\" fill-rule=\"nonzero\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#202120\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F9F6EF\" },\n        { id: \"purple\", title: \"Purple\", colorValue: \"#D1CDDB\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#ADE0CD\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#B90D2E\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FFE680\" }\n      ],\n      handOffset: { left: 14.5, right: 14.5, bottom: 14.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro\",\n    title: \"iPhone 11 Pro\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 375,\n    screenHeight: 812,\n    externalClay: {\n      width: 485,\n      height: 942,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M292 8.668V9c0 9.266-7.07 21-23.332 21h-162C90.402 30 83.332 18.266 83.332 9v-.332c0-4.285 0-8.668-7.664-8.668H43.332C16.312 0 0 16.313 0 43.332v725.336C0 795.688 16.313 812 43.332 812h288.336c27.02 0 43.332-16.313 43.332-43.332V43.332C375 16.312 358.687 0 331.668 0h-32C292 0 292 4.383 292 8.668zm0 0\"/>',\n    realisticImage: {\n      width: 475,\n      height: 912,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 24.5, right: 24.5, bottom: 23.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro-max\",\n    title: \"iPhone 11 Pro Max\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M96 0c3.313 0 5.91 2.688 6 6 .18 6.645 1.191 10.148 2.938 13.41 1.917 3.586 4.73 6.402 8.316 8.317 3.586 1.918 7.441 2.941 15.445 2.941h156.602c8.004 0 11.86-1.023 15.445-2.941 3.586-1.915 6.399-4.73 8.317-8.317 1.746-3.265 2.746-6.758 2.937-13.41.094-3.313 2.688-6 6-6h46.004c17.387 0 23.687 1.809 30.043 5.21 6.355 3.4 11.344 8.388 14.742 14.743C412.191 26.31 414 32.61 414 49.996v796.008c0 17.387-1.809 23.687-5.21 30.043-3.4 6.355-8.388 11.344-14.743 14.742-6.356 3.402-12.656 5.211-30.043 5.211H49.996c-17.387 0-23.687-1.809-30.043-5.21-6.355-3.4-11.344-8.388-14.742-14.743C1.809 869.69 0 863.39 0 846.004V49.996C0 32.61 1.809 26.31 5.21 19.953c3.4-6.355 8.388-11.344 14.743-14.742C26.31 1.809 32.61 0 49.996 0zm0 0\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 23.5, right: 24.5, bottom: 24 }\n    }\n  },\n  {\n    id: \"iphone-8\",\n    title: \"iPhone 8\",\n    ...presetsBase.iPhone8,\n    screenWidth: 375,\n    screenHeight: 667,\n    externalClay: {\n      width: 491,\n      height: 971,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 475,\n      height: 927,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 18.5 }\n    }\n  },\n  {\n    id: \"iphone-8-plus\",\n    title: \"iPhone 8 Plus\",\n    ...presetsBase.iPhone8,\n    screenWidth: 414,\n    screenHeight: 736,\n    externalClay: {\n      width: 530,\n      height: 1064,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 164\n    },\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 21, right: 20.5, bottom: 19 }\n    }\n  },\n  {\n    id: \"iphone-se\",\n    title: \"iPhone SE\",\n    screenWidth: 320,\n    screenHeight: 568,\n    screenRadius: 0,\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 112,\n    clayBezelBottom: 112,\n    clayBezelRadius: 38 * 1.5,\n    externalClay: {\n      width: 436,\n      height: 872,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 420,\n      height: 828,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#F7CFCA\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 26.5 }\n    }\n  },\n  {\n    id: \"samsung-galaxy-s7\",\n    title: \"Samsung Galaxy S7\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 640,\n    externalClay: {\n      width: 454,\n      height: 880,\n      screenOffsetTop: 120,\n      screenOffsetLeft: 47\n    },\n    realisticImage: {\n      width: 440,\n      height: 860,\n      screenOffsetLeft: 40,\n      screenOffsetTop: 110,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 26, right: 25.5, bottom: 32 }\n    }\n  },\n  // deprecated\n  {\n    id: \"samsung-note-10\",\n    title: \"Samsung Note 10\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 10,\n    clayBezelLeft: 7,\n    clayBezelRight: 7,\n    clayBezelTop: 15,\n    clayBezelBottom: 15,\n    clayBezelRadius: 15\n  },\n  {\n    id: \"pixel-5\",\n    title: \"Google Pixel 5\",\n    screenRadius: 31,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 460,\n      height: 900,\n      screenOffsetTop: 60,\n      screenOffsetLeft: 50\n    },\n    realisticImage: {\n      width: 920 / 2,\n      height: 1760 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2,\n      availableColors: [\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#2E2C36\" },\n        { id: \"sorta-sage\", title: \"Sorta Sage\", colorValue: \"#B7C9C0\" }\n      ],\n      handOffset: {\n        left: 31.5,\n        right: 31,\n        bottom: 31\n        /* 1t */\n      }\n    }\n  },\n  {\n    id: \"pixel-4\",\n    title: \"Google Pixel 4\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 34,\n    clayBezelLeft: 10,\n    clayBezelRight: 10,\n    clayBezelTop: 50,\n    clayBezelBottom: 25,\n    clayBezelRadius: 50,\n    externalClay: {\n      width: 460,\n      height: 938,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 89\n    },\n    realisticImage: {\n      width: 460,\n      height: 920,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 80,\n      availableColors: [\n        { id: \"clearly-white\", title: \"Clearly White\", colorValue: \"#EAEDF2\" },\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#1A1A1A\" },\n        { id: \"oh-so-orange\", title: \"Oh So Orange\", colorValue: \"#FF7A68\" }\n      ],\n      handOffset: {\n        left: 35.5,\n        right: 35.5,\n        bottom: 57\n        /* 1t */\n      }\n    }\n  },\n  // Desktop ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"macbook-air\",\n    title: \"MacBook Air\",\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1890,\n      height: 1125,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 98\n    },\n    realisticImage: {\n      width: 3848 / 2,\n      height: 2240 / 2,\n      screenOffsetLeft: 484 / 2,\n      screenOffsetTop: 196 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-13\",\n    title: `MacBook Pro 13\"`,\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1914,\n      height: 1169,\n      screenOffsetLeft: 236,\n      screenOffsetTop: 109\n    },\n    realisticImage: {\n      width: 3916 / 2,\n      height: 2330 / 2,\n      screenOffsetLeft: 518 / 2,\n      screenOffsetTop: 218 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-16\",\n    title: `MacBook Pro 16\"`,\n    screenWidth: 1536,\n    screenHeight: 960,\n    disableRotation: true,\n    externalClay: {\n      width: 1984,\n      height: 1179,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 78\n    },\n    realisticImage: {\n      width: 4032 / 2,\n      height: 2348 / 2,\n      screenOffsetLeft: 480 / 2,\n      screenOffsetTop: 148 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"imac-21-5\",\n    title: `iMac 21.5\"`,\n    screenWidth: 2048,\n    screenHeight: 1152,\n    disableRotation: true,\n    externalClay: {\n      width: 2288,\n      height: 1892,\n      screenOffsetLeft: 120,\n      screenOffsetTop: 120\n    },\n    realisticImage: {\n      width: 4562 / 2,\n      height: 3796 / 2,\n      screenOffsetLeft: 232 / 2,\n      screenOffsetTop: 244 / 2\n    }\n  },\n  {\n    id: \"imac-27\",\n    title: `iMac 27\"`,\n    screenWidth: 2560,\n    screenHeight: 1440,\n    disableRotation: true,\n    externalClay: {\n      width: 2848,\n      height: 2351,\n      screenOffsetLeft: 144,\n      screenOffsetTop: 151\n    },\n    realisticImage: {\n      width: 5676 / 2,\n      height: 4720 / 2,\n      screenOffsetLeft: 278 / 2,\n      screenOffsetTop: 292 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pro\", title: \"Pro\", colorValue: \"#5F5E63\" }\n      ]\n    }\n  },\n  {\n    id: \"pro-display-xdr\",\n    title: `Pro Display XDR`,\n    screenWidth: 3008,\n    screenHeight: 1692,\n    disableRotation: true,\n    externalClay: {\n      width: 3148,\n      height: 2325,\n      screenOffsetLeft: 70,\n      screenOffsetTop: 60\n    },\n    realisticImage: {\n      width: 6276 / 2,\n      height: 4695 / 2,\n      screenOffsetLeft: 130 / 2,\n      screenOffsetTop: 130 / 2\n    }\n  },\n  {\n    id: \"dell-xps\",\n    title: `Dell XPS`,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    disableRotation: true,\n    externalClay: {\n      width: 2624,\n      height: 1381,\n      screenOffsetLeft: 352,\n      screenOffsetTop: 57\n    },\n    realisticImage: {\n      width: 5412 / 2,\n      height: 2746 / 2,\n      screenOffsetLeft: 786 / 2,\n      screenOffsetTop: 108 / 2\n    }\n  },\n  {\n    id: \"surface-book\",\n    title: `Microsoft Surface Book`,\n    screenWidth: 1500,\n    screenHeight: 1e3,\n    disableRotation: true,\n    externalClay: {\n      width: 2089,\n      height: 1234,\n      screenOffsetLeft: 296,\n      screenOffsetTop: 93\n    },\n    realisticImage: {\n      width: 4200 / 2,\n      height: 2508 / 2,\n      screenOffsetLeft: 600 / 2,\n      screenOffsetTop: 210 / 2\n    }\n  },\n  // Tablets ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"ipad\",\n    title: \"iPad\",\n    screenRadius: 0,\n    screenWidth: 810,\n    screenHeight: 1080,\n    clayBezelLeft: 30,\n    clayBezelRight: 30,\n    clayBezelTop: 95,\n    clayBezelBottom: 95,\n    clayBezelRadius: 0,\n    externalClay: {\n      width: 966,\n      height: 1378,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 149\n    },\n    realisticImage: {\n      width: 1920 / 2,\n      height: 2720 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 140,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-mini\",\n    title: \"iPad Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 768,\n    screenHeight: 1024,\n    externalClay: {\n      width: 924,\n      height: 1384,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 180\n    },\n    realisticImage: {\n      width: 1856 / 2,\n      height: 2728 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 340 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-air\",\n    title: \"iPad Air\",\n    screenRadius: 18,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 820,\n    screenHeight: 1180,\n    externalClay: {\n      width: 994,\n      height: 1374,\n      screenOffsetLeft: 87,\n      screenOffsetTop: 97\n    },\n    realisticImage: {\n      width: 1960 / 2,\n      height: 2680 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 160 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#ECCBC4\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#CBDAE6\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-11\",\n    title: \"iPad Pro 11\\u2033\",\n    screenRadius: 17,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 834,\n    screenHeight: 1194,\n    externalClay: {\n      width: 990,\n      height: 1370,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 1968 / 2,\n      height: 2688 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-12-9\",\n    title: \"iPad Pro 12.9\\u2033\",\n    ...presetsBase.iPadPro,\n    screenRadius: 17,\n    screenWidth: 1024,\n    screenHeight: 1366,\n    externalClay: {\n      width: 1180,\n      height: 1542,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 2348 / 2,\n      height: 3032 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"surface-3\",\n    title: \"Microsoft Surface 3\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 960,\n    screenHeight: 640,\n    externalClay: {\n      width: 1184,\n      height: 864,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 2280 / 2,\n      height: 1580 / 2,\n      screenOffsetLeft: 180 / 2,\n      screenOffsetTop: 150 / 2\n    }\n  },\n  {\n    id: \"surface-pro-4\",\n    title: \"Microsoft Surface Pro 4\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 1368,\n    screenHeight: 912,\n    externalClay: {\n      width: 1592,\n      height: 1136,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 3176 / 2,\n      height: 2224 / 2,\n      screenOffsetLeft: 220 / 2,\n      screenOffsetTop: 200 / 2\n    }\n  },\n  // Watches ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"apple-watch-44\",\n    title: `Apple Watch 44mm`,\n    screenRadius: 33,\n    screenWidth: 184,\n    screenHeight: 224,\n    disableRotation: true,\n    externalClay: {\n      width: 298,\n      height: 502,\n      screenOffsetLeft: 57,\n      screenOffsetTop: 129\n    },\n    realisticImage: {\n      width: 548 / 2,\n      height: 908 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  {\n    id: \"apple-watch-40\",\n    title: `Apple Watch 40mm`,\n    screenRadius: 27,\n    screenWidth: 162,\n    screenHeight: 197,\n    disableRotation: true,\n    externalClay: {\n      width: 280,\n      height: 463,\n      screenOffsetLeft: 59,\n      screenOffsetTop: 124\n    },\n    realisticImage: {\n      width: 504 / 2,\n      height: 854 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  // TVs ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"tv-full-hd\",\n    title: `Full HD`,\n    screenRadius: 0,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    externalClay: {\n      width: 1968,\n      height: 1168,\n      screenOffsetLeft: 24,\n      screenOffsetTop: 12\n    },\n    realisticImage: {\n      width: 4040 / 2,\n      height: 2360 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2\n    }\n  },\n  {\n    id: \"tv-4k\",\n    title: `4K`,\n    screenRadius: 0,\n    screenWidth: 3840,\n    screenHeight: 2160,\n    externalClay: {\n      width: 3908,\n      height: 2308,\n      screenOffsetLeft: 34,\n      screenOffsetTop: 24\n    },\n    realisticImage: {\n      width: 7960 / 2,\n      height: 4600 / 2,\n      screenOffsetLeft: 140 / 2,\n      screenOffsetTop: 140 / 2\n    }\n  },\n  // Old devices ------------------------------------------------------------------------------------------------------------------------\n  // deprecated\n  {\n    id: \"720p\",\n    title: \"720p\",\n    ...presetsBase.desktop,\n    screenWidth: 720,\n    screenHeight: 1280\n  },\n  // deprecated\n  {\n    id: \"900p\",\n    title: \"900p\",\n    ...presetsBase.desktop,\n    screenWidth: 900,\n    screenHeight: 1440\n  },\n  // deprecated\n  {\n    id: \"1080p\",\n    title: \"1080p\",\n    ...presetsBase.desktop,\n    screenWidth: 1080,\n    screenHeight: 1920\n  },\n  // deprecated\n  {\n    id: \"1440p\",\n    title: \"1440p\",\n    ...presetsBase.desktop,\n    screenWidth: 1440,\n    screenHeight: 2560\n  },\n  // deprecated\n  {\n    id: \"4k\",\n    title: \"4K\",\n    ...presetsBase.desktop,\n    screenWidth: 2160,\n    screenHeight: 3840\n  }\n])();\nvar deviceCodeComponentPresetIds = [\n  \"iphone-12\",\n  \"iphone-12-mini\",\n  \"iphone-12-pro\",\n  \"iphone-11\",\n  \"iphone-11-pro\",\n  \"iphone-11-pro-max\",\n  \"iphone-8\",\n  \"iphone-8-plus\",\n  \"iphone-se\",\n  \"samsung-note-10\",\n  \"pixel-4\",\n  \"ipad\",\n  \"ipad-pro-11\",\n  \"ipad-pro-12-9\",\n  \"720p\",\n  \"900p\",\n  \"1080p\",\n  \"1440p\",\n  \"4k\"\n];\nvar devicePresetsMap = /* @__PURE__ */ devicePresets.reduce(\n  (map2, preset) => {\n    map2[preset.id] = preset;\n    return map2;\n  },\n  {}\n);\nfunction getDevicePreset(presetId) {\n  return devicePresetsMap[presetId] ?? devicePresetsMap[defaultPresetId];\n}\n\n// ../../library/src/components/Device/DeviceCodeComponentProps.ts\nvar defaultDeviceProps = {\n  preset: defaultPresetId,\n  customWidth: 375,\n  customHeight: 800,\n  customBezel: 20,\n  isMixedBezel: false,\n  bezelTop: 20,\n  bezelRight: 20,\n  bezelBottom: 20,\n  bezelLeft: 20,\n  customBezelRadius: 20,\n  customScreenRadius: 0,\n  orientation: \"portrait\",\n  skin: \"clay\",\n  theme: \"dark\",\n  shadow: true,\n  backgroundColor: void 0\n};\nfunction convertPropsToDeviceOptions(props, { forceOldClay = false } = {}) {\n  var _a;\n  if (props.preset === \"no-device\") {\n    return;\n  }\n  let preset;\n  if (props.preset === \"custom\") {\n    preset = {\n      screenWidth: props.customWidth,\n      screenHeight: props.customHeight,\n      screenRadius: props.customScreenRadius,\n      clayBezelTop: props.isMixedBezel ? props.bezelTop : props.customBezel,\n      clayBezelRight: props.isMixedBezel ? props.bezelRight : props.customBezel,\n      clayBezelBottom: props.isMixedBezel ? props.bezelBottom : props.customBezel,\n      clayBezelLeft: props.isMixedBezel ? props.bezelLeft : props.customBezel,\n      clayBezelRadius: props.customBezelRadius\n    };\n  } else {\n    preset = getDevicePreset(props.preset);\n  }\n  const colors = getColorsFromTheme(props.theme);\n  const shadowColor = colors.shadowColor;\n  const shadow = props.shadow ? `0 10px 30px ${shadowColor}` : void 0;\n  const rotate = !preset.disableRotation && (props.orientation === \"landscape\" || props.rotated);\n  let deviceWidth;\n  let deviceHeight;\n  let screenOffsetTop;\n  let screenOffsetLeft;\n  let colorId = props.colorId;\n  let appearance;\n  if ((props.skin === void 0 || props.skin === \"realistic\") && preset.realisticImage && props.preset) {\n    deviceWidth = preset.realisticImage.width;\n    deviceHeight = preset.realisticImage.height;\n    screenOffsetTop = preset.realisticImage.screenOffsetTop;\n    screenOffsetLeft = preset.realisticImage.screenOffsetLeft;\n    colorId = colorId ?? colorIdForTheme(props.theme, preset.realisticImage.availableColors);\n    appearance = {\n      type: \"realistic\",\n      imageUrl: colorId ? `https://preview.framercdn.com/images/devices/${props.preset}-${colorId}.png` : `https://preview.framercdn.com/images/devices/${props.preset}.png`,\n      imageWidth: preset.realisticImage.width,\n      imageHeight: preset.realisticImage.height,\n      rotateImage: rotate\n    };\n  } else {\n    deviceWidth = preset.screenWidth + (preset.clayBezelLeft ?? 0) + (preset.clayBezelRight ?? 0);\n    deviceHeight = preset.screenHeight + (preset.clayBezelTop ?? 0) + (preset.clayBezelBottom ?? 0);\n    screenOffsetTop = preset.clayBezelTop ?? 0;\n    screenOffsetLeft = preset.clayBezelLeft ?? 0;\n    if (preset.externalClay && !forceOldClay) {\n      deviceWidth = preset.externalClay.width;\n      deviceHeight = preset.externalClay.height;\n      screenOffsetTop = preset.externalClay.screenOffsetTop;\n      screenOffsetLeft = preset.externalClay.screenOffsetLeft;\n      appearance = {\n        type: \"external-clay\",\n        imageUrl: `https://preview.framercdn.com/images/devices/${props.preset}-${props.theme}.svg`,\n        imageWidth: preset.externalClay.width,\n        imageHeight: preset.externalClay.height,\n        rotateImage: rotate\n      };\n    } else {\n      appearance = {\n        type: \"clay\",\n        bezelRadius: preset.clayBezelRadius !== void 0 ? `${preset.clayBezelRadius}px` : void 0,\n        bezelColor: colors.bezelColor,\n        bezelShadeColor: colors.bezelShadeColor\n      };\n    }\n  }\n  let screenWidth = preset.screenWidth;\n  let screenHeight = preset.screenHeight;\n  if (rotate) {\n    const screenOffsetRight = deviceWidth - screenWidth - screenOffsetLeft;\n    [deviceWidth, deviceHeight] = [deviceHeight, deviceWidth];\n    [screenWidth, screenHeight] = [screenHeight, screenWidth];\n    [screenOffsetTop, screenOffsetLeft] = [screenOffsetRight, screenOffsetTop];\n  }\n  const handOffset = (_a = preset.realisticImage) == null ? void 0 : _a.handOffset;\n  return {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius: preset.screenRadius !== void 0 ? `${preset.screenRadius}px` : void 0,\n    screenMaskImage: appearance.type !== \"realistic\" && preset.screenMask ? makeScreenMaskImage({\n      mask: preset.screenMask,\n      // width/height of the mask = screen width/height pre-rotation\n      width: preset.screenWidth,\n      height: preset.screenHeight,\n      rotate\n    }) : void 0,\n    screenColor: colors.screenColor,\n    shadow,\n    hand: props.hand !== void 0 && supportsHand(props) ? {\n      imageUrl: `https://preview.framercdn.com/images/hands/${props.hand}.png`,\n      offsetLeft: handOffset == null ? void 0 : handOffset.left,\n      offsetRight: handOffset == null ? void 0 : handOffset.right,\n      offsetBottom: handOffset == null ? void 0 : handOffset.bottom\n    } : void 0,\n    background: props.backgroundColor,\n    theme: props.theme,\n    colorId\n  };\n}\nfunction makeScreenMaskImage({\n  mask,\n  width,\n  height,\n  rotate = false\n}) {\n  const transform2 = rotate ? (\n    // Rotate 90 degrees counter-clockwise around (0,0), then move the\n    // result down into the viewport (rightmost transform is applied first).\n    `transform=\"translate(0 ${width}) rotate(-90)\"`\n  ) : \"\";\n  const encoded = encodeURIComponent(\n    `<svg xmlns=\"http://www.w3.org/2000/svg\" viewport=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\"><g x=\"0\" y=\"0\" ${transform2}>${mask}</g></svg>`\n  );\n  return `url(\"data:image/svg+xml;utf8,${encoded}\")`;\n}\nvar lightColors = /* @__PURE__ */ new Set([\"white\", \"silver\", \"clearly-white\", \"sorta-sage\"]);\nvar darkColors = /* @__PURE__ */ new Set([\"black\", \"space-grey\", \"graphite\", \"just-black\", \"pro\"]);\nfunction colorIdForTheme(theme, availableColors) {\n  var _a;\n  if (!availableColors)\n    return;\n  const colors = theme === \"light\" ? lightColors : darkColors;\n  for (const color2 of availableColors) {\n    if (colors.has(color2.id)) {\n      return color2.id;\n    }\n  }\n  return (_a = availableColors[0]) == null ? void 0 : _a.id;\n}\nfunction supportsHand({ preset: presetId, skin, orientation = \"portrait\" }) {\n  var _a;\n  if (!presetId || presetId === \"custom\" || presetId === \"no-device\" || orientation === \"landscape\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return skin !== \"clay\" && ((_a = preset.realisticImage) == null ? void 0 : _a.handOffset) !== void 0;\n}\n\n// ../../library/src/components/Device/usePrototypingMetaTags.ts\nimport React14 from \"react\";\nfunction applyMetaTag(name, props) {\n  var _a;\n  let tag = document.querySelector(`meta[name=\"${name}\"]`);\n  if (!tag) {\n    tag = document.createElement(\"meta\");\n    (_a = document.getElementsByTagName(\"head\")[0]) == null ? void 0 : _a.appendChild(tag);\n    tag.setAttribute(\"name\", name);\n  }\n  for (const [k, v] of Object.entries(props)) {\n    tag.setAttribute(k, v);\n  }\n}\nfunction usePrototypingMetaTags() {\n  React14.useEffect(() => {\n    applyMetaTag(\"mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-status-bar-style\", {\n      content: \"black-translucent\"\n    });\n    applyMetaTag(\"viewport\", {\n      content: \"viewport-fit=cover, user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1\"\n    });\n  }, []);\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nfunction DeviceCodeComponentInner({ children, ...props }) {\n  usePrototypingMetaTags();\n  const deviceOptions = convertPropsToDeviceOptions(props, { forceOldClay: true });\n  React15.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  if (!deviceOptions) {\n    return /* @__PURE__ */ jsx9(\n      \"div\",\n      {\n        \"data-framer-component-type\": \"DeviceComponent\",\n        className: \"no-device\",\n        style: { width: \"100%\", height: \"100%\" },\n        children: /* @__PURE__ */ jsx9(ProvideParentSize, { parentSize: 1 /* Disabled */, children })\n      }\n    );\n  }\n  const child = Array.isArray(children) ? children[0] : children;\n  const resizedChild = child && React15.isValidElement(child) ? React15.cloneElement(child, {\n    width: deviceOptions.screenWidth,\n    height: deviceOptions.screenHeight\n  }) : null;\n  return /* @__PURE__ */ jsx9(Device, { scaleTo: \"dynamic\", deviceOptions, children: resizedChild });\n}\nvar DeviceCodeComponent = /* @__PURE__ */ (() => {\n  const { componentWidth: defaultWidth2, componentHeight: defaultHeight2 } = getComponentSize(\n    convertPropsToDeviceOptions(defaultDeviceProps, { forceOldClay: true })\n  );\n  DeviceCodeComponentInner.defaultProps = {\n    width: defaultWidth2,\n    height: defaultHeight2,\n    ...defaultDeviceProps\n  };\n  const deviceCodeComponentPresets = devicePresets.filter((preset) => deviceCodeComponentPresetIds.includes(preset.id));\n  addPropertyControls(DeviceCodeComponentInner, {\n    children: {\n      title: \"Content\",\n      type: \"componentinstance\" /* ComponentInstance */\n    },\n    preset: {\n      type: \"enum\" /* Enum */,\n      options: [\"no-device\", \"custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.id)),\n      optionTitles: [\"No Device\", \"Custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.title))\n    },\n    customWidth: {\n      title: \"Width\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customHeight: {\n      title: \"Height\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezel: {\n      title: \"Bezel\",\n      type: \"fusednumber\" /* FusedNumber */,\n      min: 0,\n      toggleKey: \"isMixedBezel\",\n      toggleTitles: [\"a\", \"b\"],\n      valueKeys: [\"bezelTop\", \"bezelRight\", \"bezelBottom\", \"bezelLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezelRadius: {\n      title: \"Bezel Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customScreenRadius: {\n      title: \"Screen Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    orientation: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"portrait\", \"landscape\"],\n      optionTitles: [\"Portrait\", \"Landscape\"],\n      optionIcons: [\"orientation-portrait\", \"orientation-landscape\"],\n      hidden: (props) => !!props.preset && !supportsOrientation(props.preset)\n    },\n    skin: {\n      title: \"Device\",\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"realistic\", \"clay\"],\n      optionTitles: [\"Realistic\", \"Clay\"],\n      defaultValue: \"clay\",\n      hidden: (props) => !!props.preset && !supportsRealisticSkin(props.preset)\n    },\n    theme: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"light\", \"dark\"],\n      optionTitles: [\"Light\", \"Dark\"],\n      hidden: (props) => !!props.preset && !supportsThemes(props.preset, props.skin)\n    },\n    shadow: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      hidden: ({ skin, preset }) => preset !== \"custom\" && skin === \"realistic\" || preset === \"no-device\"\n    },\n    hand: {\n      type: \"enum\" /* Enum */,\n      options: [void 0, \"hand-1\", \"hand-2\"],\n      optionTitles: [\"None\", \"Model 1\", \"Model 2\"],\n      hidden: (props) => !supportsHand(props)\n    },\n    backgroundColor: {\n      type: \"color\" /* Color */,\n      title: \"Background\",\n      optional: true,\n      hidden: ({ preset }) => preset === \"no-device\"\n    }\n  });\n  return DeviceCodeComponentInner;\n})();\nfunction supportsOrientation(presetId) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  return !preset.disableRotation;\n}\nfunction supportsRealisticSkin(presetId) {\n  if (presetId === \"custom\" || presetId === \"no-device\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return !!preset.realisticImage;\n}\nfunction supportsThemes(presetId, skin) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\" || skin !== \"realistic\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  const realisticImage = preset.realisticImage;\n  if (realisticImage === void 0) {\n    return true;\n  }\n  if (colorIdForTheme(\"dark\", realisticImage.availableColors) !== void 0) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport React22 from \"react\";\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport React21, { forwardRef, useContext as useContext5, useRef as useRef8 } from \"react\";\n\n// ../../library/src/modules/useIsStaticRenderer.ts\nimport { useState } from \"react\";\nfunction isStaticRenderer() {\n  const currentTarget = RenderTarget.current();\n  return currentTarget === RenderTarget.canvas || currentTarget === RenderTarget.export;\n}\nfunction useIsStaticRenderer() {\n  const [isStatic] = useState(() => isStaticRenderer());\n  return isStatic;\n}\n\n// ../../library/src/utils/asRecord.ts\nvar asRecord = (object) => object;\n\n// ../../library/src/utils/isPropValid.ts\nfunction memoize(fn) {\n  const cache2 = Object.create(Object.prototype);\n  return (arg) => {\n    if (cache2[arg] === void 0)\n      cache2[arg] = fn(arg);\n    return cache2[arg];\n  };\n}\nvar reactPropsRegex = /^(?:children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|[dkrxyz]|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y1|y2|yChannelSelector|zoomAndPan|for|class|autofocus|(?:[Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*)$/u;\nvar isPropValid = /* @__PURE__ */ memoize(\n  (prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91\n  /* Z+1 */\n);\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport React16 from \"react\";\n\n// ../../library/src/utils/runtimeInjection.ts\nvar mockWithWarning = (message) => {\n  return () => {\n    warnOnce(message);\n  };\n};\nvar mockWithoutWarning = () => {\n  return () => {\n  };\n};\nvar implementation = {\n  // We need a default implementation for useImageSource and useImageElement as it is used for rendering image backgrounds which would break otherwise.\n  // The default value is used for HTML export and when using the library without Framer.\n  useImageSource(image) {\n    return image.src ?? \"\";\n  },\n  useImageElement(image, rect, nodeId) {\n    const element = new Image();\n    element.src = runtime.useImageSource(image, rect, nodeId);\n    if (image.srcSet)\n      element.srcset = image.srcSet;\n    return element;\n  },\n  canRenderOptimizedCanvasImage() {\n    return false;\n  }\n};\nvar isRuntimeInjected = false;\nvar runtimeProxy = {\n  get(target, key7, reciever) {\n    if (Reflect.has(target, key7)) {\n      return Reflect.get(target, key7, reciever);\n    }\n    if ([\"getLogger\"].includes(String(key7))) {\n      return mockWithoutWarning();\n    }\n    if (isRuntimeInjected) {\n      return mockWithWarning(`${String(key7)} is not available in this version of Framer.`);\n    }\n    return mockWithWarning(`${String(key7)} is only available inside of Framer. https://www.framer.com/`);\n  }\n};\nvar runtime = /* @__PURE__ */ new Proxy(implementation, runtimeProxy);\nfunction _injectRuntime(injectedRuntime) {\n  Object.assign(implementation, injectedRuntime);\n  isRuntimeInjected = true;\n}\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\nvar wrapperStyle = {\n  position: \"absolute\",\n  borderRadius: \"inherit\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nvar placeholderStyle = {\n  backgroundRepeat: \"repeat\",\n  backgroundPosition: \"left top\",\n  backgroundSize: \"126px auto\",\n  backgroundImage: \"url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI2IiBoZWlnaHQ9IjEyNiI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0xMjYgMHYyMS41ODRMMjEuNTg0IDEyNkgwdi0xNy41ODVMMTA4LjQxNSAwSDEyNlptMCAxMDguNDE0VjEyNmgtMTcuNTg2TDEyNiAxMDguNDE0Wm0wLTg0djM5LjE3MUw2My41ODUgMTI2SDI0LjQxNEwxMjYgMjQuNDE0Wm0wIDQydjM5LjE3TDEwNS41ODQgMTI2aC0zOS4xN0wxMjYgNjYuNDE0Wk0xMDUuNTg2IDAgMCAxMDUuNTg2VjY2LjQxNUw2Ni40MTUgMGgzOS4xNzFabS00MiAwTDAgNjMuNTg2VjI0LjQxNUwyNC40MTUgMGgzOS4xNzFabS00MiAwTDAgMjEuNTg2VjBoMjEuNTg2WiIvPjwvZGVmcz48dXNlIHhsaW5rOmhyZWY9IiNhIiBmaWxsPSIjODg4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)\",\n  opacity: 0.2\n};\nfunction cssObjectFit(imageFit) {\n  switch (imageFit) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"fill\";\n    default:\n      return \"cover\";\n  }\n}\nfunction cssObjectPosition(positionX, positionY) {\n  const x = positionX ?? \"center\";\n  const y = positionY ?? \"center\";\n  if (x === \"center\" && y === \"center\")\n    return \"center\";\n  return x + \" \" + y;\n}\nfunction getImageStyle(image) {\n  return {\n    display: \"block\",\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"inherit\",\n    objectPosition: cssObjectPosition(image.positionX, image.positionY),\n    objectFit: cssObjectFit(image.fit)\n  };\n}\nfunction StaticImage({ image, containerSize, nodeId, alt, draggable, syncDecoding }) {\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  const imageRef = React16.useRef(null);\n  return (\n    // eslint-disable-next-line framer-studio/require-async-decoding\n    /* @__PURE__ */ jsx10(\n      \"img\",\n      {\n        ref: imageRef,\n        decoding: syncDecoding ? \"sync\" : \"async\",\n        fetchpriority: image.fetchPriority,\n        loading: image.loading,\n        sizes: image.sizes,\n        srcSet: image.srcSet,\n        src: source,\n        alt: alt ?? image.alt ?? \"\",\n        style: imageStyle,\n        draggable\n      }\n    )\n  );\n}\nfunction CanvasImage({ image, containerSize, nodeId }) {\n  const wrapperRef = React16.useRef(null);\n  const imageElement = runtime.useImageElement(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  React16.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null)\n      return;\n    wrapper.appendChild(imageElement);\n    return () => {\n      wrapper.removeChild(imageElement);\n    };\n  }, [imageElement]);\n  Object.assign(imageElement.style, imageStyle);\n  return /* @__PURE__ */ jsx10(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction OptimizedCanvasImage({ nodeId, image, containerSize }) {\n  const wrapperRef = React16.useRef(null);\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  React16.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null)\n      return;\n    const imageStyle = getImageStyle(image);\n    runtime.renderOptimizedCanvasImage(wrapper, source, imageStyle, nodeId);\n  }, [nodeId, image, source]);\n  return /* @__PURE__ */ jsx10(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction BackgroundImageComponent({ layoutId, image, ...props }) {\n  if (layoutId) {\n    layoutId = layoutId + \"-background\";\n  }\n  const fallbackWrapperStyles = { ...wrapperStyle, ...placeholderStyle };\n  let imageNode = null;\n  if (isString(image.src)) {\n    if (image.fit === \"tile\" && image.pixelWidth && image.pixelHeight) {\n      const backgroundSize = isNumber(image.backgroundSize) ? image.backgroundSize : 1;\n      const tileSize = {\n        width: Math.round(backgroundSize * image.pixelWidth),\n        height: Math.round(backgroundSize * image.pixelHeight)\n      };\n      const imageSource = runtime.useImageSource(image, tileSize);\n      fallbackWrapperStyles.backgroundImage = `url(${imageSource})`;\n      fallbackWrapperStyles.backgroundRepeat = \"repeat\";\n      fallbackWrapperStyles.backgroundPosition = cssObjectPosition(image.positionX, image.positionY);\n      fallbackWrapperStyles.opacity = void 0;\n      fallbackWrapperStyles.border = 0;\n      fallbackWrapperStyles.backgroundSize = `${(backgroundSize * (image.pixelWidth / 2)).toFixed(2)}px auto`;\n      imageNode = null;\n    } else if (RenderTarget.current() !== RenderTarget.canvas) {\n      imageNode = /* @__PURE__ */ jsx10(StaticImage, { image, syncDecoding: RenderTarget.current() === RenderTarget.export, ...props });\n    } else if (runtime.canRenderOptimizedCanvasImage(runtime.useImageSource(image))) {\n      imageNode = /* @__PURE__ */ jsx10(OptimizedCanvasImage, { image, ...props });\n    } else {\n      imageNode = /* @__PURE__ */ jsx10(CanvasImage, { image, ...props });\n    }\n  }\n  return /* @__PURE__ */ jsx10(\n    motion.div,\n    {\n      layoutId,\n      style: imageNode ? wrapperStyle : fallbackWrapperStyles,\n      \"data-framer-background-image-wrapper\": true,\n      children: imageNode\n    }\n  );\n}\n\n// ../../library/src/render/style/BorderComponent.tsx\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nfunction collectBorderStyleForProps(props, style, collapseEqualBorders = true) {\n  const { borderWidth, borderStyle, borderColor } = props;\n  if (!borderWidth) {\n    return;\n  }\n  let borderTop;\n  let borderBottom;\n  let borderLeft;\n  let borderRight;\n  if (typeof borderWidth === \"number\") {\n    borderTop = borderBottom = borderLeft = borderRight = borderWidth;\n  } else {\n    borderTop = borderWidth.top || 0;\n    borderBottom = borderWidth.bottom || 0;\n    borderLeft = borderWidth.left || 0;\n    borderRight = borderWidth.right || 0;\n  }\n  if (borderTop === 0 && borderBottom === 0 && borderLeft === 0 && borderRight === 0) {\n    return;\n  }\n  if (collapseEqualBorders && borderTop === borderBottom && borderTop === borderLeft && borderTop === borderRight) {\n    style.border = `${borderTop}px ${borderStyle} ${borderColor}`;\n    return;\n  }\n  style.borderStyle = props.borderStyle;\n  style.borderColor = props.borderColor;\n  style.borderTopWidth = `${borderTop}px`;\n  style.borderBottomWidth = `${borderBottom}px`;\n  style.borderLeftWidth = `${borderLeft}px`;\n  style.borderRightWidth = `${borderRight}px`;\n}\nfunction Border(props) {\n  const layoutId = props.layoutId ? `${props.layoutId}-border` : void 0;\n  if (!props.borderWidth) {\n    return null;\n  }\n  const style = {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    borderRadius: \"inherit\",\n    pointerEvents: \"none\"\n  };\n  if (props.border) {\n    ;\n    style.border = props.border;\n    return /* @__PURE__ */ jsx11(motion.div, { style });\n  }\n  collectBorderStyleForProps(props, style, false);\n  return /* @__PURE__ */ jsx11(motion.div, { \"data-frame-border\": true, style, layoutId });\n}\n\n// ../../library/src/render/types/BackgroundImage.ts\nvar key = \"src\";\nvar BackgroundImage = {\n  isImageObject: function(image) {\n    if (!image || typeof image === \"string\")\n      return false;\n    return key in image;\n  }\n};\n\n// ../../library/src/render/style/backgroundImageFromProps.ts\nfunction applyForwardOverrides(background, props) {\n  const { _forwardedOverrideId, _forwardedOverrides, id } = props;\n  const forwardedOverrideId = _forwardedOverrideId ?? id;\n  const src = _forwardedOverrides && forwardedOverrideId ? _forwardedOverrides[forwardedOverrideId] : void 0;\n  if (src && typeof src === \"string\") {\n    background = { ...background, src };\n  }\n  return background;\n}\nfunction backgroundImageFromProps(props) {\n  const { background, image } = props;\n  if (image !== void 0 && background && !BackgroundImage.isImageObject(background)) {\n    return;\n  }\n  let backgroundImage = null;\n  if (isString(image)) {\n    backgroundImage = { alt: \"\", src: image };\n  } else {\n    backgroundImage = Animatable.get(background, null);\n  }\n  if (!BackgroundImage.isImageObject(backgroundImage)) {\n    return;\n  }\n  return applyForwardOverrides(backgroundImage, props);\n}\n\n// ../../library/src/render/utils/htmlElementAsMotionComponent.ts\nfunction htmlElementAsMotionComponent(asElem) {\n  return asElem && asElem !== \"search\" && asElem !== \"slot\" && asElem !== \"template\" ? motion[asElem] : motion[\"div\"];\n}\n\n// ../../library/src/utils/environment.ts\nvar import_process = __toESM(require_browser(), 1);\n\n// ../../library/src/utils/safeNavigator.ts\nvar safeNavigator = typeof navigator !== \"undefined\" ? navigator : void 0;\n\n// ../../library/src/utils/environment.ts\nvar isBrowser2 = () => typeof document === \"object\";\nvar isWebKit = () => {\n  var _a;\n  return ((_a = safeNavigator) == null ? void 0 : _a.userAgent.includes(\"AppleWebKit/\")) && !isChrome() && !isEdge();\n};\nvar webkitVersion = () => {\n  let version2 = -1;\n  const regexp = /AppleWebKit\\/([\\d.]+)/u;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar safariVersion = () => {\n  let version2 = -1;\n  const regexp = /Version\\/([\\d.]+)/u;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar isChrome = () => safeNavigator && /Chrome/u.test(safeNavigator.userAgent) && /Google Inc/u.test(safeNavigator.vendor) && !isEdge();\nvar isSafari = () => safeNavigator && /Safari/u.test(safeNavigator.userAgent) && /Apple Computer/u.test(safeNavigator.vendor);\nvar isFirefox = () => safeNavigator && /Firefox\\/\\d+\\.\\d+$/u.test(safeNavigator.userAgent);\nvar isFramerX = () => safeNavigator && /FramerX/u.test(safeNavigator.userAgent);\nvar isEdge = () => safeNavigator && /Edg\\//u.test(safeNavigator.userAgent);\nvar isAndroid = () => safeNavigator && /android/iu.test(safeNavigator.userAgent);\nvar isIOS = () => safeNavigator && /iPhone|iPod|iPad/iu.test(safeNavigator.platform);\nvar isMacOS = () => safeNavigator && /Mac/u.test(safeNavigator.platform);\nvar isWindows = () => safeNavigator && /Win/u.test(safeNavigator.platform);\nvar isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;\nvar isDesktop = () => deviceType() === \"desktop\";\nvar isPhone = () => deviceType() === \"phone\";\nvar isTablet = () => deviceType() === \"tablet\";\nvar isMobile = () => isPhone() || isTablet();\nvar isFileUrl = (url) => url.startsWith(\"file://\");\nvar isDataUrl = (url) => url.startsWith(\"data:\");\nvar isTest = () => import_process.default.env.NODE_ENV === \"test\";\nvar isRelativeUrl = (url) => !/^[a-z]{1,8}:\\/\\/.*$/i.test(url);\nvar isLocalServerUrl = (url) => /[a-z]{1,8}:\\/\\/127\\.0\\.0\\.1/i.test(url) || /[a-zA-Z]{1,8}:\\/\\/localhost/u.test(url);\nvar isLocalUrl = (url) => {\n  if (isFileUrl(url))\n    return true;\n  if (isLocalServerUrl(url))\n    return true;\n  return false;\n};\nvar isLocalAssetUrl = (url, baseUrl) => {\n  if (baseUrl === null)\n    baseUrl = safeWindow.location.href;\n  if (isDataUrl(url))\n    return false;\n  if (isLocalUrl(url))\n    return true;\n  if (isRelativeUrl(url) && isLocalUrl(baseUrl))\n    return true;\n  return false;\n};\nvar devicePixelRatio2 = () => safeWindow.devicePixelRatio;\nvar isJP2Supported = function() {\n  if (isFirefox())\n    return false;\n  return isWebKit();\n};\nvar isWebPSupported = () => isChrome();\nvar deviceType = () => {\n  if (safeNavigator && /tablet|iPad|Nexus 9/i.test(safeNavigator.userAgent))\n    return \"tablet\";\n  if (safeNavigator && /mobi/iu.test(safeNavigator.userAgent))\n    return \"phone\";\n  return \"desktop\";\n};\nvar deviceOS = () => {\n  if (isMacOS())\n    return \"macos\";\n  if (isIOS())\n    return \"ios\";\n  if (isAndroid())\n    return \"android\";\n  if (isWindows())\n    return \"windows\";\n};\nvar deviceFont = (os) => {\n  if (!os) {\n    os = deviceOS();\n  }\n  const fonts = {\n    apple: \"-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue\",\n    google: \"Roboto, Helvetica Neue\",\n    microsoft: \"Segoe UI, Helvetica Neue\"\n  };\n  if (os === \"macos\")\n    return fonts.apple;\n  if (os === \"ios\")\n    return fonts.apple;\n  if (os === \"android\")\n    return fonts.google;\n  if (os === \"windows\")\n    return fonts.microsoft;\n  return fonts.apple;\n};\nvar environment = {\n  isWebKit,\n  webkitVersion,\n  isChrome,\n  isSafari,\n  isFirefox,\n  isFramerX,\n  isEdge,\n  isAndroid,\n  isIOS,\n  isMacOS,\n  isWindows,\n  isTouch,\n  isDesktop,\n  isPhone,\n  isTablet,\n  isMobile,\n  isFileUrl,\n  isDataUrl,\n  isRelativeUrl,\n  isLocalServerUrl,\n  isLocalUrl,\n  isLocalAssetUrl,\n  devicePixelRatio: devicePixelRatio2,\n  isJP2Supported,\n  isWebPSupported,\n  deviceType,\n  deviceOS,\n  deviceFont,\n  safariVersion\n};\n\n// ../../library/src/render/utils/layoutHintDataPropsForCenter.ts\nvar isChrome2 = /* @__PURE__ */ isChrome();\nfunction collectLayoutHintDataProps(props, center) {\n  props[\"data-framer-layout-hint-center-x\"] = center === true || center === \"x\" ? true : void 0;\n  props[\"data-framer-layout-hint-center-y\"] = center === true || center === \"y\" ? true : void 0;\n}\nfunction layoutHintDataPropsForCenter(center) {\n  const props = {};\n  if (!center || !isChrome2 || RenderTarget.current() !== RenderTarget.canvas) {\n    return props;\n  }\n  collectLayoutHintDataProps(props, center);\n  return props;\n}\n\n// ../../library/src/render/utils/nodeIdFromString.ts\nfunction nodeIdFromString(str) {\n  return str.replace(/^id_/u, \"\").replace(/\\\\/gu, \"\");\n}\n\n// ../../library/src/render/utils/performanceDebugging.ts\nfunction countNodeRender() {\n  if (true)\n    return;\n  const perf = asRecord(safeWindow)[\"perf\"];\n  if (!perf)\n    return;\n  perf.nodeRender();\n}\n\n// ../../library/src/render/utils/processOverrideForwarding.ts\nimport React17 from \"react\";\nfunction processOverrideForwarding(props, children) {\n  if (!children) {\n    children = props.children;\n    if (!children)\n      return { props, children };\n  }\n  const _forwardedOverrides = props._forwardedOverrides;\n  if (!_forwardedOverrides)\n    return { props, children };\n  children = React17.Children.map(children, (child) => {\n    if (!React17.isValidElement(child))\n      return child;\n    return React17.cloneElement(child, { _forwardedOverrides });\n  });\n  return { props, children };\n}\n\n// ../../library/src/render/utils/transformTemplate.ts\nfunction transformTemplate(center) {\n  return (_, generated) => {\n    if (center === true) {\n      return `translate(-50%, -50%) ${generated}`;\n    } else {\n      if (center === \"x\") {\n        return `translateX(-50%) ${generated}`;\n      } else if (center === \"y\") {\n        return `translateY(-50%) ${generated}`;\n      }\n    }\n    return generated || \"none\";\n  };\n}\n\n// ../../library/src/render/utils/useLayoutId.ts\nimport { useContext as useContext3, useMemo as useMemo2 } from \"react\";\nfunction useLayoutId(props, { specificLayoutId, postfix } = {}) {\n  const { name, layoutIdKey, duplicatedFrom, __fromCodeComponentNode = false, drag } = props;\n  const { getLayoutId, enabled } = useContext3(LayoutIdContext);\n  return useMemo2(() => {\n    if (!enabled)\n      return props.layoutId;\n    const existingLayoutId = specificLayoutId || props.layoutId;\n    if (!existingLayoutId) {\n      if (drag || !layoutIdKey || __fromCodeComponentNode)\n        return void 0;\n    }\n    const layoutIdCandidate = existingLayoutId || getLayoutId({ id: layoutIdKey, name, duplicatedFrom });\n    if (!layoutIdCandidate)\n      return void 0;\n    return postfix ? `${layoutIdCandidate}-${postfix}` : layoutIdCandidate;\n  }, [enabled]);\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nimport { useContext as useContext4 } from \"react\";\n\n// ../../library/src/useIsomorphicLayoutEffect.ts\nimport { useEffect as useEffect7, useLayoutEffect as useLayoutEffect4 } from \"react\";\nvar useIsomorphicLayoutEffect2 = typeof document !== \"undefined\" ? useLayoutEffect4 : useEffect7;\n\n// ../../library/src/render/presentation/ComponentContainerContext.tsx\nimport React18 from \"react\";\nvar ComponentContainerContext = /* @__PURE__ */ React18.createContext(false);\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport React20, { useEffect as useEffect8 } from \"react\";\n\n// ../../library/src/modules/useForceUpdate.ts\nimport React19 from \"react\";\nfunction useForceUpdate2() {\n  const [_, setForcedRenderCount] = React19.useState(0);\n  return React19.useCallback(() => setForcedRenderCount((v) => v + 1), []);\n}\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport { jsx as jsx12 } from \"react/jsx-runtime\";\nvar ResizeObserverPolyfill = /* @__PURE__ */ (() => require_resize_observer_umd().ResizeObserver)();\nvar DEFAULT_SIZE = 200;\nvar SharedObserver = class {\n  constructor() {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedResizeObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    const ResizeObserver = safeWindow.ResizeObserver ?? ResizeObserverPolyfill;\n    this.sharedResizeObserver = new ResizeObserver(this.updateResizedElements.bind(this));\n  }\n  updateResizedElements(entries) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement)\n        callbackForElement(entry.contentRect);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    this.sharedResizeObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    this.sharedResizeObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n};\nvar sharedResizeObserver = /* @__PURE__ */ (() => isBrowser2() ? new SharedObserver() : void 0)();\nfunction useRerenderOnResize(ref) {\n  const update = useForceUpdate2();\n  useEffect8(() => {\n    const element = ref == null ? void 0 : ref.current;\n    if (!element)\n      return;\n    sharedResizeObserver == null ? void 0 : sharedResizeObserver.observeElementWithCallback(ref.current, update);\n    return () => {\n      sharedResizeObserver == null ? void 0 : sharedResizeObserver.unobserve(element);\n    };\n  }, [ref, update]);\n}\nfunction useMeasuredSize(ref) {\n  const forceUpdate = useForceUpdate2();\n  const size = React20.useRef(null);\n  function updateSize(newSize) {\n    if (newSize.width === 0 && newSize.height === 0)\n      return;\n    if (!size.current || newSize.height !== size.current.height || newSize.width !== size.current.width) {\n      size.current = { width: newSize.width, height: newSize.height };\n      forceUpdate();\n    }\n  }\n  useIsomorphicLayoutEffect2(() => {\n    if (!ref.current)\n      return;\n    const { offsetWidth, offsetHeight } = ref.current;\n    updateSize({\n      width: offsetWidth,\n      height: offsetHeight\n    });\n    sharedResizeObserver.observeElementWithCallback(ref.current, updateSize);\n    return () => {\n      if (!ref.current)\n        return;\n      sharedResizeObserver.unobserve(ref.current);\n    };\n  }, []);\n  return size.current;\n}\nvar SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE = \"data-framer-size-compatibility-wrapper\";\nvar withMeasuredSize = (Component18) => (props) => {\n  const ref = React20.useRef(null);\n  const size = useMeasuredSize(ref);\n  const dataProps = { [SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE]: true };\n  const shouldRender = Boolean(size);\n  const fallbackWidth = props.width ?? DEFAULT_SIZE;\n  const fallbackHeight = props.height ?? DEFAULT_SIZE;\n  return /* @__PURE__ */ jsx12(\"div\", { style: { width: \"100%\", height: \"100%\", pointerEvents: \"none\" }, ref, ...dataProps, children: shouldRender && /* @__PURE__ */ jsx12(\n    Component18,\n    {\n      ...props,\n      width: (size == null ? void 0 : size.width) ?? fallbackWidth,\n      height: (size == null ? void 0 : size.height) ?? fallbackHeight\n    }\n  ) });\n};\n\n// ../../library/src/render/utils/getMeasurableCodeComponentChildren.ts\nfunction getMeasurableCodeComponentChildren(element) {\n  const childrenCollection = element.firstElementChild && element.firstElementChild.hasAttribute(SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE) ? element.firstElementChild.children : element.children;\n  return [...childrenCollection].filter(isMeasurable).map(unwrapInlinedDisplayContents);\n}\nfunction isMeasurable(element) {\n  if (element instanceof HTMLBaseElement || element instanceof HTMLHeadElement || element instanceof HTMLLinkElement || element instanceof HTMLMetaElement || element instanceof HTMLScriptElement || element instanceof HTMLStyleElement || element instanceof HTMLTitleElement) {\n    return false;\n  }\n  return element instanceof HTMLElement || element instanceof SVGElement;\n}\nfunction unwrapInlinedDisplayContents(element) {\n  if (!(element instanceof HTMLElement))\n    return element;\n  if (element.children.length === 0)\n    return element;\n  if (element.style.display !== \"contents\")\n    return element;\n  const firstMeasurableChild = [...element.children].find(isMeasurable);\n  if (firstMeasurableChild) {\n    return unwrapInlinedDisplayContents(firstMeasurableChild);\n  }\n  return element;\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nfunction useMeasureLayout(props, ref, getChildren = () => [], options = {}) {\n  const { id, visible, _needsMeasure } = props;\n  const { skipHook = false } = options;\n  const inCodeComponent = Boolean(useContext4(ComponentContainerContext));\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  useIsomorphicLayoutEffect2(() => {\n    if (!onCanvas || inCodeComponent || skipHook) {\n      return;\n    }\n    if (!(ref.current && id && visible && _needsMeasure)) {\n      return;\n    }\n    runtime.queueMeasureRequest(nodeIdFromString(id), ref.current, getChildren(ref.current));\n  });\n}\nfunction measureClosestComponentContainer(element) {\n  const container = element.closest(\"[data-framer-component-container]\");\n  if (!container)\n    return;\n  runtime.queueMeasureRequest(\n    nodeIdFromString(container.id),\n    container,\n    getMeasurableCodeComponentChildren(container)\n  );\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nimport { Component as Component3 } from \"react\";\n\n// ../../library/src/render/utils/setLayerBacked.ts\nvar smallValue = \"0.000001px\";\nvar translateZ = /* @__PURE__ */ (() => ` translateZ(${smallValue})`)();\nvar useTranslateZHack = /* @__PURE__ */ (() => isFramerX() || isSafari() || isTest())();\nfunction forceLayerBackingWithMotionStyle(motionStyle) {\n  motionStyle.willChange = \"transform\";\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  if (useTranslateZHack && onCanvas) {\n    motionStyle.translateZ = smallValue;\n  }\n}\nfunction forceLayerBackingWithCSSProperties(cssProperties) {\n  cssProperties.willChange = \"transform\";\n  setTranslateZHack(cssProperties, true);\n}\nfunction setTranslateZHack(style, enabled) {\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  if (!useTranslateZHack || !onCanvas) {\n    return;\n  }\n  const transform2 = isString(style.transform) ? style.transform || \"\" : \"\";\n  if (enabled) {\n    const hasTranslateZ = transform2.includes(translateZ);\n    if (!hasTranslateZ) {\n      style.transform = transform2 + translateZ;\n    }\n  } else {\n    style.transform = transform2.replace(translateZ, \"\");\n  }\n}\n\n// ../../library/src/render/utils/useWebkitFixes.ts\nimport { useEffect as useEffect9, useRef as useRef7 } from \"react\";\nfunction resetSetStyle(element, key7, toValue, microtask = true) {\n  if (!element) {\n    return;\n  }\n  const style = asRecord(element.style);\n  const value = toValue ? toValue : style[key7];\n  const reset = () => {\n    style[key7] = value;\n  };\n  style[key7] = null;\n  if (microtask) {\n    void Promise.resolve().then(reset);\n  } else {\n    setTimeout(reset, 0);\n  }\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nvar Layer = /* @__PURE__ */ (() => {\n  class Layer2 extends Component3 {\n    constructor() {\n      super(...arguments);\n      /** @private (Just using `private` breaks compilation unless using `stripInternal`) */\n      __publicField(this, \"layerElement\", null);\n      __publicField(this, \"setLayerElement\", (element) => {\n        this.layerElement = element;\n      });\n    }\n    static applyWillChange(props, style, usingMotionStyle) {\n      if (props.willChangeTransform) {\n        if (usingMotionStyle) {\n          forceLayerBackingWithMotionStyle(style);\n        } else {\n          forceLayerBackingWithCSSProperties(style);\n        }\n      }\n    }\n    /** @internal */\n    shouldComponentUpdate(nextProps, nextState) {\n      return nextProps._needsMeasure || this.state !== nextState || !isEqual(this.props, nextProps);\n    }\n    /** @internal */\n    componentDidUpdate(prevProps) {\n      if (asRecord(this.props)[\"clip\"] && asRecord(this.props)[\"radius\"] === 0 && asRecord(prevProps)[\"radius\"] !== 0) {\n        resetSetStyle(this.layerElement, \"overflow\", \"hidden\", false);\n      }\n    }\n  }\n  __publicField(Layer2, \"defaultProps\", {});\n  return Layer2;\n})();\n\n// ../../library/src/utils/memoize.ts\nfunction manageCache(cache2, maxEntries) {\n  const size = cache2.size;\n  if (size < maxEntries)\n    return;\n  let i = Math.round(Math.random());\n  for (const key7 of cache2.keys()) {\n    if ((++i & 1) === 1)\n      continue;\n    cache2.delete(key7);\n  }\n}\nfunction memoize2(maxEntries, cache2, key7, create) {\n  const r = cache2.get(key7);\n  if (r)\n    return r;\n  manageCache(cache2, maxEntries);\n  const g = create(key7);\n  cache2.set(key7, g);\n  return g;\n}\n\n// ../../library/src/utils/string.ts\nvar hash = (value) => {\n  let hasher = 0, i, chr;\n  if (value.length === 0)\n    return hasher;\n  for (i = 0; i < value.length; i++) {\n    chr = value.charCodeAt(i);\n    hasher = (hasher << 5) - hasher + chr;\n    hasher |= 0;\n  }\n  return hasher;\n};\n\n// ../../library/src/render/types/Color/ConvertColor.ts\nvar ConvertColor = {\n  hueRotate: (color2, angle) => {\n    return Color.toHslString(Color.hueRotate(Color(color2), angle));\n  },\n  setAlpha: (color2, alpha) => {\n    return Color.toRgbString(Color.alpha(Color(color2), alpha));\n  },\n  getAlpha: (color2) => {\n    const obj = stringToObject(color2);\n    return obj ? obj.a : 1;\n  },\n  multiplyAlpha: (color2, alpha) => {\n    return Color.toRgbString(Color.multiplyAlpha(Color(color2), alpha));\n  },\n  /**\n   * @internal\n   */\n  toHexValue: (color2) => {\n    return Color.toHex(Color(color2)).toUpperCase();\n  },\n  toHex: (color2) => {\n    return Color.toHexString(Color(color2)).toUpperCase();\n  },\n  toRgb: (color2) => {\n    return Color.toRgb(Color(color2));\n  },\n  toRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toHSV: (color2) => {\n    return Color.toHsv(Color(color2));\n  },\n  toHSL: (color2) => {\n    return Color.toHsl(Color(color2));\n  },\n  toHslString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  toHsvString: (color2) => {\n    return Color.toHsvString(Color(color2));\n  },\n  hsvToHSLString: (hsv) => {\n    return Color.toHslString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  /**\n   * @internal\n   */\n  hsvToHexValue: (hsv) => {\n    return Color.toHex(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToHex: (hsv) => {\n    return Color.toHexString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToRgbString: (hsv) => {\n    return Color.toRgbString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  hsvToString: (hsv) => {\n    return hsvToStr(hsv.h, hsv.s, hsv.v);\n  },\n  rgbaToString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  /**\n   * @internal\n   */\n  rgbToHexValue: (color2) => {\n    return Color.toHex(Color(color2));\n  },\n  rgbToHexString: (color2) => {\n    return Color.toHexString(Color(color2));\n  },\n  hslToString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  hslToRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toColorPickerSquare: (h) => {\n    return Color.toRgbString(Color({ h, s: 1, l: 0.5, a: 1 }));\n  },\n  isValid: (color2) => {\n    return Color(color2).isValid !== false;\n  },\n  equals: (a, b) => {\n    if (typeof a === \"string\") {\n      a = Color(a);\n    }\n    if (typeof b === \"string\") {\n      b = Color(b);\n    }\n    return Color.equal(a, b);\n  },\n  toHexOrRgbaString: (input) => {\n    const color2 = Color(input);\n    return color2.a !== 1 ? Color.toRgbString(color2) : Color.toHexString(color2);\n  }\n};\n\n// ../../library/src/render/utils/gradientColorStops.ts\nvar CSSVariableRegExp = /var\\(.+\\)/u;\nvar colorCache = /* @__PURE__ */ new Map();\nfunction cachedMultiplyAlpha(s, a) {\n  const key7 = [s, a];\n  if (CSSVariableRegExp.test(s)) {\n    return s;\n  }\n  return memoize2(1e3, colorCache, key7, () => ConvertColor.multiplyAlpha(s, a));\n}\nfunction gradientColorStops(gradient, alpha = 1) {\n  let stops;\n  if (\"stops\" in gradient) {\n    stops = gradient.stops;\n  } else {\n    stops = [\n      { value: gradient.start, position: 0 },\n      { value: gradient.end, position: 1 }\n    ];\n  }\n  if (alpha === 1) {\n    return stops;\n  } else {\n    return stops.map((stop) => ({ ...stop, value: cachedMultiplyAlpha(stop.value, alpha) }));\n  }\n}\nfunction gradientColorStopsHash(gradient, alpha) {\n  let result = 0;\n  gradientColorStops(gradient, alpha).forEach((stop) => {\n    result ^= hash(stop.value) ^ stop.position;\n  });\n  return result;\n}\n\n// ../../library/src/render/types/MultiStopGradient.ts\nvar multiStopGradientKeys = [\"stops\"];\nfunction isMultiStopGradient(value) {\n  return value && multiStopGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/SimpleGradient.ts\nvar simpleGradientKeys = [\"start\", \"end\"];\nfunction isSimpleGradient(value) {\n  return value && simpleGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/LinearGradient.ts\nvar linearGradientKeys = [\"angle\", \"alpha\"];\nvar LinearGradient = {\n  /**\n   * @param value -\n   */\n  isLinearGradient: (value) => {\n    return value && linearGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (linearGradient) => {\n    return linearGradient.angle ^ gradientColorStopsHash(linearGradient, linearGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (linearGradient, overrideAngle) => {\n    const stops = gradientColorStops(linearGradient, linearGradient.alpha);\n    const angle = overrideAngle !== void 0 ? overrideAngle : linearGradient.angle;\n    const cssStops = stops.map((stop) => `${stop.value} ${stop.position * 100}%`);\n    return `linear-gradient(${angle}deg, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/types/RadialGradient.ts\nvar radialGradientKeys = [\n  \"widthFactor\",\n  \"heightFactor\",\n  \"centerAnchorX\",\n  \"centerAnchorY\",\n  \"alpha\"\n];\nvar RadialGradient = {\n  /**\n   * @param value -\n   * @public\n   */\n  isRadialGradient: (value) => {\n    return value && radialGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (radialGradient) => {\n    return radialGradient.centerAnchorX ^ radialGradient.centerAnchorY ^ radialGradient.widthFactor ^ radialGradient.heightFactor ^ gradientColorStopsHash(radialGradient, radialGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (radialGradient) => {\n    const { alpha, widthFactor, heightFactor, centerAnchorX, centerAnchorY } = radialGradient;\n    const stops = gradientColorStops(radialGradient, alpha);\n    const cssStops = stops.map((stop, index) => {\n      const nextStop = stops[index + 1];\n      const position = stop.position === 1 && (nextStop == null ? void 0 : nextStop.position) === 1 ? stop.position - 1e-4 : stop.position;\n      return `${stop.value} ${position * 100}%`;\n    });\n    return `radial-gradient(${widthFactor * 100}% ${heightFactor * 100}% at ${centerAnchorX * 100}% ${centerAnchorY * 100}%, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/traits/Background.ts\nfunction collectBackgroundFromProps({ background, backgroundColor }, style) {\n  if (backgroundColor) {\n    if (typeof backgroundColor === \"string\" || isMotionValue2(backgroundColor)) {\n      style.backgroundColor = backgroundColor;\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  } else if (background) {\n    background = Animatable.get(background, null);\n    if (typeof background === \"string\" || isMotionValue2(background)) {\n      style.background = background;\n    } else if (LinearGradient.isLinearGradient(background)) {\n      style.background = LinearGradient.toCSS(background);\n    } else if (RadialGradient.isRadialGradient(background)) {\n      style.background = RadialGradient.toCSS(background);\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  }\n}\n\n// ../../library/src/render/utils/extractStyleFromProps.ts\nfunction extractStyleFromProps(props, name, styleRef, into) {\n  if (into === void 0) {\n    into = name;\n  }\n  if (props[name] !== void 0) {\n    ;\n    styleRef[into] = props[name];\n    return;\n  }\n}\n\n// ../../library/src/render/presentation/Frame/getStyleForFrameProps.ts\nfunction hasLeftAndRight(style) {\n  if (!style)\n    return false;\n  return style.left !== void 0 && style.right !== void 0;\n}\nfunction hasTopAndBottom(style) {\n  if (!style)\n    return false;\n  return style.top !== void 0 && style.bottom !== void 0;\n}\nfunction getStyleForFrameProps(props) {\n  if (!props) {\n    return {};\n  }\n  const style = {};\n  if (props.preserve3d === true) {\n    style.transformStyle = \"preserve-3d\";\n  } else if (props.preserve3d === false) {\n    style.transformStyle = \"flat\";\n  }\n  if (props.backfaceVisible === true) {\n    style.backfaceVisibility = \"visible\";\n  } else if (props.backfaceVisible === false) {\n    style.backfaceVisibility = \"hidden\";\n  }\n  if (style.backfaceVisibility) {\n    style.WebkitBackfaceVisibility = style.backfaceVisibility;\n  }\n  if (props.perspective !== void 0) {\n    style.perspective = style.WebkitPerspective = props.perspective;\n  }\n  if (!props.__fromCanvasComponent) {\n    if (props.center === true) {\n      style.left = \"50%\";\n      style.top = \"50%\";\n    } else {\n      if (props.center === \"x\") {\n        style.left = \"50%\";\n      } else if (props.center === \"y\") {\n        style.top = \"50%\";\n      }\n    }\n  }\n  extractStyleFromProps(props, \"size\", style);\n  extractStyleFromProps(props, \"width\", style);\n  extractStyleFromProps(props, \"height\", style);\n  extractStyleFromProps(props, \"minWidth\", style);\n  extractStyleFromProps(props, \"minHeight\", style);\n  extractStyleFromProps(props, \"top\", style);\n  extractStyleFromProps(props, \"right\", style);\n  extractStyleFromProps(props, \"bottom\", style);\n  extractStyleFromProps(props, \"left\", style);\n  extractStyleFromProps(props, \"position\", style);\n  extractStyleFromProps(props, \"overflow\", style);\n  extractStyleFromProps(props, \"opacity\", style);\n  if (!props._border || !props._border.borderWidth)\n    extractStyleFromProps(props, \"border\", style);\n  extractStyleFromProps(props, \"borderRadius\", style);\n  extractStyleFromProps(props, \"radius\", style, \"borderRadius\");\n  extractStyleFromProps(props, \"color\", style);\n  extractStyleFromProps(props, \"shadow\", style, \"boxShadow\");\n  extractStyleFromProps(props, \"x\", style);\n  extractStyleFromProps(props, \"y\", style);\n  extractStyleFromProps(props, \"z\", style);\n  extractStyleFromProps(props, \"rotate\", style);\n  extractStyleFromProps(props, \"rotateX\", style);\n  extractStyleFromProps(props, \"rotateY\", style);\n  extractStyleFromProps(props, \"rotateZ\", style);\n  extractStyleFromProps(props, \"scale\", style);\n  extractStyleFromProps(props, \"scaleX\", style);\n  extractStyleFromProps(props, \"scaleY\", style);\n  extractStyleFromProps(props, \"skew\", style);\n  extractStyleFromProps(props, \"skewX\", style);\n  extractStyleFromProps(props, \"skewY\", style);\n  extractStyleFromProps(props, \"originX\", style);\n  extractStyleFromProps(props, \"originY\", style);\n  extractStyleFromProps(props, \"originZ\", style);\n  collectBackgroundFromProps(props, style);\n  return style;\n}\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport { Fragment as Fragment4, jsx as jsx13, jsxs as jsxs3 } from \"react/jsx-runtime\";\nfunction hasEvents(props) {\n  for (const key7 in props) {\n    if (key7 === \"drag\" || key7.startsWith(\"while\") || typeof asRecord(props)[key7] === \"function\" && key7.startsWith(\"on\") && !key7.includes(\"Animation\")) {\n      return true;\n    }\n  }\n  return false;\n}\nvar pointerEvents = [\n  \"onClick\",\n  \"onDoubleClick\",\n  \"onMouse\",\n  \"onMouseDown\",\n  \"onMouseUp\",\n  \"onTapDown\",\n  \"onTap\",\n  \"onTapUp\",\n  \"onPointer\",\n  \"onPointerDown\",\n  \"onPointerUp\",\n  \"onTouch\",\n  \"onTouchDown\",\n  \"onTouchUp\"\n];\nvar pointerEventsSet = /* @__PURE__ */ (() => /* @__PURE__ */ new Set([\n  ...pointerEvents,\n  ...pointerEvents.map((event) => `${event}Capture`)\n  // Add capture event variants\n]))();\nfunction getCursorFromEvents(props) {\n  if (props.drag) {\n    return \"grab\";\n  }\n  for (const key7 in props) {\n    if (pointerEventsSet.has(key7)) {\n      return \"pointer\";\n    }\n  }\n  return void 0;\n}\nvar overflowKey = \"overflow\";\nfunction hasScrollableContent(props) {\n  if (hasScrollingOverflow(props))\n    return true;\n  if (!props.style)\n    return false;\n  if (hasScrollingOverflow(props.style))\n    return true;\n  return false;\n}\nfunction hasScrollingOverflow(props) {\n  if (overflowKey in props && (props[overflowKey] === \"scroll\" || props[overflowKey] === \"auto\"))\n    return true;\n  return false;\n}\nfunction unwrapFrameProps(frameProps) {\n  const {\n    left,\n    top,\n    bottom,\n    right,\n    width,\n    height,\n    center,\n    _constraints,\n    size,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute\n  } = frameProps;\n  const minWidth = resolveMotionValue(frameProps.minWidth);\n  const minHeight = resolveMotionValue(frameProps.minHeight);\n  const maxWidth = resolveMotionValue(frameProps.maxWidth);\n  const maxHeight = resolveMotionValue(frameProps.maxHeight);\n  const constraintProps = {\n    top: resolveMotionValue(top),\n    left: resolveMotionValue(left),\n    bottom: resolveMotionValue(bottom),\n    right: resolveMotionValue(right),\n    width: resolveMotionValue(width),\n    height: resolveMotionValue(height),\n    size: resolveMotionValue(size),\n    center,\n    _constraints,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute,\n    minWidth,\n    minHeight,\n    maxWidth,\n    maxHeight\n  };\n  return constraintProps;\n}\nvar defaultFrameRect = { x: 0, y: 0, width: 200, height: 200 };\nfunction useStyleAndRect(props) {\n  React21.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const { style, _initialStyle, __fromCanvasComponent, size } = props;\n  const unwrappedProps = unwrapFrameProps(props);\n  const constraintsRect = useConstraints(unwrappedProps);\n  const defaultStyle = {\n    display: \"block\",\n    flex: (style == null ? void 0 : style.flex) ?? \"0 0 auto\",\n    userSelect: RenderTarget.current() !== RenderTarget.preview ? \"none\" : void 0\n  };\n  if (!props.__fromCanvasComponent) {\n    defaultStyle.backgroundColor = props.background === void 0 ? \"rgba(0, 170, 255, 0.3)\" : void 0;\n  }\n  const shouldDisablePointerEvents = !hasEvents(props) && !props.__fromCanvasComponent && !hasScrollableContent(props);\n  const safeToEditPointerEvents = props.style ? !(\"pointerEvents\" in props.style) : true;\n  if (shouldDisablePointerEvents && safeToEditPointerEvents) {\n    defaultStyle.pointerEvents = \"none\";\n  }\n  const addTextCentering = React21.Children.count(props.children) > 0 && React21.Children.toArray(props.children).every((child) => {\n    return typeof child === \"string\" || typeof child === \"number\";\n  });\n  const centerTextStyle = addTextCentering && {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\"\n  };\n  const propsStyle = getStyleForFrameProps(props);\n  if (size === void 0 && !__fromCanvasComponent) {\n    if (!hasLeftAndRight(propsStyle)) {\n      defaultStyle.width = defaultFrameRect.width;\n    }\n    if (!hasTopAndBottom(propsStyle)) {\n      defaultStyle.height = defaultFrameRect.height;\n    }\n  }\n  if (unwrappedProps.minWidth !== void 0) {\n    defaultStyle.minWidth = unwrappedProps.minWidth;\n  }\n  if (unwrappedProps.minHeight !== void 0) {\n    defaultStyle.minHeight = unwrappedProps.minHeight;\n  }\n  let constraintsStyle = {};\n  if (constraintsEnabled(unwrappedProps)) {\n    if (constraintsRect && !isAutoSized(props)) {\n      constraintsStyle = {\n        left: constraintsRect.x,\n        top: constraintsRect.y,\n        width: constraintsRect.width,\n        height: constraintsRect.height,\n        right: void 0,\n        bottom: void 0\n      };\n    }\n  }\n  Object.assign(defaultStyle, centerTextStyle, _initialStyle, propsStyle, constraintsStyle, style);\n  Object.assign(defaultStyle, {\n    overflowX: defaultStyle.overflowX ?? defaultStyle.overflow,\n    overflowY: defaultStyle.overflowY ?? defaultStyle.overflow,\n    overflow: void 0\n  });\n  Layer.applyWillChange(props, defaultStyle, true);\n  let resultStyle = defaultStyle;\n  if (!defaultStyle.transform) {\n    resultStyle = { x: 0, y: 0, ...defaultStyle };\n  }\n  const isRenderingStaticContent = isStaticRenderer();\n  if (props.positionSticky) {\n    if (!isRenderingStaticContent || inCodeComponent) {\n      resultStyle.position = \"sticky\";\n      resultStyle.willChange = \"transform\";\n      resultStyle.zIndex = 1;\n      resultStyle.top = props.positionStickyTop;\n      resultStyle.right = props.positionStickyRight;\n      resultStyle.bottom = props.positionStickyBottom;\n      resultStyle.left = props.positionStickyLeft;\n    }\n  } else if (isRenderingStaticContent && (props.positionFixed || props.positionAbsolute)) {\n    resultStyle.position = \"absolute\";\n  }\n  if (\"rotate\" in resultStyle && resultStyle.rotate === void 0) {\n    delete resultStyle.rotate;\n  }\n  return [resultStyle, constraintsRect];\n}\nvar filteredProps = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"opacity\",\n  \"overflow\",\n  \"radius\",\n  \"background\",\n  \"color\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\",\n  \"originX\",\n  \"originY\",\n  \"originZ\"\n]);\nfunction getMotionProps(props) {\n  const motionProps = {};\n  for (const key7 in props) {\n    const isValid = isValidMotionProp(key7) || isPropValid(key7);\n    if (isValid && !filteredProps.has(key7)) {\n      motionProps[key7] = asRecord(props)[key7];\n    } else if (key7 === \"positionTransition\" || key7 === \"layoutTransition\") {\n      motionProps[\"layout\"] = true;\n      if (typeof asRecord(props)[key7] !== \"boolean\" && !props.transition) {\n        motionProps[\"transition\"] = asRecord(props)[key7];\n      }\n    }\n  }\n  return motionProps;\n}\nfunction hasDataFramerName(props) {\n  return \"data-framer-name\" in props;\n}\nvar VisibleFrame = /* @__PURE__ */ forwardRef(function VisibleFrame2(props, forwardedRef) {\n  const { name, center, border, _border, __portal } = props;\n  const { props: propsWithOverrides, children } = processOverrideForwarding(props);\n  const motionProps = getMotionProps(propsWithOverrides);\n  const layoutId = useLayoutId(props);\n  const cursor = getCursorFromEvents(props);\n  const fallbackRef = useRef8(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const dataProps = {\n    \"data-framer-component-type\": props.componentType ?? \"Frame\",\n    \"data-framer-cursor\": cursor,\n    \"data-framer-highlight\": cursor === \"pointer\" ? true : void 0,\n    \"data-layoutid\": layoutId,\n    \"data-framer-offset-parent-id\": asRecord(props)[\"data-framer-offset-parent-id\"]\n  };\n  if (!hasDataFramerName(props) && name) {\n    asRecord(dataProps)[\"data-framer-name\"] = name;\n  }\n  const [currentStyle, rect] = useStyleAndRect(propsWithOverrides);\n  const unwrappedProps = unwrapFrameProps(propsWithOverrides);\n  const autoSized = isAutoSized(unwrappedProps);\n  if (center && !(rect && !autoSized && constraintsEnabled(unwrappedProps))) {\n    if (!motionProps.transformTemplate)\n      motionProps.transformTemplate = transformTemplate(center);\n    Object.assign(dataProps, layoutHintDataPropsForCenter(center));\n  } else if (!motionProps.transformTemplate) {\n    motionProps.transformTemplate = void 0;\n  }\n  useMeasureLayout(props, ref);\n  const backgroundImage = backgroundImageFromProps(props);\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const parentSize = resolveParentSize(propsWithOverrides, unwrappedProps, rect, inCodeComponent);\n  const wrappedContent = useProvideParentSize(\n    /* @__PURE__ */ jsxs3(Fragment4, { children: [\n      backgroundImage ? /* @__PURE__ */ jsx13(\n        BackgroundImageComponent,\n        {\n          alt: props.alt ?? \"\",\n          image: backgroundImage,\n          containerSize: rect ?? void 0,\n          nodeId: props.id && nodeIdFromString(props.id),\n          layoutId\n        }\n      ) : null,\n      children,\n      /* @__PURE__ */ jsx13(Border, { ..._border, border, layoutId })\n    ] }),\n    parentSize\n  );\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  const { size, radius, shadow } = currentStyle;\n  if (size !== void 0) {\n    delete currentStyle.size;\n    if (currentStyle.height === void 0) {\n      currentStyle.height = size;\n    }\n    if (currentStyle.width === void 0) {\n      currentStyle.width = size;\n    }\n  }\n  if (radius !== void 0) {\n    delete currentStyle.radius;\n    currentStyle.borderRadius = radius;\n  }\n  if (shadow !== void 0) {\n    delete currentStyle.shadow;\n    currentStyle.boxShadow = shadow;\n  }\n  return /* @__PURE__ */ jsxs3(MotionComponent, { ...dataProps, ...motionProps, layoutId, style: currentStyle, ref, children: [\n    wrappedContent,\n    __portal\n  ] });\n});\nvar FrameWithMotion = /* @__PURE__ */ forwardRef(\n  function FrameWithMotion2(props, ref) {\n    countNodeRender();\n    const { visible = true } = props;\n    if (!visible)\n      return null;\n    return /* @__PURE__ */ jsx13(VisibleFrame, { ...props, ref });\n  }\n);\nfunction resolveParentSize(props, unwrappedProps, rect, inCodeComponent) {\n  if (inCodeComponent) {\n    const parentSize = rect ? { width: rect.width, height: rect.height } : 1 /* Disabled */;\n    return parentSize;\n  }\n  const { _usesDOMRect } = props;\n  const {\n    widthType = 0 /* FixedNumber */,\n    heightType = 0 /* FixedNumber */,\n    width,\n    height\n  } = unwrappedProps;\n  if (rect && !_usesDOMRect) {\n    return rect;\n  }\n  if (widthType === 0 /* FixedNumber */ && heightType === 0 /* FixedNumber */ && typeof width === \"number\" && typeof height === \"number\") {\n    return { width, height };\n  }\n  if (_usesDOMRect || props.positionFixed || props.positionAbsolute) {\n    return 2 /* DisabledForCurrentLevel */;\n  }\n  return 0 /* Unknown */;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport { jsx as jsx14, jsxs as jsxs4 } from \"react/jsx-runtime\";\nfunction EmptyState({\n  title = \"\",\n  description = \"Click and drag the connector to any frame on the canvas \\u2192\",\n  children,\n  size,\n  hide,\n  insideUserCodeComponent = false,\n  position = \"absolute\"\n}) {\n  const { target } = RenderEnvironment;\n  const childCount = React22.Children.count(children);\n  if (insideUserCodeComponent && childCount === 0) {\n    return /* @__PURE__ */ jsx14(FrameWithMotion, { ...size, \"data-name\": \"placeholder\" });\n  }\n  if (target !== RenderTarget.canvas)\n    return null;\n  if (hide)\n    return null;\n  if (childCount !== 0)\n    return null;\n  return /* @__PURE__ */ jsx14(\n    FrameWithMotion,\n    {\n      className: \"framerInternalUI-canvasPlaceholder\",\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      style: { position, ...size },\n      children: /* @__PURE__ */ jsx14(\n        \"div\",\n        {\n          style: {\n            display: \"flex\",\n            alignItems: \"center\",\n            lineHeight: \"1.4\",\n            height: \"100%\",\n            width: \"100%\"\n          },\n          children: /* @__PURE__ */ jsxs4(\n            \"div\",\n            {\n              style: {\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                flexDirection: \"column\",\n                width: \"100%\",\n                // Use a mask to fade out the right edge of the content as it gets cropped.\n                WebkitMaskImage: `linear-gradient(90deg, black, black calc(100% - 12px * ${scaleFactor}), transparent)`\n              },\n              children: [\n                /* @__PURE__ */ jsx14(Title, { children: title }),\n                /* @__PURE__ */ jsx14(Description, { children: description })\n              ]\n            }\n          )\n        }\n      )\n    },\n    \"empty-state\"\n  );\n}\nvar scaleFactor = \"var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)\";\nfunction Title({ children }) {\n  return /* @__PURE__ */ jsx14(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 600,\n        marginBottom: \"5px\"\n      },\n      children\n    }\n  );\n}\nfunction Description({ children }) {\n  return /* @__PURE__ */ jsx14(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 400,\n        maxWidth: \"200px\"\n      },\n      children\n    }\n  );\n}\n\n// ../../library/src/components/Navigation.tsx\nimport React31, { Component as Component6 } from \"react\";\n\n// ../../library/src/components/AnimateLayout/SharedLayoutRoot.tsx\nimport React23, { Component as Component4 } from \"react\";\nimport { jsx as jsx15 } from \"react/jsx-runtime\";\nvar TREE_ROOT_ID = \"__LAYOUT_TREE_ROOT\";\nvar SharedLayoutContext = /* @__PURE__ */ React23.createContext({\n  schedulePromoteTree: () => {\n  },\n  scheduleProjectionDidUpdate: () => {\n  },\n  initLead: () => {\n  }\n});\nvar SharedLayoutRoot = class extends Component4 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"shouldAnimate\", false);\n    __publicField(this, \"transition\");\n    __publicField(this, \"lead\");\n    __publicField(this, \"follow\");\n    __publicField(this, \"scheduledPromotion\", false);\n    __publicField(this, \"scheduledDidUpdate\", false);\n    __publicField(this, \"scheduleProjectionDidUpdate\", () => {\n      this.scheduledDidUpdate = true;\n    });\n    // schedule a promotion to run later in getSnapshotBeforeUpdate\n    __publicField(this, \"schedulePromoteTree\", (tree, transition, shouldAnimate) => {\n      this.follow = this.lead;\n      this.shouldAnimate = shouldAnimate;\n      this.lead = tree;\n      this.transition = transition;\n      this.scheduledPromotion = true;\n    });\n    __publicField(this, \"initLead\", (tree, shouldAnimate) => {\n      this.follow = this.lead;\n      this.lead = tree;\n      if (this.follow && shouldAnimate) {\n        this.follow.layoutMaybeMutated = true;\n      }\n    });\n    __publicField(this, \"sharedLayoutContext\", {\n      schedulePromoteTree: this.schedulePromoteTree,\n      scheduleProjectionDidUpdate: this.scheduleProjectionDidUpdate,\n      initLead: this.initLead\n    });\n  }\n  // Runs after all descendent SharedLayoutTree finish taking snapshots in\n  // their getSnapshotBeforeUpdate lifecycle method.\n  getSnapshotBeforeUpdate() {\n    var _a;\n    if (!this.scheduledPromotion || !this.lead || !this.follow)\n      return null;\n    const needsReset = !!((_a = this.lead) == null ? void 0 : _a.layoutMaybeMutated) && !this.shouldAnimate;\n    this.lead.projectionNodes.forEach((projectionNode) => {\n      var _a2;\n      projectionNode == null ? void 0 : projectionNode.promote({\n        needsReset,\n        transition: this.shouldAnimate ? this.transition : void 0,\n        preserveFollowOpacity: projectionNode.options.layoutId === TREE_ROOT_ID && !((_a2 = this.follow) == null ? void 0 : _a2.isExiting)\n      });\n    });\n    if (this.shouldAnimate) {\n      this.follow.layoutMaybeMutated = true;\n    } else {\n      this.scheduleProjectionDidUpdate();\n    }\n    this.lead.layoutMaybeMutated = false;\n    this.transition = void 0;\n    this.scheduledPromotion = false;\n    return null;\n  }\n  componentDidUpdate() {\n    var _a, _b;\n    if (!this.lead)\n      return null;\n    if (this.scheduledDidUpdate) {\n      (_b = (_a = this.lead.rootProjectionNode) == null ? void 0 : _a.root) == null ? void 0 : _b.didUpdate();\n      this.scheduledDidUpdate = false;\n    }\n  }\n  render() {\n    return /* @__PURE__ */ jsx15(SharedLayoutContext.Provider, { value: this.sharedLayoutContext, children: this.props.children });\n  }\n};\n\n// ../../library/src/components/MagicMotionCrossfadeRoot.tsx\nimport { jsx as jsx16 } from \"react/jsx-runtime\";\nvar rootStyles = {\n  width: \"100%\",\n  height: \"100%\",\n  backgroundColor: \"none\"\n};\nfunction MagicMotionCrossfadeRoot(props) {\n  return /* @__PURE__ */ jsx16(motion.div, { layoutId: TREE_ROOT_ID, style: rootStyles, children: props.children });\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport React30, { useContext as useContext9, useEffect as useEffect11, useRef as useRef11 } from \"react\";\n\n// ../../library/src/modules/useAppearEffect.ts\nimport React24 from \"react\";\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nimport { createContext, useContext as useContext6 } from \"react\";\n\n// ../../library/src/components/utils/refHelper.ts\nimport { useMemo as useMemo3, useRef as useRef9 } from \"react\";\nfunction setRef(ref, value) {\n  if (isFunction(ref)) {\n    ref(value);\n  } else if (isMutableRef(ref)) {\n    ref.current = value;\n  }\n}\nfunction isMutableRef(ref) {\n  return isObject(ref) && \"current\" in ref;\n}\nfunction refHasValue(ref) {\n  return isMutableRef(ref) && ref.current !== null;\n}\nfunction useStableRefWithObserver() {\n  const callbacks = useConstant(() => /* @__PURE__ */ new Set());\n  const cleanups = useConstant(() => /* @__PURE__ */ new Map());\n  return useConstant(\n    () => (ref, refCallback) => {\n      return {\n        get current() {\n          return ref.current;\n        },\n        set current(value) {\n          if (refCallback)\n            refCallback(value);\n          ref.current = value;\n          const needsCleanup = value === null;\n          callbacks.forEach((callback) => {\n            if (needsCleanup && cleanups.has(callback))\n              return;\n            const cleanup = callback(value);\n            if (cleanup)\n              cleanups.set(callback, cleanup);\n          });\n          if (needsCleanup) {\n            cleanups.forEach((cleanup) => cleanup());\n            cleanups.clear();\n          }\n        },\n        observe(fn, skipCall = false) {\n          if (callbacks.has(fn))\n            return;\n          callbacks.add(fn);\n          if (!skipCall && ref.current)\n            fn(ref.current);\n        },\n        unobserve(fn) {\n          if (fn)\n            callbacks.delete(fn);\n        },\n        cleanup(fn) {\n          var _a;\n          if (!fn || !cleanups.has(fn))\n            return false;\n          (_a = cleanups.get(fn)) == null ? void 0 : _a();\n          return true;\n        }\n      };\n    }\n  );\n}\nfunction useObserverRef(forwardedRef) {\n  const fallbackRef = useRef9(null);\n  const createStableRefWithObserver = useStableRefWithObserver();\n  return useConstant(() => {\n    if (isMutableRef(forwardedRef))\n      return createStableRefWithObserver(forwardedRef);\n    if (isFunction(forwardedRef))\n      return createStableRefWithObserver(fallbackRef, forwardedRef);\n    return createStableRefWithObserver(fallbackRef);\n  });\n}\nfunction useRefEffect(ref, effect, deps) {\n  var _a;\n  const effectRef = useRef9();\n  const depsChangedRef = useRef9();\n  useMemo3(() => {\n    if (depsChangedRef.current !== void 0)\n      depsChangedRef.current = true;\n  }, deps ?? [{}]);\n  if (!ref)\n    return;\n  const depsChanged = depsChangedRef.current;\n  if (depsChanged) {\n    depsChangedRef.current = false;\n    if (!ref.cleanup(effectRef.current)) {\n      (_a = effectRef.current) == null ? void 0 : _a.call(effectRef, null);\n    }\n    const value = ref.current;\n    if (value)\n      effect == null ? void 0 : effect(value);\n  }\n  if (effectRef.current === effect)\n    return;\n  ref.unobserve(effectRef.current);\n  effectRef.current = effect;\n  ref.observe(effect, depsChanged);\n  if (depsChangedRef.current === void 0)\n    depsChangedRef.current = false;\n}\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nvar SharedIntersectionObserver = class {\n  constructor(options) {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedIntersectionObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    this.sharedIntersectionObserver = new IntersectionObserver(\n      this.intersectionObserverCallback.bind(this),\n      options\n    );\n  }\n  intersectionObserverCallback(entries, observer) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement)\n        callbackForElement(entry, observer);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    if (!this.sharedIntersectionObserver)\n      return;\n    this.sharedIntersectionObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    if (!this.sharedIntersectionObserver)\n      return;\n    this.sharedIntersectionObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n  get root() {\n    var _a;\n    return (_a = this.sharedIntersectionObserver) == null ? void 0 : _a.root;\n  }\n};\nvar SharedIntersectionObserverContext = /* @__PURE__ */ createContext(/* @__PURE__ */ new Map());\nfunction _useSharedIntersectionObserver(ref, callback, options) {\n  const key7 = useConstant(() => `${options.rootMargin}`);\n  const observers = useContext6(SharedIntersectionObserverContext);\n  const { enabled, root, rootMargin, threshold } = options;\n  useRefEffect(\n    ref,\n    (element) => {\n      if (!enabled)\n        return;\n      if (element === null)\n        return;\n      let observer = observers.get(key7);\n      if (!observer || observer.root !== (root == null ? void 0 : root.current)) {\n        observer = new SharedIntersectionObserver({ root: root == null ? void 0 : root.current, rootMargin, threshold });\n        observers.set(key7, observer);\n      }\n      observer.observeElementWithCallback(element, callback);\n      return () => {\n        observer == null ? void 0 : observer.unobserve(element);\n      };\n    },\n    [enabled, callback, root, rootMargin, threshold]\n  );\n}\nvar useSharedIntersectionObserver = typeof IntersectionObserver === \"undefined\" ? noop : _useSharedIntersectionObserver;\n\n// ../../library/src/modules/useAppearEffect.ts\nvar thresholds = /* @__PURE__ */ new Array(100).fill(void 0).map((_, i) => i * 0.01);\nvar ViewportContext = /* @__PURE__ */ React24.createContext(null);\nfunction useAppearEffect(ref, appearCallback, options) {\n  const internalState = React24.useRef({\n    isInView: false,\n    hasAnimatedOnce: false\n  });\n  const { enabled, animateOnce, threshold, rootMargin = `0px 0px 0px 0px` } = options;\n  const callback = React24.useCallback(\n    (entry) => {\n      const { isInView, hasAnimatedOnce } = internalState.current;\n      const isIntersecting = isIntersectingWithThreshold(entry, (threshold == null ? void 0 : threshold.y) ?? 0);\n      if (isIntersecting && !isInView) {\n        if (animateOnce && hasAnimatedOnce)\n          return;\n        internalState.current.hasAnimatedOnce = true;\n        internalState.current.isInView = true;\n        appearCallback(true);\n        return;\n      }\n      if (!isIntersecting && isInView) {\n        internalState.current.isInView = false;\n        if (animateOnce)\n          return;\n        appearCallback(false);\n        return;\n      }\n    },\n    [animateOnce, threshold == null ? void 0 : threshold.y, appearCallback]\n  );\n  useSharedIntersectionObserver(ref, callback, {\n    threshold: thresholds,\n    rootMargin,\n    enabled: enabled ?? true\n  });\n}\nfunction calculatedIntersection(intersectionRect, boundingClientRect) {\n  if (boundingClientRect.height === 0)\n    return 0;\n  return intersectionRect.height / Math.min(boundingClientRect.height, safeWindow.innerHeight);\n}\nfunction isIntersectingWithThreshold({ boundingClientRect, intersectionRect, isIntersecting }, threshold) {\n  if (boundingClientRect.height === 0)\n    return isIntersecting;\n  return isIntersecting && calculatedIntersection(intersectionRect, boundingClientRect) >= threshold;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { forwardRef as forwardRef2 } from \"react\";\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar import_hoist_non_react_statics2 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React26 from \"react\";\n\n// ../../library/src/utils/events.ts\nfunction pointForEvent(event, customTarget = null) {\n  let target;\n  if (customTarget instanceof HTMLElement) {\n    target = customTarget;\n  }\n  if (!target && event.target instanceof HTMLElement) {\n    target = event.target;\n  }\n  if (!target) {\n    return { x: event.pageX, y: event.pageY };\n  }\n  if (\"webkitConvertPointFromPageToNode\" in safeWindow) {\n    let webkitPoint = new safeWindow.WebKitPoint(event.pageX, event.pageY);\n    webkitPoint = safeWindow.webkitConvertPointFromPageToNode(target, webkitPoint);\n    return { x: webkitPoint.x, y: webkitPoint.y };\n  }\n  const rect = target.getBoundingClientRect();\n  const width = parseFloat(target.style.width);\n  const height = parseFloat(target.style.height);\n  const scale = {\n    x: width ? width / rect.width : 1,\n    y: height ? height / rect.height : 1\n  };\n  const point = {\n    x: scale.x * (event.pageX - rect.left - target.clientLeft + target.scrollLeft),\n    y: scale.y * (event.pageY - rect.top - target.clientTop + target.scrollTop)\n  };\n  return point;\n}\n\n// ../../library/src/events/FramerEvent.ts\nvar FramerEvent = class {\n  /**\n   * @internal\n   */\n  constructor(originalEvent, session) {\n    this.originalEvent = originalEvent;\n    this.session = session;\n    /**\n     * @internal\n     */\n    __publicField(this, \"time\", Date.now());\n    /**\n     * @internal\n     */\n    __publicField(this, \"loopTime\", MainLoop.time);\n    /**\n     * @internal\n     */\n    __publicField(this, \"point\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"devicePoint\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"target\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"delta\");\n    const customTarget = session && session.startEvent && session.startEvent.target || originalEvent.target;\n    const eventLike = FramerEvent.eventLikeFromOriginalEvent(originalEvent);\n    this.point = pointForEvent(eventLike, customTarget);\n    const deviceTarget = session && session.originElement ? session.originElement : document.body;\n    this.devicePoint = pointForEvent(eventLike, deviceTarget);\n    this.target = originalEvent.target || null;\n    const lastEvent = session && session.lastEvent;\n    if (originalEvent instanceof WheelEvent) {\n      this.delta = { x: originalEvent.deltaX, y: originalEvent.deltaY };\n    } else if (lastEvent && this.devicePoint && lastEvent.devicePoint) {\n      this.delta = Point.subtract(this.devicePoint, lastEvent.devicePoint);\n    } else {\n      this.delta = { x: 0, y: 0 };\n    }\n  }\n  static eventLikeFromOriginalEvent(originalEvent) {\n    if (\"touches\" in originalEvent) {\n      let touches = originalEvent.touches;\n      if (!touches || !touches.length) {\n        if (originalEvent.changedTouches && originalEvent.changedTouches.length) {\n          touches = originalEvent.changedTouches;\n        }\n      }\n      const firstTouch = touches[0];\n      if (!touches || !firstTouch) {\n        return { pageX: 0, pageY: 0, target: null };\n      }\n      const pageX = firstTouch.clientX || firstTouch.screenX || firstTouch.pageX;\n      const pageY = firstTouch.clientY || firstTouch.screenY || firstTouch.pageY;\n      return {\n        pageX,\n        pageY,\n        target: originalEvent.target\n      };\n    }\n    return originalEvent;\n  }\n  /**\n   * @internal\n   */\n  velocity(t) {\n    return this.session ? this.session.velocity(t) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get offset() {\n    return this.session ? this.session.offset(this) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get isLeftMouseClick() {\n    if (environment.isTouch()) {\n      return void 0;\n    }\n    if (\"button\" in this.originalEvent && \"buttons\" in this.originalEvent && \"ctrlKey\" in this.originalEvent) {\n      return (this.originalEvent.button === 0 || this.originalEvent.buttons === 1) && !this.originalEvent.ctrlKey;\n    }\n    return false;\n  }\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React25 from \"react\";\n\n// ../../library/src/utils/math.ts\nvar clamp2 = (value, a, b) => {\n  const min = Math.min(a, b);\n  const max = Math.max(a, b);\n  if (value < min) {\n    value = min;\n  }\n  if (value > max) {\n    value = max;\n  }\n  return value;\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nimport { jsx as jsx17 } from \"react/jsx-runtime\";\nvar DraggingContext = /* @__PURE__ */ React25.createContext({ dragging: false });\nfunction WithDragging(Component18) {\n  const _WithDraggingHOC = class extends React25.Component {\n    constructor(props, defaultProps) {\n      super(props, defaultProps);\n      __publicField(this, \"state\", {\n        isDragging: false\n      });\n      __publicField(this, \"x\", Animatable(0));\n      __publicField(this, \"y\", Animatable(0));\n      __publicField(this, \"onChangePosition\", (change, transaction) => {\n        if (change.value === change.oldValue) {\n          return;\n        }\n        if (this.props.onMove) {\n          this.props.onMove(this.point, this);\n        }\n      });\n      __publicField(this, \"isMoving\", false);\n      __publicField(this, \"isAnimating\", false);\n      __publicField(this, \"directionLockAxis\", null);\n      __publicField(this, \"layerStartPoint\");\n      __publicField(this, \"correctedLayerStartPoint\");\n      __publicField(this, \"previousPoint\");\n      __publicField(this, \"_constraints\", null);\n      __publicField(this, \"animation\");\n      __publicField(this, \"panStart\", (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.isMoving = this.isAnimating;\n        this.stopAnimation();\n        this.resetdirectionLock();\n        this.layerStartPoint = this.point;\n        this.correctedLayerStartPoint = this.point;\n        if (this._constraints && this.props.bounce) {\n          this.correctedLayerStartPoint = this.constrainPosition(\n            this.correctedLayerStartPoint,\n            this._constraints,\n            1 / this.props.overdragScale\n          );\n        }\n        this.previousPoint = this.correctedLayerStartPoint;\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n        }\n        if (this.props.onDragSessionStart) {\n          this.props.onDragSessionStart(event, this);\n        }\n      });\n      __publicField(this, \"pan\", (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          directionLock,\n          overdragScale,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragStart,\n          onDragWillMove,\n          onDragDidMove,\n          onDragSessionMove\n        } = this.props;\n        if (!enabled) {\n          return;\n        }\n        let point = { ...this.previousPoint };\n        point.x += event.delta.x * speedX;\n        point.y += event.delta.y * speedY;\n        this.previousPoint = { ...point };\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, overdragScale);\n        }\n        if (directionLock) {\n          if (this.directionLockAxis === null) {\n            const offset = event.offset;\n            offset.x = offset.x * speedX;\n            offset.y = offset.y * speedY;\n            this.updatedirectionLock(offset);\n            return;\n          } else {\n            if (this.directionLockAxis === \"y\") {\n              point.x = this.layerStartPoint.x;\n            }\n            if (this.directionLockAxis === \"x\") {\n              point.y = this.layerStartPoint.y;\n            }\n          }\n        }\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n          this.isMoving = true;\n          if (onDragStart) {\n            onDragStart(event, this);\n          }\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n        if (onDragSessionMove) {\n          onDragSessionMove(event, this);\n        }\n      });\n      __publicField(this, \"panEnd\", (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.startAnimation(event);\n        const { onDragSessionEnd, onDragEnd } = this.props;\n        if (this.state.isDragging) {\n          if (onDragEnd) {\n            onDragEnd(event, this);\n          }\n        }\n        if (onDragSessionEnd) {\n          onDragSessionEnd(event, this);\n        }\n        if (this.state.isDragging) {\n          this.setState({ isDragging: false });\n        }\n        this.isMoving = this.isAnimating;\n      });\n      // Mouse Wheel\n      __publicField(this, \"mouseWheelStart\", (event) => {\n        this.correctedLayerStartPoint = this.point;\n        this.previousPoint = this.correctedLayerStartPoint;\n        this.stopAnimation();\n      });\n      __publicField(this, \"mouseWheel\", (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragWillMove,\n          onDragDidMove,\n          mouseWheel\n        } = this.props;\n        if (!mouseWheel || !enabled) {\n          return;\n        }\n        let point = { ...this.point };\n        point.x -= event.delta.x * speedX;\n        point.y -= event.delta.y * speedY;\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, 0, false);\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n      });\n      __publicField(this, \"mouseWheelEnd\", (event) => {\n      });\n      __publicField(this, \"onAnimationStep\", (axis, value) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        let delta = 0;\n        if (this.constraints) {\n          if (this.props.bounce) {\n            delta = value - this.getValue(axis);\n          } else {\n            const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n            if (axis === \"x\") {\n              delta = clamp2(value, minX, maxX) - this.getValue(axis);\n            }\n            if (axis === \"y\") {\n              delta = clamp2(value, minY, maxY) - this.getValue(axis);\n            }\n          }\n        } else {\n          delta = value - this.getValue(axis);\n        }\n        const updatePoint = this.point;\n        if (axis === \"x\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        if (axis === \"y\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        this.setPoint(updatePoint, axis);\n      });\n      __publicField(this, \"onAnimationStop\", (axis) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        if (!this.animation) {\n          return;\n        }\n        if (this.props.pixelAlign) {\n          const point = this.point;\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n          this.setPoint(point, axis);\n        }\n        if (this.animation.x.isFinished() && this.animation.y.isFinished()) {\n          return this.stopAnimation();\n        }\n      });\n      __publicField(this, \"stopAnimation\", () => {\n        this.isAnimating = false;\n        this.isMoving = false;\n        if (!this.animation) {\n          return;\n        }\n        this.animation.x.cancel();\n        this.animation.y.cancel();\n        if (this.props.onDragAnimationEnd) {\n          this.props.onDragAnimationEnd(this.animation, this);\n        }\n        this.animation = null;\n      });\n      const x = this.props.left;\n      const y = this.props.top;\n      if (!x) {\n        this.x = Animatable(0);\n      } else if (isAnimatable(x)) {\n        this.x = x;\n      } else {\n        this.x = Animatable(x);\n      }\n      if (!y) {\n        this.y = Animatable(0);\n      } else if (isAnimatable(y)) {\n        this.y = y;\n      } else {\n        this.y = Animatable(y);\n      }\n      this.x.onUpdate(this.onChangePosition);\n      this.y.onUpdate(this.onChangePosition);\n      const constraints = this.props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      if (this.props.left !== props.left && isFiniteNumber(props.left)) {\n        this.x.set(props.left);\n      }\n      if (this.props.top !== props.top && isFiniteNumber(props.top)) {\n        this.y.set(props.top);\n      }\n      const constraints = props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    get point() {\n      return { x: this.x.get(), y: this.y.get() };\n    }\n    setPoint(point, axis = null) {\n      switch (axis) {\n        case \"x\":\n          this.x.set(point.x);\n          break;\n        case \"y\":\n          this.y.set(point.y);\n          break;\n        case null:\n          this.x.set(point.x);\n          this.y.set(point.y);\n          break;\n      }\n    }\n    getValue(axis) {\n      switch (axis) {\n        case \"x\":\n          return this.x.get();\n        case \"y\":\n          return this.y.get();\n      }\n    }\n    get width() {\n      const width = this.props.width;\n      if (!width) {\n        return 100;\n      }\n      if (isAnimatable(width)) {\n        return width.get();\n      }\n      if (typeof width === \"string\") {\n        return parseFloat(width);\n      }\n      return width;\n    }\n    get height() {\n      const height = this.props.height;\n      if (!height) {\n        return 100;\n      }\n      if (isAnimatable(height)) {\n        return height.get();\n      }\n      if (typeof height === \"string\") {\n        return parseFloat(height);\n      }\n      return height;\n    }\n    get constraints() {\n      return this._constraints;\n    }\n    set constraints(value) {\n      if (value !== null && typeof value === \"object\") {\n        this._constraints = {\n          x: value.x || 0,\n          y: value.y || 0,\n          width: value.width || 0,\n          height: value.height || 0\n        };\n      } else {\n        this._constraints = null;\n      }\n      if (this._constraints) {\n        this.updateAnimationConstraints(this._constraints);\n      }\n    }\n    get constraintsOffset() {\n      if (!this.constraints) {\n        return { x: 0, y: 0 };\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const point = this.point;\n      const constrainedPoint = { x: clamp2(point.x, minX, maxX), y: clamp2(point.y, minY, maxY) };\n      const offset = { x: point.x - constrainedPoint.x, y: point.y - constrainedPoint.y };\n      return offset;\n    }\n    get isBeyondConstraints() {\n      const constraintsOffset = this.constraintsOffset;\n      if (constraintsOffset.x !== 0) {\n        return true;\n      }\n      if (constraintsOffset.y !== 0) {\n        return true;\n      }\n      return false;\n    }\n    clampAndScale(value, min, max, scale, scaleAllowed) {\n      if (!scaleAllowed) {\n        return clamp2(value, min, max);\n      }\n      if (value < min) {\n        value = min + (value - min) * scale;\n      }\n      if (value > max) {\n        value = max + (value - max) * scale;\n      }\n      return value;\n    }\n    calculateConstraints(bounds) {\n      if (!bounds) {\n        return { minX: Infinity, maxX: Infinity, minY: Infinity, maxY: Infinity };\n      }\n      if (bounds.width < this.width) {\n        bounds.width = this.width;\n      }\n      if (bounds.height < this.height) {\n        bounds.height = this.height;\n      }\n      const constraints = {\n        minX: Rect.minX(bounds),\n        maxX: Rect.maxX(bounds),\n        minY: Rect.minY(bounds),\n        maxY: Rect.maxY(bounds)\n      };\n      constraints.maxX -= this.width;\n      constraints.maxY -= this.height;\n      return constraints;\n    }\n    constrainPosition(proposedPoint, bounds, scale, overdrag = this.props.overdrag) {\n      const { maxX, maxY, minX, minY } = this.calculateConstraints(this._constraints);\n      const point = {\n        x: this.clampAndScale(proposedPoint.x, minX, maxX, scale, overdrag),\n        y: this.clampAndScale(proposedPoint.y, minY, maxY, scale, overdrag)\n      };\n      if (this.props.speedX === 0 || this.props.horizontal === false) {\n        point.x = proposedPoint.x;\n      }\n      if (this.props.speedY === 0 || this.props.vertical === false) {\n        point.y = proposedPoint.y;\n      }\n      return point;\n    }\n    /* private */\n    updatedirectionLock(correctedDelta) {\n      if (Math.abs(correctedDelta.y) > this.props.directionLockThreshold.y) {\n        this.directionLockAxis = \"y\";\n      } else if (Math.abs(correctedDelta.x) > this.props.directionLockThreshold.x) {\n        this.directionLockAxis = \"x\";\n      }\n      if (this.directionLockAxis !== null) {\n        if (this.props.onDragDirectionLockStart) {\n          this.props.onDragDirectionLockStart(this.directionLockAxis, this);\n        }\n      }\n    }\n    resetdirectionLock() {\n      this.directionLockAxis = null;\n    }\n    // Inertial scroll animation\n    setupAnimation() {\n      if (this.animation) {\n        return;\n      }\n      this.animation = { x: this.setupAnimationForAxis(\"x\"), y: this.setupAnimationForAxis(\"y\") };\n      this.updateAnimationConstraints(this._constraints);\n    }\n    setupAnimationForAxis(axis) {\n      const animator = new InertialScrollAnimator({\n        momentum: this.props.momentumOptions,\n        bounce: this.props.bounceOptions\n      });\n      const updateCallback = (value) => {\n        this.onAnimationStep(axis, value);\n      };\n      const doneCallback = () => {\n        this.onAnimationStop(axis);\n      };\n      return new MainLoopAnimationDriver(animator, updateCallback, doneCallback);\n    }\n    updateAnimationConstraints(constraints) {\n      if (!this.animation) {\n        return;\n      }\n      if (constraints) {\n        const { minX, minY, maxX, maxY } = this.calculateConstraints(constraints);\n        this.animation.x.animator.setLimits(minX, maxX);\n        this.animation.y.animator.setLimits(minY, maxY);\n      } else {\n        this.animation.x.animator.setLimits(-Infinity, Infinity);\n        this.animation.y.animator.setLimits(-Infinity, Infinity);\n      }\n    }\n    startAnimation(event) {\n      const { momentum, bounce, momentumVelocityMultiplier, speedX, speedY, overdrag, onDragAnimationStart } = this.props;\n      if (!(momentum || bounce)) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && momentum === false) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && this.state.isDragging === false) {\n        return;\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const startAnimationX = overdrag === true || this.point.x > minX && this.point.x < maxX;\n      const startAnimationY = overdrag === true || this.point.y > minY && this.point.y < maxY;\n      if (startAnimationX === startAnimationY && startAnimationY === false) {\n        return;\n      }\n      const velocity = event.velocity(0.1);\n      let velocityX = velocity.x * momentumVelocityMultiplier * speedX;\n      let velocityY = velocity.y * momentumVelocityMultiplier * speedY;\n      if (this.directionLockAxis === \"x\") {\n        velocityY = 0;\n      }\n      if (this.directionLockAxis === \"y\") {\n        velocityX = 0;\n      }\n      this.setupAnimation();\n      this.isAnimating = true;\n      this.isMoving = true;\n      if (!this.animation) {\n        return;\n      }\n      this.animation.x.animator.setState({ x: this.point.x, v: velocityX });\n      if (startAnimationX) {\n        this.animation.x.play();\n      }\n      this.animation.y.animator.setState({ x: this.point.y, v: velocityY });\n      if (startAnimationY) {\n        this.animation.y.play();\n      }\n      if (onDragAnimationStart) {\n        onDragAnimationStart(this.animation, this);\n      }\n    }\n    wrapHandler(ownHandler, originalHandler) {\n      if (!originalHandler) {\n        return ownHandler;\n      }\n      return (event) => {\n        ownHandler(event);\n        originalHandler(event);\n      };\n    }\n    render() {\n      const { onPanStart, onPan, onPanEnd, onMouseWheelStart, onMouseWheel, onMouseWheelEnd, ...attributes } = this.props;\n      const originalProps = { ...attributes };\n      Object.keys(_WithDraggingHOC.draggingDefaultProps).forEach((key7) => {\n        delete asRecord(originalProps)[key7];\n      });\n      originalProps.onPanStart = this.wrapHandler(this.panStart, onPanStart);\n      originalProps.onPan = this.wrapHandler(this.pan, onPan);\n      originalProps.onPanEnd = this.wrapHandler(this.panEnd, onPanEnd);\n      originalProps.onMouseWheelStart = this.wrapHandler(this.mouseWheelStart, onMouseWheelStart);\n      originalProps.onMouseWheel = this.wrapHandler(this.mouseWheel, onMouseWheel);\n      originalProps.onMouseWheelEnd = this.wrapHandler(this.mouseWheelEnd, onMouseWheelEnd);\n      originalProps.left = this.x;\n      originalProps.top = this.y;\n      return /* @__PURE__ */ jsx17(DraggingContext.Provider, { value: { dragging: this.state.isDragging }, children: /* @__PURE__ */ jsx17(Component18, { ...originalProps }) });\n    }\n  };\n  let WithDraggingHOC = _WithDraggingHOC;\n  __publicField(WithDraggingHOC, \"draggingDefaultProps\", {\n    momentum: true,\n    momentumOptions: { friction: 2.1, tolerance: 1 },\n    momentumVelocityMultiplier: 800,\n    speedX: 1,\n    speedY: 1,\n    bounce: true,\n    bounceOptions: { friction: 40, tension: 200, tolerance: 1 },\n    directionLock: false,\n    directionLockThreshold: { x: 10, y: 10 },\n    overdrag: true,\n    overdragScale: 0.5,\n    pixelAlign: true,\n    velocityTimeout: 100,\n    velocityScale: 890,\n    horizontal: true,\n    vertical: true,\n    enabled: true,\n    constraints: {},\n    mouseWheel: false\n  });\n  __publicField(WithDraggingHOC, \"defaultProps\", Object.assign(\n    {},\n    Component18.defaultProps,\n    _WithDraggingHOC.draggingDefaultProps\n  ));\n  const withDragging = WithDraggingHOC;\n  (0, import_hoist_non_react_statics.default)(withDragging, Component18);\n  return withDragging;\n}\n\n// ../../library/src/components/hoc/WithEvents.tsx\nimport { jsx as jsx18 } from \"react/jsx-runtime\";\nvar hoverProps = {\n  onMouseEnter: \"mouseenter\",\n  onMouseLeave: \"mouseleave\"\n};\nvar hoverEventKeys = /* @__PURE__ */ Object.keys(hoverProps);\nvar eventHandlerMapping = {\n  panstart: [\"onPanStart\"],\n  pan: [\"onPan\"],\n  panend: [\"onPanEnd\"],\n  tapstart: [\"onTapStart\", \"onMouseDown\"],\n  tap: [\"onTap\", \"onClick\"],\n  tapend: [\"onTapEnd\", \"onMouseUp\"],\n  mousewheelstart: [\"onMouseWheelStart\"],\n  mousewheel: [\"onMouseWheel\"],\n  mousewheelend: [\"onMouseWheelEnd\"]\n};\nvar tapEventKeys = /* @__PURE__ */ new Set([\"tapstart\", \"tap\", \"tapend\"]);\nfunction WithEvents(BaseComponent) {\n  var _a;\n  const withEvents = (_a = class extends React26.Component {\n    constructor() {\n      super(...arguments);\n      // This local variable is used to track if we should ignore a tap after a drag\n      // It's not in a state because we want to change it from the render function (so not cause a render)\n      __publicField(this, \"shouldCancelTap\", false);\n      __publicField(this, \"activeEventListeners\", /* @__PURE__ */ new Map());\n      __publicField(this, \"hasFramerEventListener\", false);\n      __publicField(this, \"component\", React26.createRef());\n    }\n    get element() {\n      return this.component.current && this.component.current.element;\n    }\n    componentDidMount() {\n      this.addEventListeners();\n    }\n    componentDidUpdate(prevProps) {\n      this.addEventListeners(prevProps);\n    }\n    componentWillUnmount() {\n      this.removeEventListeners();\n    }\n    addEventListeners(prevProps) {\n      if (this.element && !this.hasFramerEventListener) {\n        this.element.addEventListener(\"FramerEvent\", ({ detail }) => {\n          const type = detail.type;\n          const framerEvent = detail.event;\n          this.handleEvent(type, framerEvent);\n        });\n        hoverEventKeys.forEach((eventName) => this.addHoverEvent(eventName));\n        this.hasFramerEventListener = true;\n      } else if (this.element && prevProps) {\n        hoverEventKeys.forEach((eventName) => this.checkHoverEvent(eventName, prevProps));\n      } else if (!this.element) {\n        this.hasFramerEventListener = false;\n      }\n    }\n    removeEventListeners() {\n      hoverEventKeys.forEach((eventName) => this.removeHoverEvent(eventName));\n    }\n    addHoverEvent(eventName) {\n      const originalEventListener = this.props[eventName];\n      if (this.element && originalEventListener) {\n        const eventListener = (e) => {\n          const framerEvent = new FramerEvent(e);\n          originalEventListener(framerEvent);\n        };\n        this.activeEventListeners.set(eventName, eventListener);\n        const domEventName = hoverProps[eventName];\n        this.element.addEventListener(domEventName, eventListener);\n      }\n    }\n    removeHoverEvent(eventName) {\n      const eventListener = this.activeEventListeners.get(eventName);\n      if (this.element && eventListener) {\n        const domEventName = hoverProps[eventName];\n        this.element.removeEventListener(domEventName, eventListener);\n        this.activeEventListeners.delete(eventName);\n      }\n    }\n    checkHoverEvent(eventName, prevProps) {\n      if (prevProps[eventName] !== this.props[eventName]) {\n        this.removeHoverEvent(eventName);\n        this.addHoverEvent(eventName);\n      }\n    }\n    handleEvent(type, framerEvent) {\n      const eventListenerKeys = eventHandlerMapping[type];\n      if (!eventListenerKeys)\n        return;\n      eventListenerKeys.forEach((eventKey) => {\n        const eventListener = this.props[eventKey];\n        const cancelEvent = this.shouldCancelTap && tapEventKeys.has(eventKey);\n        if (eventListener && !cancelEvent) {\n          eventListener(framerEvent);\n        }\n      });\n    }\n    render() {\n      return /* @__PURE__ */ jsx18(DraggingContext.Consumer, { children: (value) => {\n        this.shouldCancelTap = value.dragging;\n        return /* @__PURE__ */ jsx18(BaseComponent, { ...this.props, ref: this.component });\n      } });\n    }\n  }, __publicField(_a, \"defaultProps\", Object.assign({}, BaseComponent.defaultProps)), _a);\n  (0, import_hoist_non_react_statics2.default)(withEvents, BaseComponent);\n  return withEvents;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nimport React27 from \"react\";\n\n// ../../library/src/data/ObservableObject.ts\nvar hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar $private = /* @__PURE__ */ Symbol(\"private\");\nvar ObservableObject = /* @__PURE__ */ (() => {\n  function ObservableObject2(initial = {}, makeAnimatables = false, observeAnimatables = true) {\n    const unproxiedState = {\n      [$private]: {\n        makeAnimatables,\n        observeAnimatables,\n        observers: new Observers(),\n        reset() {\n          for (const key7 in state) {\n            if (hasOwnProperty(state, key7)) {\n              const value = hasOwnProperty(initial, key7) ? asRecord(initial)[key7] : void 0;\n              if (value !== void 0) {\n                state[key7] = value;\n              } else {\n                delete state[key7];\n              }\n            }\n          }\n        },\n        transactions: /* @__PURE__ */ new Set()\n      }\n    };\n    const state = new Proxy(unproxiedState, sharedProxyHandler);\n    Object.assign(state, initial);\n    return state;\n  }\n  ObservableObject2.resetObject = (target) => {\n    return target[$private].reset();\n  };\n  ObservableObject2.addObserver = (target, observer) => {\n    return target[$private].observers.add(observer);\n  };\n  return ObservableObject2;\n})();\nvar ObservableObjectProxyHandler = class {\n  constructor() {\n    __publicField(this, \"set\", (target, key7, value, receiver) => {\n      if (key7 === $private) {\n        return false;\n      }\n      const privateObject = target[$private];\n      let animatable;\n      let rawValue;\n      if (isAnimatable(value)) {\n        animatable = value;\n        rawValue = animatable.get();\n      } else {\n        rawValue = value;\n      }\n      if (privateObject.makeAnimatables && typeof value !== \"function\" && typeof value !== \"object\" && !animatable) {\n        animatable = Animatable(value);\n      }\n      if (privateObject.observeAnimatables && animatable) {\n        const transactions = privateObject.transactions;\n        animatable.onUpdate({\n          update: (change, transaction) => {\n            if (transaction) {\n              transactions.add(transaction);\n            }\n            privateObject.observers.notify({ value: receiver }, transaction);\n          },\n          finish: (transaction) => {\n            if (transactions.delete(transaction)) {\n              privateObject.observers.finishTransaction(transaction);\n            }\n          }\n        });\n      }\n      let result = false;\n      let changed = true;\n      const targetValue = asRecord(target)[key7];\n      if (targetValue !== void 0) {\n        if (isAnimatable(targetValue)) {\n          changed = targetValue.get() !== rawValue;\n          targetValue.set(rawValue);\n        } else {\n          changed = targetValue !== rawValue;\n          asRecord(target)[key7] = rawValue;\n        }\n        const rawValueIsObject = rawValue !== null && typeof rawValue === \"object\";\n        if (Array.isArray(rawValue) || rawValueIsObject)\n          changed = true;\n        result = true;\n      } else {\n        if (animatable) {\n          value = animatable;\n        }\n        result = Reflect.set(target, key7, value);\n      }\n      if (changed) {\n        privateObject.observers.notify({ value: receiver });\n      }\n      return result;\n    });\n    __publicField(this, \"get\", (target, key7, receiver) => {\n      if (key7 === $private) {\n        return asRecord(target)[key7];\n      }\n      const value = Reflect.get(target, key7, receiver);\n      return typeof value === \"function\" ? value.bind(receiver) : value;\n    });\n  }\n  deleteProperty(target, key7) {\n    const result = Reflect.deleteProperty(target, key7);\n    target[$private].observers.notify({ value: target });\n    return result;\n  }\n  ownKeys(target) {\n    const keys3 = Reflect.ownKeys(target);\n    const privateIndex = keys3.indexOf($private);\n    if (privateIndex !== -1) {\n      keys3.splice(privateIndex, 1);\n    }\n    return keys3;\n  }\n  getOwnPropertyDescriptor(target, key7) {\n    if (key7 === $private) {\n      return void 0;\n    }\n    return Reflect.getOwnPropertyDescriptor(target, key7);\n  }\n};\nvar sharedProxyHandler = /* @__PURE__ */ new ObservableObjectProxyHandler();\n\n// ../../library/src/render/traits/Blending.ts\nfunction collectBlendingFromProps(node, style) {\n  if (!node.blendingMode || node.blendingMode === \"normal\")\n    return;\n  style.mixBlendMode = node.blendingMode;\n}\n\n// ../../library/src/render/traits/Opacity.ts\nvar key2 = \"opacity\";\nfunction withOpacity(target) {\n  return key2 in target;\n}\nfunction collectOpacityFromProps(props, style) {\n  if (!withOpacity(props))\n    return;\n  const opacity = Animatable.getNumber(props.opacity);\n  if (opacity === 1)\n    return;\n  style.opacity = opacity;\n}\n\n// ../../library/src/render/traits/Overflow.ts\nfunction collectOverflowFromProps(props, style) {\n  if (props.overflow) {\n    style.overflow = props.overflow;\n  }\n}\n\n// ../../library/src/render/traits/Radius.ts\nvar key3 = \"radius\";\nfunction hasRadius(props) {\n  return key3 in props;\n}\nfunction getRadiusValue(value) {\n  let num = Number(value);\n  if (typeof value === \"string\" && Number.isNaN(Number(num))) {\n    return value;\n  } else if (isAnimatable(value)) {\n    num = Animatable.getNumber(value);\n  }\n  return num ? `${num}px` : \"0\";\n}\nfunction hasRadiusValue(value) {\n  return value && value !== \"0\";\n}\nfunction collectRadiusFromProps(props, style) {\n  if (!hasRadius(props))\n    return;\n  const { radius } = props;\n  if (typeof radius === \"string\" || isAnimatable(radius) || isFiniteNumber(radius)) {\n    const radiusValue = getRadiusValue(radius);\n    if (hasRadiusValue(radiusValue)) {\n      style.borderTopLeftRadius = style.borderTopRightRadius = style.borderBottomRightRadius = style.borderBottomLeftRadius = radiusValue;\n    }\n  } else if (radius) {\n    const topLeft = getRadiusValue(radius.topLeft);\n    const topRight = getRadiusValue(radius.topRight);\n    const bottomRight = getRadiusValue(radius.bottomRight);\n    const bottomLeft = getRadiusValue(radius.bottomLeft);\n    if (hasRadiusValue(topLeft) || hasRadiusValue(topRight) || hasRadiusValue(bottomRight) || hasRadiusValue(bottomLeft)) {\n      style.borderTopLeftRadius = topLeft;\n      style.borderTopRightRadius = topRight;\n      style.borderBottomRightRadius = bottomRight;\n      style.borderBottomLeftRadius = bottomLeft;\n    }\n  }\n}\n\n// ../../library/src/render/traits/TextColor.ts\nfunction collectTextColorFromProps(props, style) {\n  const { color: color2 } = props;\n  if (typeof color2 === \"string\") {\n    style.color = color2;\n  } else if (Color.isColorObject(color2)) {\n    style.color = color2.initialValue || Color.toRgbString(color2);\n  }\n}\n\n// ../../library/src/render/types/Shadow.ts\nvar shadowKeys = [\"color\", \"x\", \"y\", \"blur\"];\nvar Shadow = {\n  is: (shadow) => {\n    return shadow && shadowKeys.every((key7) => key7 in shadow);\n  }\n};\nvar boxShadowKeys = [\"x\", \"y\", \"color\", \"inset\", \"blur\", \"spread\"];\nvar BoxShadow = {\n  is: (shadow) => {\n    return shadow && boxShadowKeys.every((key7) => key7 in shadow);\n  },\n  toCSS: (shadow) => {\n    const inset2 = shadow.inset ? \"inset \" : \"\";\n    return `${inset2}${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`;\n  }\n};\n\n// ../../library/src/render/style/shadow.tsx\nimport { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs5 } from \"react/jsx-runtime\";\nfunction shadowsAsFilter(shadows) {\n  const filters = [];\n  if (shadows && shadows.length) {\n    const dropShadows = shadows.map((shadowItem) => {\n      return `drop-shadow(${shadowItem.x}px ${shadowItem.y}px ${shadowItem.blur}px ${shadowItem.color})`;\n    });\n    filters.push(...dropShadows);\n  }\n  return filters;\n}\nfunction collectTextShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const textShadow = props.shadows.map((shadow) => {\n    return `${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.color}`;\n  }).join(\", \");\n  if (!textShadow)\n    return;\n  style.textShadow = textShadow;\n}\nfunction collectBoxShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const boxShadow = props.shadows.map((shadowItem) => BoxShadow.toCSS(shadowItem)).join(\", \");\n  if (!boxShadow)\n    return;\n  style.boxShadow = boxShadow;\n}\nfunction shadowForShape(boxShadows, rect, shapeId, fillAlpha, strokeAlpha, strokeWidth, strokeClipId, svgStrokeAttributes) {\n  const definition = [];\n  let outsetElement = null;\n  let insetElement = null;\n  let maskElement = null;\n  const needsStrokeClip = false;\n  const shadows = [];\n  const insetShadows = [];\n  const svgShadowClass = \"svg-shadow\";\n  const svgShadowProps = RenderTarget.current() === RenderTarget.canvas ? { className: svgShadowClass } : {};\n  for (const shadow of boxShadows) {\n    shadow.inset ? insetShadows.push(shadow) : shadows.push(shadow);\n  }\n  if (shadows.length > 0) {\n    shadows.reverse();\n    const outsideShadowId = shapeId.add(\"_shadow_out\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowRects = [normalizedFrame];\n    for (const shadow of shadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowRects.push(shadowFrame);\n    }\n    let maxBlur = 0;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = shadows.length; i < il; i++) {\n      const shadow = shadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = outerShadowElements(shapeId, shadow, i);\n      maxBlur = Math.max(maxBlur, shadow.blur);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    let expandStrokeWidth = strokeWidth;\n    if (!isFiniteNumber(expandStrokeWidth))\n      expandStrokeWidth = 0;\n    let miter = svgStrokeAttributes.strokeMiterlimit;\n    if (!isFiniteNumber(miter))\n      miter = 4;\n    let shadowRect = Rect.merge(...shadowRects);\n    shadowRect = Rect.inflate(shadowRect, (expandStrokeWidth * miter / 2 + maxBlur) * 1.1);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const svgRect = {\n      x: `${filterX.toFixed(1)}%`,\n      y: `${filterY.toFixed(1)}%`,\n      width: `${filterWidth.toFixed(1)}%`,\n      height: `${filterHeight.toFixed(1)}%`\n    };\n    definition.push(\n      /* @__PURE__ */ jsxs5(\n        \"filter\",\n        {\n          id: outsideShadowId.id,\n          filterUnits: \"objectBoundingBox\",\n          ...svgRect,\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            shadows.length > 1 ? /* @__PURE__ */ jsx19(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        outsideShadowId.id\n      )\n    );\n    const maskId = shapeId.add(\"mask\");\n    maskElement = /* @__PURE__ */ jsxs5(\"mask\", { id: maskId.id, ...svgRect, children: [\n      /* @__PURE__ */ jsx19(\"rect\", { ...svgRect, fill: \"white\" }),\n      /* @__PURE__ */ jsx19(\"use\", { href: shapeId.link, fill: \"black\" })\n    ] });\n    outsetElement = /* @__PURE__ */ jsx19(\"g\", { filter: outsideShadowId.urlLink, ...svgShadowProps, mask: maskId.urlLink, children: /* @__PURE__ */ jsx19(\n      \"use\",\n      {\n        ...svgStrokeAttributes,\n        fill: \"black\",\n        fillOpacity: fillAlpha <= 0 ? 0 : 1,\n        stroke: \"black\",\n        strokeOpacity: strokeAlpha <= 0 ? 0 : 1,\n        strokeWidth: strokeAlpha > 0 ? strokeWidth : 0,\n        xlinkHref: shapeId.link,\n        clipPath: strokeClipId.urlLink\n      }\n    ) });\n  }\n  if (insetShadows.length) {\n    insetShadows.reverse();\n    const insideShadowId = shapeId.add(\"_shadow_inside\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowFrames = [normalizedFrame];\n    for (const shadow of insetShadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowFrames.push(shadowFrame);\n    }\n    const shadowRect = Rect.merge(...shadowFrames);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = insetShadows.length; i < il; i++) {\n      const shadow = insetShadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = innerShadowElements(shapeId, shadow, i);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    definition.push(\n      /* @__PURE__ */ jsxs5(\n        \"filter\",\n        {\n          id: insideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            insetShadows.length > 1 ? /* @__PURE__ */ jsx19(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        insideShadowId.id\n      )\n    );\n    let clipPath;\n    if (needsStrokeClip) {\n      clipPath = strokeClipId.urlLink;\n    }\n    insetElement = /* @__PURE__ */ jsx19(\n      \"use\",\n      {\n        fill: \"black\",\n        fillOpacity: \"1\",\n        filter: insideShadowId.urlLink,\n        xlinkHref: shapeId.link,\n        clipPath,\n        ...svgShadowProps\n      }\n    );\n  }\n  return { definition, outsetElement, insetElement, needsStrokeClip, maskElement };\n}\nfunction outerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_outer_shadow\" + index);\n  const offsetResultId = shadowKey.add(\"offset\").id;\n  const blurResultId = shadowKey.add(\"blur\").id;\n  const matrixResultId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ jsx19(\n    OuterShadowFilterElements,\n    {\n      shadow,\n      blurId: blurResultId,\n      offsetId: offsetResultId,\n      matrixId: matrixResultId\n    },\n    shadowKey.id + \"-filters\"\n  );\n  const mergeElement = /* @__PURE__ */ jsx19(\"feMergeNode\", { in: matrixResultId }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar OuterShadowFilterElements = (props) => {\n  const { shadow, blurId, offsetId, matrixId } = props;\n  const color2 = shadow.color;\n  const rgb = ConvertColor.toRgb(color2);\n  const r = roundedNumberString(rgb.r / 255, 3);\n  const g = roundedNumberString(rgb.g / 255, 3);\n  const b = roundedNumberString(rgb.b / 255, 3);\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ jsxs5(Fragment5, { children: [\n    /* @__PURE__ */ jsx19(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: \"SourceAlpha\", result: offsetId }),\n    /* @__PURE__ */ jsx19(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: offsetId, result: blurId }),\n    /* @__PURE__ */ jsx19(\n      \"feColorMatrix\",\n      {\n        colorInterpolationFilters: \"sRGB\",\n        values: matrixValues,\n        type: \"matrix\",\n        in: blurId,\n        result: matrixId\n      }\n    )\n  ] });\n};\nfunction innerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_inside_shadow\" + index);\n  const blurId = shadowKey.add(\"blur\").id;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const compositeId = shadowKey.add(\"composite\").id;\n  const matrixId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ jsx19(\n    InnerShadowFilterElements,\n    {\n      shadow,\n      blurId,\n      offsetId,\n      compositeId,\n      matrixId\n    },\n    shadowKey.id + \"-filters\"\n  );\n  const mergeElement = /* @__PURE__ */ jsx19(\"feMergeNode\", { in: matrixId }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar InnerShadowFilterElements = (props) => {\n  const { shadow, blurId, offsetId, compositeId, matrixId } = props;\n  const color2 = shadow.color;\n  const rgb = ConvertColor.toRgb(color2);\n  const r = rgb.r / 255;\n  const g = rgb.g / 255;\n  const b = rgb.b / 255;\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ jsxs5(Fragment5, { children: [\n    /* @__PURE__ */ jsx19(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: \"SourceAlpha\", result: blurId }),\n    /* @__PURE__ */ jsx19(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: blurId, result: offsetId }),\n    /* @__PURE__ */ jsx19(\"feComposite\", { in: offsetId, in2: \"SourceAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\", result: compositeId }),\n    /* @__PURE__ */ jsx19(\n      \"feColorMatrix\",\n      {\n        colorInterpolationFilters: \"sRGB\",\n        values: matrixValues,\n        type: \"matrix\",\n        in: compositeId,\n        result: matrixId\n      }\n    )\n  ] });\n};\nfunction calcMaxRealisticShadowBlur(distance2, focus) {\n  return interpolate([0, 0.5, 1], [distance2 * 5, distance2, 0])(focus);\n}\nvar maxSpread = 5;\nfunction calcRealisticShadowSpread(diffusion) {\n  return mix(-maxSpread, 0, diffusion);\n}\nfunction localShadowFrame(shadow, frame2, isSVG = false) {\n  if (!isSVG && asRecord(shadow)[\"inset\"])\n    return null;\n  let growth = shadow.blur;\n  let minX;\n  let maxX;\n  let minY;\n  let maxY;\n  if (isSVG) {\n    minX = -Math.abs(shadow.x) - growth;\n    maxX = Math.abs(shadow.x) + frame2.width + growth;\n    minY = -Math.abs(shadow.y) - growth;\n    maxY = Math.abs(shadow.y) + frame2.height + growth;\n  } else if (BoxShadow.is(shadow) && shadow.type === \"realistic\") {\n    growth = \"focus\" in shadow && \"diffusion\" in shadow ? calcMaxRealisticShadowBlur(distance(shadow.x, shadow.y), shadow.focus) + calcRealisticShadowSpread(shadow.diffusion) : 0;\n    if (shadow.x >= 0) {\n      minX = 0 - growth;\n      maxX = shadow.x + frame2.width + growth;\n    } else {\n      minX = shadow.x - growth;\n      maxX = frame2.width + growth;\n    }\n    if (shadow.y >= 0) {\n      minY = 0 - growth;\n      maxY = shadow.y + frame2.height + growth;\n    } else {\n      minY = shadow.y - growth;\n      maxY = frame2.height + growth;\n    }\n  } else {\n    if (\"spread\" in shadow) {\n      growth += shadow.spread;\n    }\n    minX = shadow.x - growth;\n    maxX = shadow.x + frame2.width + growth;\n    minY = shadow.y - growth;\n    maxY = shadow.y + frame2.height + growth;\n  }\n  if (maxX <= minX || maxY <= minY)\n    return null;\n  return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\n// ../../library/src/render/utils/filtersForNode.ts\nfunction collectLayerFilters(props, style) {\n  const filters = [];\n  if (isFiniteNumber(props.brightness)) {\n    filters.push(`brightness(${props.brightness / 100})`);\n  }\n  if (isFiniteNumber(props.contrast)) {\n    filters.push(`contrast(${props.contrast / 100})`);\n  }\n  if (isFiniteNumber(props.grayscale)) {\n    filters.push(`grayscale(${props.grayscale / 100})`);\n  }\n  if (isFiniteNumber(props.hueRotate)) {\n    filters.push(`hue-rotate(${props.hueRotate}deg)`);\n  }\n  if (isFiniteNumber(props.invert)) {\n    filters.push(`invert(${props.invert / 100})`);\n  }\n  if (isFiniteNumber(props.saturate)) {\n    filters.push(`saturate(${props.saturate / 100})`);\n  }\n  if (isFiniteNumber(props.sepia)) {\n    filters.push(`sepia(${props.sepia / 100})`);\n  }\n  if (isFiniteNumber(props.blur)) {\n    filters.push(`blur(${props.blur}px)`);\n  }\n  if (props.dropShadows) {\n    filters.push(...shadowsAsFilter(props.dropShadows));\n  }\n  if (filters.length === 0)\n    return;\n  style.filter = style.WebkitFilter = filters.join(\" \");\n}\nfunction collectBackgroundFilters(props, style) {\n  if (isFiniteNumber(props.backgroundBlur)) {\n    style.backdropFilter = style.WebkitBackdropFilter = `blur(${props.backgroundBlur}px)`;\n  }\n}\nfunction collectFiltersFromProps(props, style) {\n  collectBackgroundFilters(props, style);\n  collectLayerFilters(props, style);\n}\n\n// ../../library/src/render/style/collectVisualStyleFromProps.ts\nfunction collectVisualStyleFromProps(props, style, isTextNode = false) {\n  collectBackgroundFromProps(props, style);\n  collectRadiusFromProps(props, style);\n  collectFiltersFromProps(props, style);\n  collectBlendingFromProps(props, style);\n  collectOverflowFromProps(props, style);\n  collectOpacityFromProps(props, style);\n  collectTextColorFromProps(props, style);\n  if (isTextNode) {\n    collectTextShadowsForProps(props, style);\n  } else {\n    collectBoxShadowsForProps(props, style);\n  }\n}\n\n// ../../library/src/render/traits/Transform.ts\nvar getNumber = /* @__PURE__ */ (() => Animatable.getNumber)();\nvar transformDefaults = {\n  z: 0,\n  rotation: 0,\n  rotationX: 0,\n  rotationY: 0,\n  rotationZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0\n};\nfunction getRotation(rotation, rotate) {\n  if (typeof rotate === \"string\") {\n    rotate = parseFloat(rotate);\n  }\n  return isFiniteNumber(rotate) ? rotate : getNumber(rotation);\n}\nfunction collectTransformFromProps(props, rect, style) {\n  const motionStyle = style;\n  const x = typeof rect.x === \"number\" ? `${rect.x}px` : rect.x;\n  const y = typeof rect.y === \"number\" ? `${rect.y}px` : rect.y;\n  const z = getNumber(props.z);\n  const scaleZ = getNumber(props.scaleZ);\n  const originZ = getNumber(props.originZ);\n  const rotationZ = getRotation(props.rotationZ, resolveMotionValue(motionStyle.rotateZ));\n  const rotationX = getRotation(props.rotationX, resolveMotionValue(motionStyle.rotateX));\n  const rotationY = getRotation(props.rotationY, resolveMotionValue(motionStyle.rotateY));\n  const scale = getNumber(props.scale);\n  const scaleX = getNumber(props.scaleX);\n  const scaleY = getNumber(props.scaleY);\n  const skew = getNumber(props.skew);\n  const skewX = getNumber(props.skewX);\n  const skewY = getNumber(props.skewY);\n  const rotation = getRotation(props.rotation, resolveMotionValue(motionStyle.rotate));\n  const force3d = RenderEnvironment.target === RenderTarget.export;\n  if (force3d || z !== 0 || scaleZ !== 1 || originZ !== 0 || rotationZ !== 0 || rotationX !== 0 || rotationY !== 0) {\n    style.transform = `\n            ${`translate3d(${x}, ${y}, ${z}px)`}\n            scale3d(${scaleX * scale}, ${scaleY * scale}, ${scaleZ})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            translateZ(${originZ}px)\n            rotateX(${rotationX}deg)\n            rotateY(${rotationY}deg)\n            rotateZ(${(rotation + rotationZ).toFixed(4)}deg)\n            translateZ(${-originZ}px)`;\n  } else {\n    style.transform = `\n            ${`translate(${x}, ${y})`}\n            scale(${scaleX * scale}, ${scaleY * scale})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            rotate(${rotation.toFixed(4)}deg)`;\n  }\n  const transformOrigin = `${getNumber(props.originX) * 100}% ${getNumber(props.originY) * 100}%`;\n  style.transformOrigin = transformOrigin;\n  style.WebkitTransformOrigin = transformOrigin;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nimport { jsx as jsx20, jsxs as jsxs6 } from \"react/jsx-runtime\";\nfunction cssBackgroundSize(size) {\n  switch (size) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"100% 100%\";\n    default:\n      return \"cover\";\n  }\n}\nfunction collectBackgroundImageFromProps(props, style) {\n  const image = backgroundImageFromProps(props);\n  if (image) {\n    style.backgroundImage = `url(\"${image.src}\")`;\n    style.backgroundSize = cssBackgroundSize(image.fit);\n    style.backgroundRepeat = \"no-repeat\";\n    style.backgroundPosition = \"center\";\n  }\n}\nfunction toPixelString(value) {\n  return isFiniteNumber(value) ? `${value}px` : value;\n}\nfunction applyLayoutProp(style, props, key7) {\n  if (props[key7] !== void 0) {\n    const value = Animatable.get(props[key7], void 0);\n    asRecord(style)[key7] = toPixelString(value);\n  }\n}\nvar DeprecatedFrame = /* @__PURE__ */ (() => {\n  const _DeprecatedFrameInner = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"element\", null);\n      __publicField(this, \"imageDidChange\", false);\n      __publicField(this, \"state\", {\n        size: null\n      });\n      __publicField(this, \"updateStyle\", () => {\n        if (!this.element) {\n          return;\n        }\n        Object.assign(this.element.style, this.getStyle());\n      });\n      __publicField(this, \"setElement\", (element) => {\n        this.element = element;\n        this.setLayerElement(element);\n      });\n      // XXX internal state\n      __publicField(this, \"propsObserver\");\n      __publicField(this, \"propsObserverCancel\");\n      __publicField(this, \"sizeObserver\");\n      __publicField(this, \"sizeObserverCancel\");\n      __publicField(this, \"onPropsChange\", (props) => {\n        const rect = _DeprecatedFrameInner.rect(Animatable.objectToValues(props.value));\n        if (this.state.size && isAnimatable(this.state.size.width) && isAnimatable(props.value.width)) {\n          this.state.size.width.set(rect.width);\n        }\n        if (this.state.size && isAnimatable(this.state.size.height) && isAnimatable(props.value.height)) {\n          this.state.size.height.set(rect.height);\n        }\n        this.updateStyle();\n      });\n      __publicField(this, \"onSizeChange\", () => {\n        this.updateStyle();\n      });\n    }\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? {\n        sizing: props.parentSize,\n        positioning: props.parentSize,\n        viewport: null\n      } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, true);\n    }\n    get rect() {\n      return _DeprecatedFrameInner.rect(this.props);\n    }\n    static getDerivedStateFromProps(nextProps, prevState) {\n      const size = _DeprecatedFrameInner.updatedSize(nextProps, prevState);\n      const { target } = RenderEnvironment;\n      const nextBackgroundImageSrc = nextProps.background && BackgroundImage.isImageObject(nextProps.background) ? nextProps.background.src : null;\n      if (nextBackgroundImageSrc) {\n        return {\n          size\n        };\n      }\n      if (prevState.size) {\n        if (target === RenderTarget.preview) {\n          return null;\n        }\n        if (prevState.size.width === size.width && prevState.size.height === size.height) {\n          return null;\n        }\n      }\n      return {\n        size\n      };\n    }\n    static updatedSize(props, state) {\n      const rect = _DeprecatedFrameInner.rect(props);\n      let size = state.size;\n      const newSize = { width: rect.width, height: rect.height };\n      const { target } = RenderEnvironment;\n      if (!size) {\n        if (target === RenderTarget.preview) {\n          size = ObservableObject(newSize, true);\n        } else {\n          size = newSize;\n        }\n      } else {\n        if (isAnimatable(size.width) && isAnimatable(size.height)) {\n          size.width.set(newSize.width);\n          size.height.set(newSize.height);\n        } else {\n          size = newSize;\n        }\n      }\n      return size;\n    }\n    getStyle() {\n      const rect = this.rect;\n      const style = {\n        display: \"block\",\n        position: \"absolute\",\n        width: `${rect.width}px`,\n        height: `${rect.height}px`,\n        pointerEvents: void 0,\n        // TODO: this should be \"none\" for non-event consuming instances, for performance.\n        userSelect: \"none\"\n      };\n      let left = Animatable.get(this.props.left, void 0);\n      let top = Animatable.get(this.props.top, void 0);\n      Object.assign(style, this.props._initialStyle);\n      const hasParentSize = this.context.parentSize !== 1 /* Disabled */;\n      const perspective = Animatable.get(this.props.perspective, void 0);\n      style.perspective = perspective;\n      style.WebkitPerspective = perspective;\n      let backfaceVisibility = void 0;\n      const backfaceVisible = Animatable.get(this.props.backfaceVisible, void 0);\n      if (backfaceVisible === true) {\n        backfaceVisibility = \"visible\";\n      } else if (backfaceVisible === false) {\n        backfaceVisibility = \"hidden\";\n      }\n      style.backfaceVisibility = backfaceVisibility;\n      style.WebkitBackfaceVisibility = backfaceVisibility;\n      const preserve3d = Animatable.get(this.props.preserve3d, void 0);\n      if (preserve3d === true) {\n        style.transformStyle = \"preserve-3d\";\n      } else if (preserve3d === false) {\n        style.transformStyle = \"flat\";\n      }\n      if (!hasParentSize) {\n        applyLayoutProp(style, this.props, \"right\");\n        applyLayoutProp(style, this.props, \"bottom\");\n        const width = Animatable.get(this.props.width, void 0);\n        const stringWidth = toPixelString(width);\n        const height = Animatable.get(this.props.height, void 0);\n        const stringHeight = toPixelString(height);\n        if (typeof left === \"string\" && left.endsWith(\"%\") && this.props.right === null) {\n          left = `calc(${left} - calc(${stringWidth}} / 2))`;\n          style.width = stringWidth;\n        }\n        if (typeof top === \"string\" && top.endsWith(\"%\") && this.props.bottom === null) {\n          top = `calc(${top} - calc(${stringHeight} / 2))`;\n          style.height = stringHeight;\n        }\n        if (top !== void 0 && style.bottom !== void 0) {\n          style.height = void 0;\n          top = toPixelString(Animatable.get(this.props.top, void 0));\n        } else {\n          style.height = stringHeight;\n        }\n        if (left !== void 0 && style.right !== void 0) {\n          style.width = void 0;\n          left = toPixelString(Animatable.get(this.props.left, void 0));\n        } else {\n          style.width = stringWidth;\n        }\n      }\n      const transformRect = { ...rect };\n      if (typeof left !== \"undefined\") {\n        transformRect.x = left;\n      }\n      if (typeof top !== \"undefined\") {\n        transformRect.y = top;\n      }\n      collectTransformFromProps(this.props, transformRect, style);\n      collectVisualStyleFromProps(this.props, style);\n      collectBackgroundImageFromProps(this.props, style);\n      Layer.applyWillChange(this.props, style, false);\n      if (this.props.style) {\n        Object.assign(style, this.props.style);\n      }\n      return style;\n    }\n    componentDidMount() {\n      const { target } = RenderEnvironment;\n      if (target === RenderTarget.preview) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentDidUpdate() {\n      const { target } = RenderEnvironment;\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      if (target === RenderTarget.preview) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentWillUnmount() {\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.propsObserverCancel = void 0;\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      this.sizeObserverCancel = void 0;\n    }\n    render() {\n      countNodeRender();\n      const { visible, id, className: className2 } = this.props;\n      if (!visible) {\n        return null;\n      }\n      const style = this.getStyle();\n      const rect = this.rect;\n      const parentSize = { width: rect.width, height: rect.height };\n      return /* @__PURE__ */ jsxs6(\"div\", { id, style, ref: this.setElement, className: className2, children: [\n        /* @__PURE__ */ jsx20(ProvideParentSize, { parentSize, children: this.layoutChildren() }),\n        /* @__PURE__ */ jsx20(Border, { ...this.props })\n      ] });\n    }\n    layoutChildren() {\n      const _forwardedOverrides = this.props._forwardedOverrides;\n      let children = React27.Children.map(this.props.children, (child) => {\n        if (isConstraintSupportingChild(child)) {\n          return React27.cloneElement(child, {\n            parentSize: this.state.size,\n            _forwardedOverrides\n          });\n        } else if (_forwardedOverrides && child) {\n          return React27.cloneElement(child, { _forwardedOverrides });\n        } else {\n          return child;\n        }\n      });\n      if (children && children.length === 1 && typeof children[0] === \"string\") {\n        children = [/* @__PURE__ */ jsx20(Center, { children }, \"0\")];\n      }\n      return children;\n    }\n  };\n  let DeprecatedFrameInner = _DeprecatedFrameInner;\n  __publicField(DeprecatedFrameInner, \"supportsConstraints\", true);\n  __publicField(DeprecatedFrameInner, \"defaultFrameSpecificProps\", {\n    ...constraintDefaults,\n    ...transformDefaults,\n    opacity: 1,\n    background: Color(\"rgba(0, 170, 255, 0.3)\"),\n    visible: true,\n    borderWidth: 0,\n    borderColor: \"#222\",\n    borderStyle: \"solid\"\n  });\n  __publicField(DeprecatedFrameInner, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._DeprecatedFrameInner.defaultFrameSpecificProps\n  });\n  DeprecatedFrameInner.contextType = ConstraintsContext;\n  return DeprecatedFrameInner;\n})();\nfunction Center(props) {\n  const style = Object.assign(\n    {},\n    {\n      height: \"100%\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      fontFamily: \"Helvetica\"\n    },\n    props.style || {}\n  );\n  return /* @__PURE__ */ jsx20(\"div\", { style, children: props.children });\n}\n\n// ../../library/src/render/presentation/Frame/isDeprecatedFrameProps.ts\nvar frameWithMotionPropsFields = [\n  \"_border\",\n  \"_constraints\",\n  \"animate\",\n  \"initial\",\n  \"variants\",\n  \"transition\",\n  \"inherit\",\n  \"center\",\n  \"initial\",\n  \"transformTemplate\",\n  \"animate\",\n  \"variants\",\n  \"transition\",\n  \"onUpdate\",\n  \"onAnimationComplete\",\n  \"onPanSessionStart\",\n  \"onTapCancel\",\n  \"whileTap\",\n  \"whileHover\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"drag\",\n  \"dragDirectionLock\",\n  \"dragPropagation\",\n  \"dragConstraints\",\n  \"dragElastic\",\n  \"dragMomentum\",\n  \"dragTransition\",\n  \"onDragStart\",\n  \"onDragEnd\",\n  \"onDrag\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"x\",\n  \"y\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"position\",\n  \"border\",\n  \"borderRadius\",\n  \"shadow\",\n  \"size\"\n];\nvar deprecatedFramePropsFields = [\n  \"autoSize\",\n  \"aspectRatio\",\n  \"borderWidth\",\n  \"borderStyle\",\n  \"borderColor\",\n  \"centerX\",\n  \"centerY\"\n];\nfunction isDeprecatedFrameProps(props) {\n  let field;\n  for (const propKey in props) {\n    if (isAnimatable(props[propKey]))\n      return true;\n  }\n  for (field of frameWithMotionPropsFields) {\n    if (props.hasOwnProperty(field))\n      return false;\n  }\n  for (field of deprecatedFramePropsFields) {\n    if (props.hasOwnProperty(field))\n      return true;\n  }\n  return false;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { jsx as jsx21 } from \"react/jsx-runtime\";\nvar DeprecatedFrameWithEvents = /* @__PURE__ */ WithEvents(DeprecatedFrame);\nvar Frame = /* @__PURE__ */ (() => {\n  const FrameInner = forwardRef2(function FrameInner2(props, ref) {\n    const parentSize = useParentSize();\n    if (isDeprecatedFrameProps(props)) {\n      const currentParentSize = props.parentSize || deprecatedParentSize(parentSize);\n      return /* @__PURE__ */ jsx21(DeprecatedFrameWithEvents, { ...props, parentSize: currentParentSize });\n    }\n    return /* @__PURE__ */ jsx21(FrameWithMotion, { ...props, ref });\n  });\n  FrameInner[\"displayName\"] = \"Frame\";\n  return FrameInner;\n})();\n\n// ../../library/src/components/AnimateLayout/SharedLayoutTree.tsx\nimport React28, { Component as Component5 } from \"react\";\nimport { jsx as jsx22 } from \"react/jsx-runtime\";\nvar LayoutTree = class extends Component5 {\n  constructor() {\n    super(...arguments);\n    /**\n     * SharedLayoutTrees need to reset the projections styles previously applied\n     * on their boxes if they are becoming lead but not animating.\n     */\n    __publicField(this, \"layoutMaybeMutated\");\n    /**\n     * A list of projection nodes in the tree\n     */\n    __publicField(this, \"projectionNodes\", /* @__PURE__ */ new Map());\n    /**\n     * The projection node with the smallest depth in the tree's children.\n     */\n    __publicField(this, \"rootProjectionNode\");\n    /**\n     * When a tree is tagged as being removed, either by usePresence, or by\n     * Navigation, we set it on `this` in shouldComponentUpdate so that it's\n     * accessible by SharedLayoutRoot before the LayoutTree has updated.\n     */\n    __publicField(this, \"isExiting\");\n    __publicField(this, \"shouldPreserveFollowOpacity\", (child) => {\n      return child.options.layoutId === TREE_ROOT_ID && !this.props.isExiting;\n    });\n    __publicField(this, \"switchLayoutGroupContext\", {\n      register: (child) => this.addChild(child),\n      deregister: (child) => this.removeChild(child),\n      // Configs to use for the initial promotion on mount in Motion\n      transition: this.props.isLead !== void 0 && this.props.animatesLayout ? this.props.transition : void 0,\n      shouldPreserveFollowOpacity: this.shouldPreserveFollowOpacity\n    });\n  }\n  componentDidMount() {\n    if (this.props.isLead) {\n      this.props.sharedLayoutContext.initLead(this, !!this.props.animatesLayout);\n    }\n  }\n  shouldComponentUpdate(nextProps) {\n    const { isLead, isExiting, isOverlayed, animatesLayout, transition, sharedLayoutContext } = nextProps;\n    this.isExiting = isExiting;\n    if (isLead === void 0)\n      return true;\n    const hasBecomeLead = !this.props.isLead && !!isLead;\n    const hasExitBeenCancelled = this.props.isExiting && !isExiting;\n    const shouldPromote = hasBecomeLead || hasExitBeenCancelled;\n    const shouldDemote = !!this.props.isLead && !isLead;\n    const overlayChanged = this.props.isOverlayed !== isOverlayed;\n    if (shouldPromote || shouldDemote) {\n      this.projectionNodes.forEach((projection) => projection == null ? void 0 : projection.willUpdate());\n    }\n    if (shouldPromote) {\n      sharedLayoutContext.schedulePromoteTree(this, transition, !!animatesLayout);\n    } else if (overlayChanged) {\n      sharedLayoutContext.scheduleProjectionDidUpdate();\n    }\n    return !!shouldPromote && !!animatesLayout;\n  }\n  addChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.set(layoutId, child);\n      this.setRootChild(child);\n    }\n  }\n  /**\n   * As children are added, make sure that `this.rootProjectionNode` is always the\n   * child with the smallest depth.\n   */\n  setRootChild(child) {\n    if (!this.rootProjectionNode)\n      return this.rootProjectionNode = child;\n    this.rootProjectionNode = this.rootProjectionNode.depth < child.depth ? this.rootProjectionNode : child;\n  }\n  removeChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.delete(layoutId);\n    }\n  }\n  render() {\n    return /* @__PURE__ */ jsx22(SwitchLayoutGroupContext.Provider, { value: this.switchLayoutGroupContext, children: this.props.children });\n  }\n};\nvar SharedLayoutTree = (props) => {\n  const sharedLayoutContext = React28.useContext(SharedLayoutContext);\n  return /* @__PURE__ */ jsx22(LayoutTree, { ...props, sharedLayoutContext });\n};\n\n// ../../library/src/components/NavigationContainerContext.tsx\nimport React29, { useContext as useContext7 } from \"react\";\nvar NavigationContainerContext = /* @__PURE__ */ React29.createContext(true);\nfunction useIsInCurrentNavigationTarget() {\n  const isInCurrentNavigationTarget = useContext7(NavigationContainerContext);\n  return isInCurrentNavigationTarget;\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { createContext as createContext2, useCallback as useCallback5, useContext as useContext8, useEffect as useEffect10, useRef as useRef10 } from \"react\";\n\n// ../../library/src/components/utils/useMap.ts\nfunction newMap() {\n  return /* @__PURE__ */ new Map();\n}\nfunction useMap() {\n  return useConstant(newMap);\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { jsx as jsx23 } from \"react/jsx-runtime\";\nvar NavigationTargetContext = /* @__PURE__ */ createContext2({ register: () => {\n}, deregister: () => {\n} });\nvar NavigationTargetWrapper = ({ isCurrent, isOverlayed, children }) => {\n  const callbacks = useMap();\n  const register = useCallback5(\n    (fn) => {\n      if (callbacks.has(fn)) {\n        console.warn(\"NavigationTargetWrapper: already registered\");\n        return;\n      }\n      callbacks.set(fn, void 0);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const deregister = useCallback5(\n    (fn) => {\n      const cleanup = callbacks.get(fn);\n      cleanup == null ? void 0 : cleanup();\n      callbacks.delete(fn);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const value = useRef10({ register, deregister }).current;\n  useEffect10(() => {\n    callbacks.forEach((_, cb) => {\n      const newCleanup = cb(isCurrent, isOverlayed);\n      callbacks.set(cb, isFunction(newCleanup) ? newCleanup : void 0);\n    });\n    return () => {\n      callbacks.forEach((cleanup, cb) => {\n        if (!cleanup)\n          return;\n        cleanup();\n        callbacks.set(cb, void 0);\n      });\n    };\n  }, [\n    isCurrent,\n    isOverlayed,\n    callbacks\n    /* constant, so should never change */\n  ]);\n  return /* @__PURE__ */ jsx23(NavigationTargetContext.Provider, { value, children });\n};\nfunction useOnCurrentTargetChange(callback, deps = []) {\n  const { register, deregister } = useContext8(NavigationTargetContext);\n  useEffect10(() => {\n    if (!callback)\n      return;\n    register(callback);\n    return () => deregister(callback);\n  }, [register, deregister, ...deps]);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport { jsx as jsx24, jsxs as jsxs7 } from \"react/jsx-runtime\";\nvar NavigationContainer = /* @__PURE__ */ React30.memo(function NavigationContainer2({\n  isLayeredContainer,\n  isCurrent,\n  isPrevious,\n  isOverlayed = false,\n  visible,\n  transitionProps,\n  children,\n  backdropColor,\n  onTapBackdrop,\n  backfaceVisible,\n  exitBackfaceVisible,\n  animation,\n  exitAnimation,\n  instant,\n  initialProps,\n  exitProps,\n  position = { top: 0, right: 0, bottom: 0, left: 0 },\n  withMagicMotion,\n  index,\n  areMagicMotionLayersPresent,\n  id,\n  isInitial\n}) {\n  const animate3 = useAnimation();\n  const presence = useContext9(PresenceContext);\n  const { persistLayoutIdCache } = useContext9(LayoutIdContext);\n  const previousState = useRef11({\n    wasCurrent: void 0,\n    wasPrevious: false,\n    wasBeingRemoved: false,\n    wasReset: true,\n    origins: getOriginProps({}, initialProps, transitionProps)\n  });\n  const viewportRef = useRef11(null);\n  const isBeingRemoved = presence !== null && !presence.isPresent;\n  if (isCurrent && previousState.current.wasCurrent === void 0)\n    persistLayoutIdCache();\n  useEffect11(() => {\n    if (isLayeredContainer || !animate3)\n      return;\n    if (isBeingRemoved) {\n      previousState.current = {\n        ...previousState.current,\n        wasBeingRemoved: isBeingRemoved\n      };\n      return;\n    }\n    const { wasPrevious, wasCurrent } = previousState.current;\n    const shouldAnimateIn = isCurrent && !wasCurrent || // If the screen was being removed as a result of a \"go back\" transition, but that removal is interrupted,\n    // resulting in this screen being restored to the current screen, we need to trigger an animation.\n    !isBeingRemoved && previousState.current.wasBeingRemoved && isCurrent;\n    const shouldAnimateOut = isPrevious && !wasPrevious;\n    const origins = getOriginProps(previousState.current.origins, initialProps, transitionProps);\n    let wasReset = previousState.current.wasReset;\n    if (shouldAnimateIn || shouldAnimateOut) {\n      animate3.stop();\n      animate3.start({\n        zIndex: index,\n        ...origins,\n        ...transitionProps\n      });\n      wasReset = false;\n    } else if (wasReset === false) {\n      animate3.stop();\n      animate3.set({ zIndex: index, ...allAnimatableProperties, opacity: 0 });\n      wasReset = true;\n    }\n    previousState.current = {\n      wasCurrent: !!isCurrent,\n      wasPrevious: !!isPrevious,\n      wasBeingRemoved: false,\n      wasReset,\n      origins\n    };\n  }, [isCurrent, isPrevious, isBeingRemoved]);\n  const transition = instant ? { type: false } : \"velocity\" in animation ? { ...animation, velocity: 0 } : animation;\n  const exitTransition = instant ? { type: false } : exitAnimation || animation;\n  const layout = { ...position };\n  if (layout.left === void 0 || layout.right === void 0)\n    layout.width = \"auto\";\n  if (layout.top === void 0 || layout.bottom === void 0)\n    layout.height = \"auto\";\n  const needsPerspective = contains3Dprops(transitionProps) || contains3Dprops(initialProps);\n  const perspective = needsPerspective && (isLayeredContainer || isCurrent || isPrevious) ? 1200 : void 0;\n  const identity = { ...allAnimatableProperties, ...previousState.current.origins };\n  const animations2 = isLayeredContainer ? {\n    initial: { ...identity, ...initialProps },\n    animate: { ...identity, ...transitionProps, transition },\n    // Overlay animations are sometimes instant\n    exit: { ...identity, ...exitProps, transition: animation }\n    // Overlay exits are always animated\n  } : {\n    animate: animate3,\n    exit: { ...identity, ...exitProps, transition: exitTransition }\n  };\n  const isPresent = isBeingRemoved || areMagicMotionLayersPresent === false ? false : true;\n  const isCurrentTarget = !!isCurrent && isPresent;\n  const forceOpacity = isCurrent && isInitial;\n  return /* @__PURE__ */ jsxs7(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"NavigationContainerWrapper\",\n      width: \"100%\",\n      height: \"100%\",\n      style: {\n        position: \"absolute\",\n        transformStyle: \"flat\",\n        backgroundColor: \"transparent\",\n        overflow: \"hidden\",\n        // Unlike Overlays, Screens set zIndex via animation controls to ensure it's set in parallel with the animation being played.\n        // However, when a screen exits, it needs to preserve it's zIndex, which can't be applied through an `exit` animation,\n        // and might be impacted by the layer created by `perspective`.\n        zIndex: isLayeredContainer || isBeingRemoved || isCurrent && withMagicMotion ? index : void 0,\n        pointerEvents: void 0,\n        visibility: visible ? \"visible\" : \"hidden\",\n        perspective\n      },\n      children: [\n        isLayeredContainer && /* @__PURE__ */ jsx24(\n          FrameWithMotion,\n          {\n            width: \"100%\",\n            height: \"100%\",\n            \"data-framer-component-type\": \"NavigationContainerBackdrop\",\n            transition: animation,\n            initial: { opacity: instant && visible ? 1 : 0 },\n            animate: { opacity: 1 },\n            exit: { opacity: 0 },\n            backgroundColor: backdropColor ? backdropColor : \"transparent\",\n            onTap: !isBeingRemoved ? onTapBackdrop : void 0\n          }\n        ),\n        /* @__PURE__ */ jsx24(\n          FrameWithMotion,\n          {\n            ...layout,\n            ...animations2,\n            transition: {\n              default: transition,\n              originX: { type: false },\n              originY: { type: false },\n              originZ: { type: false }\n            },\n            backgroundColor: \"transparent\",\n            backfaceVisible: !isBeingRemoved ? backfaceVisible : exitBackfaceVisible,\n            \"data-framer-component-type\": \"NavigationContainer\",\n            \"data-framer-is-current-navigation-target\": !!isCurrent,\n            style: {\n              pointerEvents: void 0,\n              // When we mount a new screen that is going to be animated in with animation controls,\n              // we need to ensure that the screen is hidden until the animation starts.\n              opacity: forceOpacity || isLayeredContainer || isCurrent && withMagicMotion ? 1 : 0\n            },\n            \"data-is-present\": isPresent ? void 0 : false,\n            ref: viewportRef,\n            children: /* @__PURE__ */ jsx24(ViewportContext.Provider, { value: viewportRef, children: /* @__PURE__ */ jsx24(NavigationContainerContext.Provider, { value: isCurrentTarget, children: /* @__PURE__ */ jsx24(NavigationTargetWrapper, { isCurrent: isCurrentTarget, isOverlayed, children: /* @__PURE__ */ jsx24(\n              SharedLayoutTree,\n              {\n                isLead: isCurrent,\n                animatesLayout: !!withMagicMotion,\n                transition,\n                isExiting: !isPresent,\n                isOverlayed,\n                id,\n                children\n              }\n            ) }) }) })\n          }\n        )\n      ]\n    }\n  );\n}, shouldUsePreviousValue);\nfunction shouldUsePreviousValue(prevProps, nextProps) {\n  if (nextProps.isCurrent === void 0)\n    return false;\n  if (prevProps.isCurrent !== nextProps.isCurrent)\n    return false;\n  if (prevProps.isPrevious !== nextProps.isPrevious)\n    return false;\n  if (nextProps.isCurrent && prevProps.isOverlayed !== nextProps.isOverlayed)\n    return false;\n  return true;\n}\nfunction getOriginProps(currentOriginProps, initialProps, transitionProps) {\n  const result = { ...currentOriginProps };\n  if (initialProps) {\n    if (isFiniteNumber(initialProps.originX))\n      result.originX = initialProps.originX;\n    if (isFiniteNumber(initialProps.originY))\n      result.originY = initialProps.originY;\n    if (isFiniteNumber(initialProps.originZ))\n      result.originZ = initialProps.originZ;\n  }\n  if (transitionProps) {\n    if (isFiniteNumber(transitionProps.originX))\n      result.originX = transitionProps.originX;\n    if (isFiniteNumber(transitionProps.originY))\n      result.originY = transitionProps.originY;\n    if (isFiniteNumber(transitionProps.originZ))\n      result.originZ = transitionProps.originZ;\n  }\n  return result;\n}\nfunction contains3Dprops(containerProps) {\n  var _a, _b, _c;\n  if (!containerProps)\n    return false;\n  const containsProps = \"rotateX\" in containerProps || \"rotateY\" in containerProps || \"z\" in containerProps;\n  if (!containsProps)\n    return false;\n  const toPropsContain3d = containerProps.rotateX !== 0 || containerProps.rotateY !== 0 || containerProps.z !== 0;\n  const fromPropsContain3d = ((_a = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _a.rotateX.from) !== 0 || ((_b = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _b.rotateY.from) !== 0 || ((_c = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _c.z.from) !== 0;\n  return toPropsContain3d || fromPropsContain3d;\n}\nvar allAnimatableProperties = {\n  x: 0,\n  y: 0,\n  z: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  rotateZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0,\n  opacity: 1\n};\n\n// ../../library/src/components/NavigationContext.ts\nimport { createContext as createContext3 } from \"react\";\n\n// ../../library/src/components/NavigatorMock.tsx\nvar NavigatorMock = class {\n  constructor() {\n    __publicField(this, \"warning\", () => {\n      warnOnce(\"The Navigator API is only available inside of Framer: https://www.framer.com/\");\n    });\n    __publicField(this, \"goBack\", () => this.warning());\n    __publicField(this, \"instant\", () => this.warning());\n    __publicField(this, \"fade\", () => this.warning());\n    __publicField(this, \"push\", () => this.warning());\n    __publicField(this, \"modal\", () => this.warning());\n    __publicField(this, \"overlay\", () => this.warning());\n    __publicField(this, \"flip\", () => this.warning());\n    __publicField(this, \"customTransition\", () => this.warning());\n    __publicField(this, \"magicMotion\", () => this.warning());\n  }\n};\nvar navigatorMock = /* @__PURE__ */ new NavigatorMock();\n\n// ../../library/src/components/NavigationContext.ts\nvar NavigationContext = /* @__PURE__ */ createContext3(navigatorMock);\n\n// ../../library/src/components/NavigationTransitions.ts\nvar TransitionDefaults = {\n  Fade: {\n    exit: { opacity: 0 },\n    enter: { opacity: 0 }\n  },\n  PushLeft: {\n    exit: { x: \"-30%\" },\n    enter: { x: \"100%\" }\n  },\n  PushRight: {\n    exit: { x: \"30%\" },\n    enter: { x: \"-100%\" }\n  },\n  PushUp: {\n    exit: { y: \"-30%\" },\n    enter: { y: \"100%\" }\n  },\n  PushDown: {\n    exit: { y: \"30%\" },\n    enter: { y: \"-100%\" }\n  },\n  Instant: {\n    animation: { type: false },\n    enter: { opacity: 0 }\n  },\n  Modal: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { center: true },\n    enter: { opacity: 0, scale: 1.2 }\n  },\n  OverlayLeft: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { right: 0, top: 0, bottom: 0 },\n    enter: { x: \"100%\" }\n  },\n  OverlayRight: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { left: 0, top: 0, bottom: 0 },\n    enter: { x: \"-100%\" }\n  },\n  OverlayUp: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { bottom: 0, left: 0, right: 0 },\n    enter: { y: \"100%\" }\n  },\n  OverlayDown: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { top: 0, left: 0, right: 0 },\n    enter: { y: \"-100%\" }\n  },\n  FlipLeft: {\n    backfaceVisible: false,\n    exit: { rotateY: -180 },\n    enter: { rotateY: 180 }\n  },\n  FlipRight: {\n    backfaceVisible: false,\n    exit: { rotateY: 180 },\n    enter: { rotateY: -180 }\n  },\n  FlipUp: {\n    backfaceVisible: false,\n    exit: { rotateX: 180 },\n    enter: { rotateX: -180 }\n  },\n  FlipDown: {\n    backfaceVisible: false,\n    exit: { rotateX: -180 },\n    enter: { rotateX: 180 }\n  },\n  MagicMotion: {\n    withMagicMotion: true\n  }\n};\nfunction pushTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"right\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.PushLeft;\n    case \"left\":\n      return TransitionDefaults.PushRight;\n    case \"bottom\":\n      return TransitionDefaults.PushUp;\n    case \"top\":\n      return TransitionDefaults.PushDown;\n  }\n}\nfunction overlayTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.OverlayLeft;\n    case \"left\":\n      return TransitionDefaults.OverlayRight;\n    case \"bottom\":\n      return TransitionDefaults.OverlayUp;\n    case \"top\":\n      return TransitionDefaults.OverlayDown;\n  }\n}\nfunction flipTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.FlipLeft;\n    case \"left\":\n      return TransitionDefaults.FlipRight;\n    case \"bottom\":\n      return TransitionDefaults.FlipUp;\n    case \"top\":\n      return TransitionDefaults.FlipDown;\n  }\n}\n\n// ../../library/src/components/reduceNavigationStateForAction.ts\nvar defaultState = () => ({\n  current: -1,\n  previous: -1,\n  currentOverlay: -1,\n  previousOverlay: -1,\n  visualIndex: 0,\n  overlayItemId: 0,\n  historyItemId: 0,\n  history: [],\n  overlayStack: [],\n  containers: {},\n  containerIndex: {},\n  containerVisualIndex: {},\n  containerIsRemoved: {},\n  transitionForContainer: {},\n  previousTransition: null\n});\nfunction reduceNavigationStateForAction(state, action) {\n  switch (action.type) {\n    case \"addOverlay\":\n      return addOverlay(state, action.transition, action.component);\n    case \"removeOverlay\":\n      return removeOverlay(state);\n    case \"add\":\n      return add(state, action.key, action.transition, action.component);\n    case \"remove\":\n      return remove(state);\n    case \"update\":\n      return updateComponent(state, action.key, action.component);\n    case \"back\":\n      return back(state);\n    case \"forward\":\n      return forward(state);\n    default:\n      return;\n  }\n}\nfunction updateComponent(currentState, key7, component) {\n  return {\n    ...currentState,\n    containers: {\n      ...currentState.containers,\n      [key7]: component\n    }\n  };\n}\nfunction addOverlay(currentState, transition, component) {\n  const currentOverlay = currentState.overlayStack[currentState.currentOverlay];\n  if (currentOverlay && currentOverlay.component === component)\n    return;\n  const overlayItemId = currentState.overlayItemId + 1;\n  const overlayStack = [\n    ...currentState.overlayStack,\n    {\n      key: `stack-${overlayItemId}`,\n      component,\n      transition\n    }\n  ];\n  return {\n    ...currentState,\n    overlayStack,\n    overlayItemId,\n    currentOverlay: Math.max(0, Math.min(currentState.currentOverlay + 1, overlayStack.length - 1)),\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction removeOverlay(currentState) {\n  return {\n    ...currentState,\n    overlayStack: [],\n    currentOverlay: -1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction add(currentState, key7, transition, component) {\n  if (!currentState.containers[key7])\n    currentState.containers[key7] = component;\n  currentState.history = currentState.history.slice(0, currentState.current + 1);\n  currentState.visualIndex = Math.max(currentState.history.length, 0);\n  const currentItem = currentState.history[currentState.history.length - 1];\n  const isCurrentScreen = currentItem && currentItem.key === key7;\n  currentState.overlayStack = [];\n  if (isCurrentScreen && currentState.currentOverlay > -1) {\n    return {\n      ...currentState,\n      currentOverlay: -1,\n      previousOverlay: currentState.currentOverlay\n    };\n  }\n  if (isCurrentScreen)\n    return;\n  const nextIndex = currentState.containerVisualIndex[key7];\n  const removed = currentState.containerIsRemoved[key7];\n  const shouldMoveForward = (currentItem == null ? void 0 : currentItem.key) && transition.withMagicMotion ? isNextTargetForward(key7, nextIndex, removed, currentState.history) : true;\n  currentState.history.push({\n    key: key7,\n    transition,\n    visualIndex: shouldMoveForward ? Math.max(currentState.visualIndex, 0) : currentState.containerVisualIndex[key7]\n  });\n  const current = currentState.current + 1;\n  const previous = currentState.current;\n  for (const containerKey in currentState.containerIndex) {\n    if (currentState.containerIndex[containerKey] === current) {\n      currentState.containerIndex[containerKey] = findLatestHistoryIndex(containerKey, currentState.history);\n    }\n  }\n  currentState.containerIndex[key7] = current;\n  const { containerVisualIndex, containerIsRemoved } = magicMotionPropsForAdd(currentState, key7, shouldMoveForward);\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerVisualIndex,\n    containerIsRemoved,\n    transitionForContainer,\n    previousTransition: null,\n    currentOverlay: -1,\n    historyItemId: currentState.historyItemId + 1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction back(currentState) {\n  const containers = { ...currentState.containers };\n  const nextState = remove(currentState);\n  if (!nextState)\n    return;\n  nextState.containers = containers;\n  return nextState;\n}\nfunction forward(currentState) {\n  const nextItem = currentState.history[currentState.current + 1];\n  if (!nextItem)\n    return;\n  const { key: key7, transition, component } = nextItem;\n  const history = [...currentState.history];\n  const nextState = add(currentState, key7, transition, component);\n  if (!nextState)\n    return;\n  nextState.history = history;\n  return nextState;\n}\nfunction remove(currentState) {\n  const history = [...currentState.history.slice(0, currentState.current + 1)];\n  if (history.length === 1)\n    return;\n  const currentItem = history.pop();\n  if (!currentItem)\n    return;\n  const target = history[history.length - 1];\n  assert(target, \"The navigation history must have at least one component\");\n  currentState.containerIndex[target.key] = history.length - 1;\n  const shouldRemoveContainer = history.every((item) => item.key !== currentItem.key);\n  if (shouldRemoveContainer) {\n    delete currentState.containers[currentItem.key];\n  }\n  const current = currentState.current - 1;\n  const previous = currentState.current;\n  const { containerIsRemoved, containerVisualIndex, previousTransition, visualIndex } = magicMotionPropsForRemove(\n    currentState,\n    target,\n    currentItem\n  );\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerIsRemoved,\n    containerVisualIndex,\n    previousTransition,\n    visualIndex,\n    transitionForContainer\n  };\n}\nfunction magicMotionPropsForAdd(currentState, nextKey, shouldMoveForward) {\n  const update = {\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    containerIsRemoved: { ...currentState.containerIsRemoved }\n  };\n  if (shouldMoveForward) {\n    update.containerVisualIndex[nextKey] = currentState.history.length - 1;\n    update.containerIsRemoved[nextKey] = false;\n  } else {\n    const nextVisualIndex = currentState.containerVisualIndex[nextKey];\n    for (const [key7, visualIndex] of Object.entries(currentState.containerVisualIndex)) {\n      if (nextVisualIndex !== void 0 && visualIndex > nextVisualIndex) {\n        update.containerIsRemoved[key7] = true;\n      }\n    }\n  }\n  return update;\n}\nfunction magicMotionPropsForRemove(currentState, target, currentItem) {\n  const validTargets = [target.key, currentItem.key];\n  const nextValidTarget = currentState.history[currentState.history.length - 2];\n  const previousTransition = currentState.previousTransition === null ? null : { ...currentState.previousTransition };\n  const update = {\n    containerIsRemoved: { ...currentState.containerIsRemoved },\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    previousTransition,\n    visualIndex: currentState.visualIndex\n  };\n  if (nextValidTarget)\n    validTargets.push(nextValidTarget.key);\n  const targetVisualIndex = currentState.containerVisualIndex[target.key];\n  const currentVisualIndex = currentState.containerVisualIndex[currentItem.key];\n  const shouldRemoveLastKey = targetVisualIndex !== void 0 && currentVisualIndex !== void 0 && targetVisualIndex <= currentVisualIndex || target.visualIndex !== void 0 && target.visualIndex < currentState.history.length - 1;\n  const nextIndex = target.visualIndex;\n  if (shouldRemoveLastKey) {\n    update.containerIsRemoved[currentItem.key] = true;\n    update.containerVisualIndex[target.key] = nextIndex !== void 0 ? nextIndex : currentState.history.length - 1;\n  } else {\n    update.visualIndex = currentState.visualIndex + 1;\n    update.containerVisualIndex[target.key] = currentState.visualIndex + 1;\n  }\n  if (currentItem.transition.withMagicMotion)\n    update.previousTransition = currentItem.transition || null;\n  currentState.containerIsRemoved[target.key] = false;\n  return update;\n}\nfunction findLatestHistoryIndex(key7, history) {\n  var _a;\n  for (let index = history.length; index > history.length; index--) {\n    if (((_a = history[index]) == null ? void 0 : _a.key) === key7)\n      return index;\n  }\n  return -1;\n}\nfunction updateTransitions(current, previous, history, containerIndex, transitionForContainer) {\n  const transitions = { ...transitionForContainer };\n  for (const [key7, screenIndex] of Object.entries(containerIndex)) {\n    const transition = transitionForScreen(screenIndex, { current, previous, history });\n    if (transition) {\n      transitions[key7] = transition;\n    }\n  }\n  return transitions;\n}\nfunction isNextTargetForward(key7, index, removed, history) {\n  if (removed || index === void 0)\n    return true;\n  if (index === 0)\n    return false;\n  const forwardHistory = history.slice(index, history.length);\n  if (forwardHistory.findIndex((item) => item.key === key7) > -1)\n    return true;\n  const backwardsHistory = history.slice(0, index - 1);\n  if (backwardsHistory.findIndex((item) => item.key === key7) > -1)\n    return false;\n  return true;\n}\nfunction transitionForScreen(screenIndex, stackState) {\n  const { current, previous, history } = stackState;\n  if (screenIndex !== current && screenIndex !== previous)\n    return void 0;\n  if (screenIndex === current && current > previous) {\n    const item = history[screenIndex];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current > previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === current && current < previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current < previous) {\n    const item = history[screenIndex];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n}\nvar allAnimatableKeys = /* @__PURE__ */ objectKeys(allAnimatableProperties);\nfunction sequence(direction, transition, animation) {\n  const value = {};\n  const from = {};\n  allAnimatableKeys.forEach((property) => {\n    value[property] = allAnimatableProperties[property];\n    from[property] = {\n      ...animation,\n      from: allAnimatableProperties[property]\n    };\n  });\n  if (transition) {\n    Object.keys(transition).forEach((property) => {\n      if (transition[property] === void 0)\n        return;\n      const transitionTo = transition[property];\n      const transitionFrom = typeof transition[property] === \"string\" ? `${asRecord(allAnimatableProperties)[property]}%` : asRecord(allAnimatableProperties)[property];\n      asRecord(value)[property] = direction === \"enter\" ? transitionFrom : transitionTo;\n      from[property] = {\n        ...animation,\n        from: direction === \"enter\" ? transitionTo : transitionFrom,\n        velocity: 0\n      };\n    });\n  }\n  return {\n    ...value,\n    transition: {\n      ...from\n    }\n  };\n}\n\n// ../../library/src/components/Navigation.tsx\nimport { jsx as jsx25, jsxs as jsxs8 } from \"react/jsx-runtime\";\nvar NavigationConsumer = /* @__PURE__ */ (() => NavigationContext.Consumer)();\nvar NavigationCallbackContext = /* @__PURE__ */ React31.createContext(void 0);\nvar NavigationCallbackProvider = /* @__PURE__ */ (() => NavigationCallbackContext.Provider)();\nvar IsInitialNavigationContext = /* @__PURE__ */ React31.createContext(void 0);\nvar Navigation = /* @__PURE__ */ (() => {\n  var _lastEventTimeStamp, _a, _getStackState, getStackState_fn, _isSameEventTransition, isSameEventTransition_fn, _navigationAction, _transition, transition_fn;\n  return _a = class extends Component6 {\n    constructor(props) {\n      var _a2;\n      super(props);\n      __privateAdd(this, _getStackState);\n      /**\n       * To prevent bubbling events from triggering multiple transitions,\n       * we ensure that the current event has a different timestamp then the event that triggered the last transition.\n       * We use Window.event to ensure that even transitions invoked by code components - and may not pass a reference to the event - are caught.\n       * This works better than measuring the time of transition calls with performance.now()\n       * because the time between calls can get longer and longer as more screens are added to the stack,\n       * preventing a deterministic time between transitions to be used to determine if they were triggered at the same time or not.\n       */\n      __privateAdd(this, _isSameEventTransition);\n      __privateAdd(this, _transition);\n      __privateAdd(this, _lastEventTimeStamp, null);\n      __publicField(this, \"state\", defaultState());\n      __privateAdd(this, _navigationAction, (action) => {\n        if (!this.props.enabled && this.state.history.length > 0)\n          return;\n        const newState = reduceNavigationStateForAction(this.state, action);\n        if (!newState)\n          return;\n        const { skipLayoutAnimation } = this.props;\n        const historyItem = newState.history[newState.current];\n        const withMagicMotion = action.type === \"add\" && action.transition.withMagicMotion || action.type === \"forward\" && (historyItem == null ? void 0 : historyItem.transition.withMagicMotion) || action.type === \"remove\" && !!newState.previousTransition;\n        const updateState = () => {\n          var _a2;\n          this.setState(newState);\n          if (historyItem == null ? void 0 : historyItem.key) {\n            (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n          }\n        };\n        if (skipLayoutAnimation && !withMagicMotion) {\n          skipLayoutAnimation(updateState);\n        } else {\n          updateState();\n        }\n      });\n      __publicField(this, \"goBack\", () => {\n        var _a2;\n        if (__privateMethod(this, _isSameEventTransition, isSameEventTransition_fn).call(this))\n          return;\n        __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n        if (this.state.currentOverlay !== -1)\n          return __privateGet(this, _navigationAction).call(this, { type: \"removeOverlay\" });\n        return __privateGet(this, _navigationAction).call(this, { type: \"remove\" });\n      });\n      const component = this.props.children;\n      if (!component || !isReactChild(component) || !isReactElement(component))\n        return;\n      const transition = { ...TransitionDefaults.Instant };\n      const key7 = ((_a2 = component.key) == null ? void 0 : _a2.toString()) || `stack-${this.state.historyItemId + 1}`;\n      const action = { type: \"add\", key: key7, transition, component };\n      const newState = reduceNavigationStateForAction(this.state, action);\n      if (!newState)\n        return;\n      this.state = newState;\n    }\n    componentDidMount() {\n      var _a2;\n      const historyItem = this.state.history[this.state.current];\n      if (!historyItem)\n        return;\n      (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      var _a2;\n      const component = props[\"children\"];\n      if (!isReactChild(component) || !isReactElement(component))\n        return;\n      const key7 = (_a2 = component.key) == null ? void 0 : _a2.toString();\n      if (!key7)\n        return;\n      if (this.state.history.length === 0) {\n        __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Instant);\n      } else {\n        __privateGet(this, _navigationAction).call(this, { type: \"update\", key: key7, component });\n      }\n    }\n    componentWillUnmount() {\n      var _a2, _b;\n      (_b = (_a2 = this.props).resetProjection) == null ? void 0 : _b.call(_a2);\n    }\n    instant(component) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Instant, void 0);\n    }\n    fade(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Fade, options);\n    }\n    push(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, pushTransition(options), options);\n    }\n    modal(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.Modal, options);\n    }\n    overlay(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, overlayTransition(options), options);\n    }\n    flip(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, flipTransition(options), options);\n    }\n    magicMotion(component, options) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, TransitionDefaults.MagicMotion, options);\n    }\n    customTransition(component, transition) {\n      __privateMethod(this, _transition, transition_fn).call(this, component, transition);\n    }\n    render() {\n      var _a2, _b, _c, _d, _e;\n      const stackState = __privateMethod(this, _getStackState, getStackState_fn).call(this, { overCurrentContext: false });\n      const overlayStackState = __privateMethod(this, _getStackState, getStackState_fn).call(this, { overCurrentContext: true });\n      const activeOverlay = activeOverlayItem(overlayStackState);\n      const isOverlayVisible = overlayStackState.current > -1;\n      const isInitial = this.state.history.length === 1;\n      const contentContainers = [];\n      for (const [key7, component] of Object.entries(this.state.containers)) {\n        const index = this.state.containerIndex[key7];\n        assert(index !== void 0, \"Container's index must be registered\");\n        const visualIndex = this.state.containerVisualIndex[key7];\n        assert(visualIndex !== void 0, \"Container's visual index must be registered\");\n        const removed = this.state.containerIsRemoved[key7];\n        const historyItem = this.state.history[index];\n        const transitionProps = this.state.transitionForContainer[key7];\n        const isCurrent = index === this.state.current;\n        const isPrevious = index === this.state.previous;\n        const areMagicMotionLayersPresent = isCurrent ? false : removed;\n        const withMagicMotion = ((_a2 = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _a2.withMagicMotion) || isCurrent && !!this.state.previousTransition;\n        contentContainers.push(\n          /* @__PURE__ */ jsx25(\n            NavigationContainer,\n            {\n              id: key7,\n              index: visualIndex,\n              isInitial,\n              isCurrent,\n              isPrevious,\n              isOverlayed: isOverlayVisible,\n              visible: isCurrent || isPrevious,\n              position: (_b = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _b.position,\n              instant: isInstantContainerTransition(index, stackState),\n              transitionProps,\n              animation: animationPropsForContainer(index, stackState),\n              backfaceVisible: getBackfaceVisibleForScreen(index, stackState),\n              exitAnimation: (_c = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _c.animation,\n              exitBackfaceVisible: (_d = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _d.backfaceVisible,\n              exitProps: (_e = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _e.enter,\n              withMagicMotion,\n              areMagicMotionLayersPresent: areMagicMotionLayersPresent ? false : void 0,\n              children: /* @__PURE__ */ jsx25(MagicMotionCrossfadeRoot, { children: containerContent({\n                component,\n                transition: historyItem == null ? void 0 : historyItem.transition\n              }) })\n            },\n            key7\n          )\n        );\n      }\n      const overlayContainers = this.state.overlayStack.map((item, stackIndex) => {\n        return /* @__PURE__ */ jsx25(\n          NavigationContainer,\n          {\n            isLayeredContainer: true,\n            isCurrent: stackIndex === this.state.currentOverlay,\n            position: item.transition.position,\n            initialProps: initialPropsForOverlay(stackIndex, overlayStackState),\n            transitionProps: transitionPropsForOverlay(stackIndex, overlayStackState),\n            instant: isInstantContainerTransition(stackIndex, overlayStackState, true),\n            animation: animationPropsForContainer(stackIndex, overlayStackState),\n            exitProps: item.transition.enter,\n            visible: containerIsVisible(stackIndex, overlayStackState),\n            backdropColor: backdropColorForTransition(item.transition),\n            backfaceVisible: getBackfaceVisibleForOverlay(stackIndex, overlayStackState),\n            onTapBackdrop: backdropTapAction(item.transition, this.goBack),\n            index: this.state.current + 1 + stackIndex,\n            children: containerContent({\n              component: item.component,\n              transition: item.transition\n            })\n          },\n          item.key\n        );\n      });\n      return /* @__PURE__ */ jsx25(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"NavigationRoot\",\n          top: 0,\n          left: 0,\n          width: \"100%\",\n          height: \"100%\",\n          position: \"relative\",\n          style: {\n            overflow: \"hidden\",\n            backgroundColor: \"unset\",\n            pointerEvents: void 0,\n            ...this.props.style\n          },\n          children: /* @__PURE__ */ jsx25(NavigationContext.Provider, { value: this, children: /* @__PURE__ */ jsxs8(IsInitialNavigationContext.Provider, { value: isInitial, children: [\n            /* @__PURE__ */ jsx25(\n              NavigationContainer,\n              {\n                isLayeredContainer: true,\n                position: void 0,\n                initialProps: {},\n                instant: false,\n                transitionProps: transitionPropsForStackWrapper(activeOverlay),\n                animation: animationForStackWrapper(activeOverlay),\n                backfaceVisible: backfaceVisibleForStackWrapper(activeOverlay),\n                visible: true,\n                backdropColor: void 0,\n                onTapBackdrop: void 0,\n                index: 0,\n                children: /* @__PURE__ */ jsx25(LayoutIdProvider, { children: /* @__PURE__ */ jsx25(SharedLayoutRoot, { children: /* @__PURE__ */ jsx25(AnimatePresence, { presenceAffectsLayout: false, children: contentContainers }) }) })\n              }\n            ),\n            /* @__PURE__ */ jsx25(AnimatePresence, { children: overlayContainers })\n          ] }) })\n        }\n      );\n    }\n  }, _lastEventTimeStamp = new WeakMap(), _getStackState = new WeakSet(), getStackState_fn = function(options) {\n    const { current, previous, currentOverlay, previousOverlay } = this.state;\n    if (options.overCurrentContext) {\n      return {\n        current: currentOverlay,\n        previous: previousOverlay,\n        history: this.state.overlayStack\n      };\n    }\n    return {\n      current,\n      previous,\n      history: this.state.history\n    };\n  }, _isSameEventTransition = new WeakSet(), isSameEventTransition_fn = function() {\n    if (!globalThis.event)\n      return false;\n    return __privateGet(this, _lastEventTimeStamp) === globalThis.event.timeStamp;\n  }, _navigationAction = new WeakMap(), _transition = new WeakSet(), transition_fn = function(component, transitionTraits, transitionOptions) {\n    var _a2, _b;\n    if (__privateMethod(this, _isSameEventTransition, isSameEventTransition_fn).call(this))\n      return;\n    __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n    if (!component || !isReactChild(component) || !isReactElement(component))\n      return;\n    const transition = { ...transitionTraits, ...transitionOptions };\n    const overCurrentContext = !!transition.overCurrentContext;\n    if (overCurrentContext)\n      return __privateGet(this, _navigationAction).call(this, { type: \"addOverlay\", transition, component });\n    const key7 = ((_b = component.key) == null ? void 0 : _b.toString()) || `stack-${this.state.historyItemId + 1}`;\n    __privateGet(this, _navigationAction).call(this, { type: \"add\", key: key7, transition, component });\n  }, __publicField(_a, \"defaultProps\", {\n    enabled: true\n  }), __publicField(_a, \"contextType\", NavigationCallbackContext), _a;\n})();\nvar animationDefault = {\n  stiffness: 500,\n  damping: 50,\n  restDelta: 1,\n  type: \"spring\"\n};\nfunction activeOverlayItem(overlayStack) {\n  let currentOverlayItem;\n  let previousOverlayItem;\n  if (overlayStack.current !== -1) {\n    currentOverlayItem = overlayStack.history[overlayStack.current];\n  } else {\n    previousOverlayItem = overlayStack.history[overlayStack.previous];\n  }\n  return { currentOverlayItem, previousOverlayItem };\n}\nfunction transitionPropsForStackWrapper({ currentOverlayItem }) {\n  return currentOverlayItem && currentOverlayItem.transition.exit;\n}\nfunction animationForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem && currentOverlayItem.transition.animation) {\n    return currentOverlayItem.transition.animation;\n  }\n  if (previousOverlayItem && previousOverlayItem.transition.animation) {\n    return previousOverlayItem.transition.animation;\n  }\n  return animationDefault;\n}\nfunction backfaceVisibleForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem)\n    return currentOverlayItem.transition.backfaceVisible;\n  return previousOverlayItem && previousOverlayItem.transition.backfaceVisible;\n}\nfunction backdropColorForTransition(transition) {\n  if (transition.backdropColor)\n    return transition.backdropColor;\n  if (transition.overCurrentContext)\n    return \"rgba(4,4,15,.4)\";\n  return void 0;\n}\nfunction getBackfaceVisibleForOverlay(containerIndex, stackState) {\n  const { current, history } = stackState;\n  if (containerIndex === current) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else if (containerIndex < current) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  }\n}\nfunction initialPropsForOverlay(containerIndex, stackState) {\n  const navigationItem = stackState.history[containerIndex];\n  if (navigationItem)\n    return navigationItem.transition.enter;\n}\nfunction getBackfaceVisibleForScreen(screenIndex, stackState) {\n  var _a, _b, _c, _d;\n  const { current, previous, history } = stackState;\n  if (screenIndex === previous && current > previous || screenIndex === current && current < previous) {\n    return (_b = (_a = history[screenIndex + 1]) == null ? void 0 : _a.transition) == null ? void 0 : _b.backfaceVisible;\n  }\n  return (_d = (_c = history[screenIndex]) == null ? void 0 : _c.transition) == null ? void 0 : _d.backfaceVisible;\n}\nfunction transitionPropsForOverlay(overlayIndex, stackState) {\n  const { current, history } = stackState;\n  if (overlayIndex === current) {\n    return;\n  } else if (overlayIndex < current) {\n    const navigationItem = history[overlayIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.exit;\n    }\n  } else {\n    const navigationItem = history[overlayIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.enter;\n    }\n  }\n}\nfunction animationPropsForContainer(containerIndex, stackState) {\n  const { current, previous, history } = stackState;\n  const containerCurrent = previous > current ? previous : current;\n  if (containerIndex < containerCurrent) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else if (containerIndex !== containerCurrent) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem == null ? void 0 : navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  }\n  return animationDefault;\n}\nfunction isInstantContainerTransition(containerIndex, stackState, overCurrentContext) {\n  const { current, previous, history } = stackState;\n  if (overCurrentContext && history.length > 1)\n    return true;\n  if (containerIndex !== previous && containerIndex !== current)\n    return true;\n  if (current === previous)\n    return true;\n  return false;\n}\nfunction containerIsVisible(containerIndex, stackState) {\n  const { current, previous } = stackState;\n  if (containerIndex > current && containerIndex > previous)\n    return false;\n  if (containerIndex === current)\n    return true;\n  return false;\n}\nfunction containerContent(item) {\n  const content = React31.Children.map(\n    item.component,\n    (child) => {\n      var _a;\n      if (!isReactChild(child) || !isReactElement(child) || !child.props) {\n        return child;\n      }\n      const props = {\n        style: child.props.style ?? {}\n      };\n      const position = (_a = item == null ? void 0 : item.transition) == null ? void 0 : _a.position;\n      const shouldStretchWidth = !position || position.left !== void 0 && position.right !== void 0;\n      const shouldStretchHeight = !position || position.top !== void 0 && position.bottom !== void 0;\n      const canStretchStyle = \"style\" in child.props ? isObject(child.props.style) : true;\n      if (shouldStretchWidth) {\n        const canStretchWidth = \"width\" in child.props;\n        if (canStretchWidth)\n          props.width = \"100%\";\n        if (canStretchStyle)\n          props.style.width = \"100%\";\n      }\n      if (shouldStretchHeight) {\n        const canStretchHeight = \"height\" in child.props;\n        if (canStretchHeight)\n          props.height = \"100%\";\n        if (canStretchStyle)\n          props.style.height = \"100%\";\n      }\n      return React31.cloneElement(child, props);\n    }\n  );\n  return content;\n}\nfunction backdropTapAction(transition, goBackAction) {\n  if (transition.goBackOnTapOutside !== false)\n    return goBackAction;\n}\nfunction NavigationWrapper(props) {\n  const resetProjection = useResetProjection();\n  const skipLayoutAnimation = useInstantLayoutTransition();\n  React31.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return /* @__PURE__ */ jsx25(Navigation, { ...props, resetProjection, skipLayoutAnimation, children: props.children });\n}\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nvar import_hoist_non_react_statics3 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React32 from \"react\";\n\n// ../../library/src/render/types/NavigationLink.ts\nvar NavigateTo = /* @__PURE__ */ ((NavigateTo2) => {\n  NavigateTo2[\"Previous\"] = \"@Previous\";\n  return NavigateTo2;\n})(NavigateTo || {});\nvar NavigationTransitionType = /* @__PURE__ */ ((NavigationTransitionType2) => {\n  NavigationTransitionType2[\"push\"] = \"push\";\n  NavigationTransitionType2[\"instant\"] = \"instant\";\n  NavigationTransitionType2[\"fade\"] = \"fade\";\n  NavigationTransitionType2[\"modal\"] = \"modal\";\n  NavigationTransitionType2[\"overlay\"] = \"overlay\";\n  NavigationTransitionType2[\"flip\"] = \"flip\";\n  NavigationTransitionType2[\"magicMotion\"] = \"magicMotion\";\n  return NavigationTransitionType2;\n})(NavigationTransitionType || {});\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nimport { jsx as jsx26 } from \"react/jsx-runtime\";\nfunction WithNavigator(BaseComponent, navigationTransition, navigationTransitionDirection, NavigationTarget, navigationTransitionOptions) {\n  const InternalWithNavigator = class extends React32.Component {\n    render() {\n      return /* @__PURE__ */ jsx26(NavigationContext.Consumer, { children: (navigation) => {\n        const navigate = () => {\n          if (navigationTransition === \"goBack\") {\n            navigation.goBack();\n            return;\n          }\n          if (!NavigationTarget)\n            return;\n          const component = NavigationTarget();\n          const appearsFrom = transitionDirectionToSide(navigationTransitionDirection);\n          switch (navigationTransition) {\n            case \"instant\" /* instant */:\n              navigation.instant(component);\n              break;\n            case \"fade\" /* fade */:\n              navigation.fade(component);\n              break;\n            case \"modal\" /* modal */:\n              navigation.modal(component, navigationTransitionOptions);\n              break;\n            case \"push\" /* push */:\n              navigation.push(component, { appearsFrom });\n              break;\n            case \"overlay\" /* overlay */:\n              navigation.overlay(component, {\n                ...navigationTransitionOptions,\n                appearsFrom\n              });\n              break;\n            case \"flip\" /* flip */:\n              navigation.flip(component, { appearsFrom });\n              break;\n            case \"magicMotion\" /* magicMotion */:\n              navigation.magicMotion(component, {});\n              break;\n          }\n        };\n        const { onTap, ...props } = this.props;\n        if (onTap) {\n          props.onTap = (...args) => {\n            onTap.apply(this, args);\n            navigate.apply(this, args);\n          };\n        } else {\n          props.onTap = navigate;\n        }\n        return /* @__PURE__ */ jsx26(BaseComponent, { ...props });\n      } });\n    }\n  };\n  (0, import_hoist_non_react_statics3.default)(InternalWithNavigator, BaseComponent);\n  return InternalWithNavigator;\n}\nfunction transitionDirectionToSide(direction) {\n  switch (direction) {\n    case \"left\":\n      return \"right\";\n    case \"right\":\n      return \"left\";\n    case \"up\":\n      return \"bottom\";\n    case \"down\":\n      return \"top\";\n  }\n}\n\n// ../../library/src/components/AnimateLayout/AnimateSharedLayout.tsx\nvar AnimateSharedLayout = (props) => props.children;\n\n// ../../library/src/components/Draggable.ts\nvar Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents);\n\n// ../../library/src/components/Pagination/InfiniteScroll.tsx\nimport React33 from \"react\";\nimport { jsx as jsx27 } from \"react/jsx-runtime\";\nfunction useInfiniteScroll({\n  ref: elementRef,\n  loadMore,\n  rootMargin = \"0px\",\n  threshold,\n  paginationInfo\n}) {\n  const callback = React33.useCallback(\n    (entries) => {\n      for (let i = 0; i < entries.length; ++i) {\n        const entry = entries[i];\n        if (entry.isIntersecting) {\n          loadMore();\n          return;\n        }\n      }\n    },\n    [loadMore]\n  );\n  React33.useEffect(() => {\n    if (!elementRef.current)\n      return;\n    const observer = new IntersectionObserver(callback, {\n      rootMargin,\n      threshold\n    });\n    observer.observe(elementRef.current);\n    return () => {\n      observer.disconnect();\n    };\n  }, [elementRef, callback, rootMargin, threshold, paginationInfo.currentPage]);\n}\nfunction withInfiniteScroll(Component18) {\n  return React33.forwardRef(\n    ({ __paginationInfo, __loadMore, ...props }, ref) => {\n      const backupRef = React33.useRef(null);\n      const infiniteScrollRef = ref ?? backupRef;\n      useInfiniteScroll({\n        rootMargin: \"500px\",\n        loadMore: __loadMore,\n        ref: infiniteScrollRef,\n        paginationInfo: __paginationInfo\n      });\n      return /* @__PURE__ */ jsx27(Component18, { ...props, ref: infiniteScrollRef });\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nvar import_process2 = __toESM(require_browser(), 1);\nimport React36 from \"react\";\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nimport { useCallback as useCallback6, useRef as useRef12 } from \"react\";\n\n// ../../library/src/render/utils/debounce.ts\nfunction debounce(fn, time) {\n  let timeout;\n  const debounced = (...args) => {\n    safeWindow.clearTimeout(timeout);\n    timeout = safeWindow.setTimeout(fn, time, ...args);\n  };\n  const cancel = () => {\n    safeWindow.clearTimeout(timeout);\n  };\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nfunction useWheelScroll(ref, {\n  enabled,\n  initial,\n  prev,\n  direction,\n  constraints,\n  offsetX,\n  offsetY,\n  onScrollStart,\n  onScroll,\n  onScrollEnd\n}) {\n  const isWheelScrollActive = useRef12(false);\n  const getPointData = useCallback6(() => {\n    const point = getPoint(offsetX, offsetY);\n    const data2 = {\n      point,\n      velocity: { x: offsetX.getVelocity(), y: offsetY.getVelocity() },\n      offset: { x: point.x - initial.x, y: point.y - initial.y },\n      delta: { x: point.x - prev.x, y: point.y - prev.y }\n    };\n    prev.x = point.x;\n    prev.y = point.y;\n    return data2;\n  }, []);\n  let handler;\n  if (enabled) {\n    let clampX2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.left, constraints.current.right);\n    }, clampY2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.top, constraints.current.bottom);\n    }, updateX2 = function(delta) {\n      offsetX.stop();\n      offsetX.set(clampX2(offsetX.get() - delta));\n    }, updateY2 = function(delta) {\n      offsetY.stop();\n      offsetY.set(clampY2(offsetY.get() - delta));\n    };\n    var clampX = clampX2, clampY = clampY2, updateX = updateX2, updateY = updateY2;\n    const debouncedOnScrollEnd = debounce(() => {\n      onScrollEnd && onScrollEnd(getPointData());\n      isWheelScrollActive.current = false;\n    }, 200);\n    handler = (e) => {\n      e.preventDefault();\n      if (!isWheelScrollActive.current) {\n        const x = offsetX.get();\n        const y = offsetY.get();\n        initial.x = x;\n        initial.y = y;\n        prev.x = x;\n        prev.y = y;\n        onScrollStart && onScrollStart(getPointData());\n        isWheelScrollActive.current = true;\n      }\n      switch (direction) {\n        case \"horizontal\":\n          updateX2(e.deltaX);\n          break;\n        case \"vertical\":\n          updateY2(e.deltaY);\n          break;\n        default:\n          updateX2(e.deltaX);\n          updateY2(e.deltaY);\n      }\n      onScroll && onScroll(getPointData());\n      debouncedOnScrollEnd();\n    };\n  }\n  useDomEvent(ref, \"wheel\", handler, { passive: false });\n}\nfunction getPoint(x, y) {\n  return { x: x.get(), y: y.get() };\n}\n\n// ../../library/src/components/utils/paddingFromProps.ts\nfunction hasPaddingPerSide(props) {\n  const { paddingPerSide, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  return paddingPerSide !== false && (paddingTop !== void 0 || paddingBottom !== void 0 || paddingLeft !== void 0 || paddingRight !== void 0);\n}\nfunction paddingFromProps(props) {\n  const { padding = 0, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  if (hasPaddingPerSide(props)) {\n    return {\n      top: paddingTop !== void 0 ? paddingTop : padding,\n      bottom: paddingBottom !== void 0 ? paddingBottom : padding,\n      left: paddingLeft !== void 0 ? paddingLeft : padding,\n      right: paddingRight !== void 0 ? paddingRight : padding\n    };\n  }\n  return {\n    top: padding,\n    bottom: padding,\n    left: padding,\n    right: padding\n  };\n}\nfunction makePaddingString({\n  top,\n  left,\n  bottom,\n  right\n}) {\n  if (top === right && right === bottom && bottom === left) {\n    return `${top}px`;\n  }\n  return `${top}px ${right}px ${bottom}px ${left}px`;\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nimport React35 from \"react\";\n\n// ../../library/src/modules/useSafariGapFix.tsx\nimport React34 from \"react\";\nfunction triggerStackReflow(element, display) {\n  if (!element)\n    return;\n  element.style.display = \"none\";\n  void element.offsetHeight;\n  element.style.display = display;\n}\nvar requiresPolyfill = /* @__PURE__ */ (() => Boolean(isSafari() && safariVersion() < 15.4))();\nfunction useSafariGapFix(gap, ref, display) {\n  if (!requiresPolyfill)\n    return void 0;\n  const isInitialRender = React34.useRef(true);\n  const hasTriggeredReflow = React34.useRef(false);\n  const prevGapValue = React34.useRef(gap);\n  hasTriggeredReflow.current = false;\n  React34.useLayoutEffect(() => {\n    prevGapValue.current = gap;\n    if (isInitialRender.current) {\n      isInitialRender.current = false;\n      return;\n    }\n    if (!hasTriggeredReflow.current) {\n      triggerStackReflow(ref.current, display);\n      hasTriggeredReflow.current = true;\n    }\n  }, [gap, ref, prevGapValue, display]);\n  return React34.useCallback(() => {\n    if (prevGapValue.current === gap)\n      return;\n    if (!hasTriggeredReflow.current)\n      triggerStackReflow(ref.current, display);\n    hasTriggeredReflow.current = true;\n  }, [gap, ref]);\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nimport { jsx as jsx28 } from \"react/jsx-runtime\";\nvar Stack = /* @__PURE__ */ (() => {\n  const StackInner = React35.forwardRef(\n    function StackInner2(stackProps, forwardedRef) {\n      const {\n        as = \"div\",\n        direction = \"vertical\",\n        distribution = \"start\",\n        alignment = \"center\",\n        gap = 10,\n        wrap: wrap2 = false,\n        useFlexboxGap: externalUseFlexboxGap = true,\n        children,\n        style: styleProp,\n        className: className2,\n        willChangeTransform,\n        __fromCodeComponentNode,\n        parentSize,\n        __contentWrapperStyle,\n        ...containerProps\n      } = stackProps;\n      const useFlexboxGap = Boolean(externalUseFlexboxGap || wrap2);\n      const stackRef = React35.useRef(null);\n      const onBeforeLayoutMeasure = useSafariGapFix(gap, stackRef, \"flex\");\n      const flexDirection = toFlexDirection(direction);\n      const isReverse = isReverseDirection(flexDirection);\n      const justifyContent = toJustifyOrAlignment(distribution);\n      const padding = hasPaddingPerSide(containerProps) || containerProps.padding ? makePaddingString(paddingFromProps(containerProps)) : void 0;\n      const style = { ...styleProp };\n      Layer.applyWillChange({ willChangeTransform }, style, true);\n      if (__fromCodeComponentNode && !constraintsEnabled(unwrapFrameProps(containerProps))) {\n        containerProps.width = \"100%\";\n        containerProps.height = \"100%\";\n        containerProps._constraints = { enabled: true };\n      }\n      const layoutId = useLayoutId(stackProps);\n      const { children: _children, props } = processOverrideForwarding(containerProps, children);\n      const widthType = containerProps.widthType ?? (containerProps.width === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const heightType = containerProps.heightType ?? (containerProps.height === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const fractionChildren = handleFraction(_children, direction, widthType, heightType);\n      const gapChildren = wrapInGapElementForLegacyGap(\n        fractionChildren,\n        gap,\n        flexDirection,\n        justifyContent,\n        useFlexboxGap,\n        wrap2\n      );\n      const content = useProvideParentSize(gapChildren, parentSize ?? 1 /* Disabled */);\n      const attributes = {\n        \"data-framer-component-type\": \"Stack\"\n      };\n      const fromCanvasComponent = containerProps.__fromCanvasComponent;\n      if (fromCanvasComponent)\n        attributes[\"data-framer-generated\"] = true;\n      const alignItems = toJustifyOrAlignment(alignment);\n      const contentWrapperStyle = {\n        display: \"flex\",\n        flexDirection,\n        flexWrap: wrap2 ? \"wrap\" : \"nowrap\",\n        justifyContent,\n        alignItems,\n        alignContent: alignItems,\n        padding,\n        ...__contentWrapperStyle\n      };\n      const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n      if (useFlexboxGap && gapEnabled) {\n        const gapSupportedInMainAxis = isGapSupportedInMainAxis(justifyContent);\n        if (gapSupportedInMainAxis || direction !== \"horizontal\") {\n          asRecord(contentWrapperStyle)[\"--stack-native-column-gap\"] = `${gap}px`;\n        }\n        if (gapSupportedInMainAxis || direction !== \"vertical\") {\n          asRecord(contentWrapperStyle)[\"--stack-native-row-gap\"] = `${gap}px`;\n        }\n      }\n      if (contentWrapperStyle.width === void 0) {\n        contentWrapperStyle.width = widthType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (contentWrapperStyle.height === void 0) {\n        contentWrapperStyle.height = heightType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (fromCanvasComponent) {\n        if (styleProp == null ? void 0 : styleProp.width)\n          contentWrapperStyle.width = styleProp == null ? void 0 : styleProp.width;\n        if (styleProp == null ? void 0 : styleProp.height)\n          contentWrapperStyle.height = styleProp == null ? void 0 : styleProp.height;\n      }\n      return /* @__PURE__ */ jsx28(\n        FrameWithMotion,\n        {\n          as,\n          background: fromCanvasComponent ? void 0 : \"none\",\n          ...props,\n          layoutId,\n          ref: useForwardedRef(forwardedRef, stackRef),\n          ...attributes,\n          style,\n          className: className2,\n          layoutScroll: true,\n          children: /* @__PURE__ */ jsx28(\n            motion.div,\n            {\n              \"data-framer-stack-content-wrapper\": true,\n              \"data-framer-stack-direction-reverse\": isReverse,\n              \"data-framer-stack-gap-enabled\": gapEnabled,\n              style: contentWrapperStyle,\n              onBeforeLayoutMeasure,\n              children: content\n            }\n          )\n        }\n      );\n    }\n  );\n  StackInner.defaultProps = {\n    distribution: \"start\"\n  };\n  StackInner.displayName = \"Stack\";\n  addPropertyControls(StackInner, {\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"vertical\"\n    },\n    distribution: {\n      type: \"enum\" /* Enum */,\n      options: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\", \"space-evenly\"],\n      optionTitles: [\"Start\", \"Center\", \"End\", \"Space Between\", \"Space Around\", \"Space Evenly\"],\n      title: \"Distribute\",\n      defaultValue: \"space-around\"\n    },\n    alignment: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"start\", \"center\", \"end\"],\n      title: \"Align\",\n      defaultValue: \"center\"\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      hidden: (props) => {\n        return props.distribution !== void 0 && [\"space-between\", \"space-around\", \"space-evenly\"].includes(props.distribution);\n      },\n      defaultValue: 10\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"t\", \"r\", \"b\", \"l\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    }\n  });\n  return StackInner;\n})();\nfunction isFractionDimension(dimension) {\n  return typeof dimension === \"string\" && dimension.endsWith(\"fr\");\n}\nfunction fraction(dimension) {\n  const value = parseFloat(dimension);\n  return isFiniteNumber(value) ? value : 0;\n}\nfunction handleFraction(children, direction, widthType, heightType) {\n  return React35.Children.map(children, (child) => {\n    if (!isReactChild(child) || !isReactElement(child))\n      return;\n    const isVertical = direction === \"vertical\";\n    const style = {};\n    let hasFraction = false;\n    const { style: propsStyle, size } = child.props;\n    let { width, height } = child.props;\n    if (size !== void 0) {\n      if (width === void 0)\n        width = size;\n      if (height === void 0)\n        height = size;\n    }\n    let newWidth = width;\n    let newHeight = height;\n    if (isFractionDimension(width)) {\n      hasFraction = true;\n      hasFraction = true;\n      if (isVertical) {\n        if (widthType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newWidth = \"auto\";\n        } else {\n          newWidth = `${fraction(width) * 100}%`;\n        }\n      } else {\n        newWidth = 1;\n        style.flexGrow = fraction(width);\n        style.flexBasis = 0;\n      }\n      style.width = newWidth;\n    }\n    if (isFractionDimension(height)) {\n      hasFraction = true;\n      if (isVertical) {\n        newHeight = 1;\n        style.flexGrow = fraction(height);\n        style.flexBasis = 0;\n      } else {\n        if (heightType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newHeight = \"auto\";\n        } else {\n          newHeight = `${fraction(height) * 100}%`;\n        }\n      }\n      style.height = newHeight;\n    }\n    if (!hasFraction)\n      return child;\n    const nextStyle = { ...propsStyle, ...style };\n    return React35.cloneElement(child, {\n      width: newWidth,\n      height: newHeight,\n      style: nextStyle\n    });\n  });\n}\nfunction isGapSupportedInMainAxis(justifyContent) {\n  if (!justifyContent)\n    return false;\n  return ![\"space-between\", \"space-around\", \"space-evenly\", \"stretch\"].includes(justifyContent);\n}\nfunction isGapEnabled(gap, justifyContent, wrap2) {\n  if (!gap) {\n    return false;\n  }\n  if (!wrap2 && !isGapSupportedInMainAxis(justifyContent)) {\n    return false;\n  }\n  return true;\n}\nfunction wrapInGapElementForLegacyGap(children, gap, direction, justifyContent, useFlexboxGap, wrap2) {\n  const gapStyle = {\n    // We need the wrapper to have `display: contents` to prevent the child\n    // margins from collapsing when using the fallback gap solution.\n    // https://codesandbox.io/s/dreamy-haslett-01ie5?file=/src/styles.css\n    display: \"contents\"\n  };\n  const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n  if (gapEnabled) {\n    const isVertical = isVerticalDirection(direction);\n    asRecord(gapStyle)[\"--stack-gap-x\"] = `${isVertical ? 0 : gap}px`;\n    asRecord(gapStyle)[\"--stack-gap-y\"] = `${isVertical ? gap : 0}px`;\n  }\n  return /* @__PURE__ */ jsx28(\n    \"div\",\n    {\n      \"data-framer-legacy-stack-gap-enabled\": gapEnabled,\n      \"data-framer-stack-flexbox-gap\": useFlexboxGap,\n      style: gapStyle,\n      children\n    }\n  );\n}\nfunction toFlexDirection(direction) {\n  switch (direction) {\n    case \"vertical\":\n      return \"column\";\n    case \"horizontal\":\n      return \"row\";\n    default:\n      return direction;\n  }\n}\nfunction isVerticalDirection(direction) {\n  return direction === \"column\" || direction === \"column-reverse\";\n}\nfunction isReverseDirection(direction) {\n  switch (direction) {\n    case \"column-reverse\":\n    case \"row-reverse\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction toJustifyOrAlignment(distribution) {\n  switch (distribution) {\n    case \"start\":\n      return \"flex-start\";\n    case \"end\":\n      return \"flex-end\";\n    default:\n      return distribution;\n  }\n}\nfunction useForwardedRef(forwardedRef, innerRef) {\n  return (element) => {\n    innerRef.current = element;\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(element);\n    } else if (forwardedRef) {\n      forwardedRef.current = element;\n    }\n  };\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nimport { jsx as jsx29 } from \"react/jsx-runtime\";\nvar pageContentWrapperType = \"PageContentWrapper\";\nfunction PageContainer({\n  children,\n  effect,\n  dragEnabled,\n  direction,\n  contentHeight,\n  contentWidth,\n  alignment,\n  gap,\n  isLastPage,\n  contentOffsetRef,\n  constraintsRef,\n  directionLock,\n  onDragStart,\n  onDrag,\n  onDragEnd,\n  layoutId\n}) {\n  const isHorizontalDirection = direction === \"horizontal\";\n  const dragAxis = isHorizontalDirection ? \"x\" : \"y\";\n  const hasHorizontalGap = isHorizontalDirection && !isLastPage && gap;\n  const hasVerticalGap = !isHorizontalDirection && !isLastPage && gap;\n  const hasAutoWidth = contentWidth !== \"stretch\" && isHorizontalDirection;\n  const hasAutoHeight = contentHeight !== \"stretch\" && !isHorizontalDirection;\n  const wrapperWidth = hasAutoWidth ? \"auto\" : \"100%\";\n  const wrapperHeight = hasAutoHeight ? \"auto\" : \"100%\";\n  const containerWidth = hasHorizontalGap && wrapperWidth === \"100%\" ? `calc(100% + ${gap}px)` : wrapperWidth;\n  const containerHeight = hasVerticalGap && wrapperHeight === \"100%\" ? `calc(100% + ${gap}px)` : wrapperHeight;\n  return /* @__PURE__ */ jsx29(\n    FrameWithMotion,\n    {\n      position: \"relative\",\n      \"data-framer-component-type\": \"PageContainer\",\n      width: containerWidth,\n      height: containerHeight,\n      layoutId: layoutId ? `${layoutId}-container` : void 0,\n      backgroundColor: \"transparent\",\n      drag: dragEnabled ? dragAxis : false,\n      dragDirectionLock: directionLock,\n      _dragX: contentOffsetRef.current.x,\n      _dragY: contentOffsetRef.current.y,\n      dragConstraints: constraintsRef.current,\n      onDrag,\n      onDragStart,\n      onDragEnd,\n      preserve3d: true,\n      style: {\n        pointerEvents: void 0,\n        paddingRight: hasHorizontalGap ? gap : 0,\n        paddingBottom: hasVerticalGap ? gap : 0\n      },\n      children: /* @__PURE__ */ jsx29(\n        FrameWithMotion,\n        {\n          position: \"relative\",\n          \"data-framer-component-type\": pageContentWrapperType,\n          width: wrapperWidth,\n          height: wrapperHeight,\n          preserve3d: false,\n          backgroundColor: \"transparent\",\n          style: {\n            ...effect,\n            pointerEvents: void 0,\n            display: \"flex\",\n            flexDirection: isHorizontalDirection ? \"row\" : \"column\",\n            alignItems: alignment && toJustifyOrAlignment(alignment)\n          },\n          children\n        },\n        effect ? Object.keys(effect).join(\"\") : \"\"\n      )\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nimport { jsx as jsx30, jsxs as jsxs9 } from \"react/jsx-runtime\";\nvar Page = /* @__PURE__ */ React36.forwardRef(function Page2(props, forwardedRef) {\n  var _a;\n  const {\n    direction = \"horizontal\",\n    contentWidth = \"stretch\",\n    contentHeight = \"stretch\",\n    alignment = \"start\",\n    currentPage = 0,\n    animateCurrentPageUpdate = true,\n    gap: gapValue = 10,\n    padding: _padding = 0,\n    momentum = false,\n    dragEnabled = true,\n    defaultEffect: _defaultEffect = \"none\",\n    background = \"transparent\",\n    overflow = \"hidden\",\n    __fromCodeComponentNode,\n    effect: _effect,\n    children,\n    contentOffsetX,\n    contentOffsetY,\n    onChangePage,\n    onScrollStart,\n    onScroll,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    directionLock,\n    onScrollEnd,\n    onDirectionLock: _onDirectionLock,\n    onUpdate: _onUpdate,\n    wheelEnabled = false,\n    layoutId: specificLayoutId,\n    ...rest\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"page\" });\n  const containerProps = { ...rest, background };\n  const hasMountedRef = React36.useRef(false);\n  const hasFixedSize = RenderTarget.hasRestrictions() && props.__fromCodeComponentNode && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height);\n  if (!hasFixedSize && __fromCodeComponentNode && !containerProps.__fromCanvasComponent) {\n    containerProps.width = \"100%\";\n    containerProps.height = \"100%\";\n    containerProps._constraints = { enabled: true };\n  }\n  const { initial, prev } = React36.useRef({\n    initial: { x: 0, y: 0 },\n    prev: { x: 0, y: 0 }\n  }).current;\n  const isHorizontal = direction === \"horizontal\";\n  let gap = gapValue;\n  if (gap < 0) {\n    warnOnce(`The 'gap' property of Page component can not be negative, but is ${gapValue}.`);\n    gap = 0;\n  }\n  React36.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const pageCount = React36.Children.count(children);\n  const maxOffsetRef = React36.useRef(0);\n  const constraints = React36.useRef({ top: 0, left: 0, right: 0, bottom: 0 });\n  const fallbackContainerRef = React36.useRef(null);\n  const containerRef = forwardedRef || fallbackContainerRef;\n  const scrollableRef = React36.useRef(null);\n  const pageEffectValuesRef = React36.useRef([]);\n  const pageRectsRef = React36.useRef([]);\n  const internalX = useMotionValue(isMotionValue2(contentOffsetX) ? 0 : contentOffsetX ?? 0);\n  const internalY = useMotionValue(isMotionValue2(contentOffsetY) ? 0 : contentOffsetY ?? 0);\n  const contentOffsetRef = React36.useRef({\n    x: isMotionValue2(contentOffsetX) ? contentOffsetX : internalX,\n    y: isMotionValue2(contentOffsetY) ? contentOffsetY : internalY\n  });\n  const currentContentPageRef = React36.useRef(currentPage);\n  const propsBoundedCurrentPageRef = React36.useRef(currentPage);\n  const latestPropsRef = React36.useRef(props);\n  latestPropsRef.current = props;\n  const lastDirectionRef = React36.useRef(props.direction);\n  const snapToPage = useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal);\n  const [_, setForceUpdateCount] = React36.useState(0);\n  const containerSizeRef = React36.useRef({ width: 200, height: 200 });\n  if (hasFixedSize && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height)) {\n    containerSizeRef.current.width = containerProps.width;\n    containerSizeRef.current.height = containerProps.height;\n  }\n  const updateOnResize = React36.useCallback(() => {\n    if (!hasFixedSize)\n      setForceUpdateCount((v) => v + 1);\n  }, [hasFixedSize]);\n  React36.useEffect(() => {\n    if (RenderTarget.current() !== RenderTarget.preview)\n      return;\n    globalThis.addEventListener(\"resize\", updateOnResize);\n    return () => {\n      globalThis.removeEventListener(\"resize\", updateOnResize);\n    };\n  }, [updateOnResize]);\n  const applyEffects = () => {\n    pageEffectValuesRef.current.forEach((effectDictionary, index) => {\n      const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n      if (!effectDictionary || !values)\n        return;\n      for (const [key7, value] of Object.entries(values)) {\n        const effectValue = effectDictionary[key7];\n        if (isMotionValue2(effectValue)) {\n          effectValue.set(value);\n        }\n      }\n    });\n  };\n  const updateMaxOffsetFromPageContents = (containerSize) => {\n    const newPageContentRects = getPageContentRects(containerRef, containerSize, direction, gap);\n    if (newPageContentRects)\n      pageRectsRef.current = newPageContentRects;\n    const newMaxOffset = getMaxOffset(\n      containerSizeRef.current,\n      pageRectsRef.current,\n      direction,\n      latestPropsRef.current\n    );\n    if (newMaxOffset !== maxOffsetRef.current) {\n      maxOffsetRef.current = newMaxOffset;\n      constraints.current.top = -newMaxOffset;\n      constraints.current.left = -newMaxOffset;\n      if (RenderTarget.current() === RenderTarget.canvas)\n        setForceUpdateCount((v) => v + 1);\n    }\n  };\n  const measureContainerSize = () => {\n    const element = containerRef.current;\n    if (!element)\n      return null;\n    const { offsetWidth, offsetHeight } = element;\n    const currentSize = containerSizeRef.current;\n    if (offsetWidth !== currentSize.width || offsetHeight !== currentSize.height) {\n      containerSizeRef.current = {\n        width: offsetWidth,\n        height: offsetHeight\n      };\n      return containerSizeRef.current;\n    }\n    return null;\n  };\n  const updateAndSnapToPage = (newPage, mount = false) => {\n    const newBoundedCurrentPage = getBoundedCurrentPage(newPage, pageCount);\n    const boundedCurrentPageDidChange = newBoundedCurrentPage !== propsBoundedCurrentPageRef.current;\n    if (boundedCurrentPageDidChange) {\n      propsBoundedCurrentPageRef.current = newBoundedCurrentPage;\n      updateCurrentPage(newBoundedCurrentPage, currentContentPageRef, !mount ? onChangePage : void 0);\n    }\n    const offset = offsetForPage(newBoundedCurrentPage, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    const animated = animateCurrentPageUpdate && RenderTarget.current() !== RenderTarget.canvas && !mount;\n    snapToPage(newBoundedCurrentPage, offset, { animated });\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (hasMountedRef.current)\n      return;\n    requestAnimationFrame(() => {\n      currentContentPageRef.current = currentPage;\n      const contentOffset = contentOffsetRef.current;\n      contentOffset.x.on(\"change\", applyEffects);\n      contentOffset.y.on(\"change\", applyEffects);\n      applyEffects();\n      hasMountedRef.current = true;\n      const containerSize = measureContainerSize() ?? containerSizeRef.current;\n      updateMaxOffsetFromPageContents(containerSize);\n      updateAndSnapToPage(currentContentPageRef.current, true);\n    });\n  }, []);\n  React36.useEffect(() => {\n    if (currentPage !== currentContentPageRef.current)\n      updateAndSnapToPage(currentPage);\n  }, [currentPage]);\n  const handleMeasureLifecycle = () => {\n    const newContainerSize = measureContainerSize();\n    updateMaxOffsetFromPageContents(newContainerSize ?? containerSizeRef.current);\n    updateAndSnapToPage(currentContentPageRef.current);\n    if (newContainerSize || direction !== lastDirectionRef.current) {\n      if (direction === \"horizontal\") {\n        contentOffsetRef.current.y.set(0);\n      } else {\n        contentOffsetRef.current.x.set(0);\n      }\n      lastDirectionRef.current = direction;\n    }\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (RenderTarget.current() !== RenderTarget.canvas)\n      return;\n    handleMeasureLifecycle();\n  });\n  const onDragStartHandler = (event, info) => {\n    if (onScrollStart)\n      onScrollStart(info);\n    if (onDragStart)\n      onDragStart(event, info);\n    prev.x = initial.x = info.point.x;\n    prev.y = initial.y = info.point.y;\n  };\n  const onDragHandler = (event, info) => {\n    if (onScroll)\n      onScroll(info);\n    if (onDrag)\n      onDrag(event, info);\n    prev.x = info.point.x;\n    prev.y = info.point.y;\n  };\n  const onDragTransitionEnd = () => {\n    if (props.onDragTransitionEnd)\n      props.onDragTransitionEnd();\n    if (onScrollEnd) {\n      const { x, y } = contentOffsetRef.current;\n      const point = { x: x.get(), y: y.get() };\n      onScrollEnd({\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      });\n    }\n  };\n  const onDragEndHandler = async (event, info) => {\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    contentOffset.stop();\n    const startPosition = contentOffset.get();\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const velocity = info.velocity[axis];\n    let index = nearestPageIndex(pageRectsRef.current, startPosition, startPosition, isHorizontal, momentum);\n    if (velocity) {\n      animateValue({\n        type: \"inertia\",\n        keyframes: [startPosition],\n        velocity,\n        modifyTarget: (endPosition) => {\n          index = nearestPageIndex(pageRectsRef.current, startPosition, endPosition, isHorizontal, momentum);\n          return endPosition;\n        }\n      }).stop();\n    }\n    updateCurrentPage(index, currentContentPageRef, onChangePage);\n    const offset = offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    if (onDragEnd)\n      onDragEnd(event, info);\n    const handler = contentOffsetRef.current[axis];\n    handler.set(startPosition);\n    animate(handler, offset, {\n      type: \"spring\",\n      velocity,\n      stiffness: 500,\n      damping: 50,\n      onComplete: onDragTransitionEnd\n    });\n  };\n  pageEffectValuesRef.current = [];\n  const childComponents = React36.Children.map(children, (child, index) => {\n    if (!isReactChild(child) || !isReactElement(child)) {\n      return child;\n    }\n    const update = {\n      right: void 0,\n      bottom: void 0,\n      top: void 0,\n      left: void 0,\n      _constraints: {\n        enabled: false\n      }\n    };\n    if (containerProps.__fromCanvasComponent) {\n      update.style = child.props.style ?? {};\n      if (contentWidth === \"stretch\")\n        update.style.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.style.height = \"100%\";\n    } else {\n      if (contentWidth === \"stretch\")\n        update.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.height = \"100%\";\n    }\n    let effectDictionary;\n    const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n    if (values) {\n      effectDictionary = {};\n      for (const key7 in values) {\n        effectDictionary[key7] = motionValue(values[key7]);\n      }\n    }\n    pageEffectValuesRef.current.push(effectDictionary);\n    return /* @__PURE__ */ jsx30(\n      PageContainer,\n      {\n        effect: effectDictionary,\n        dragEnabled,\n        direction,\n        contentHeight,\n        contentWidth,\n        alignment,\n        gap,\n        isLastPage: index === pageCount - 1,\n        contentOffsetRef,\n        constraintsRef: constraints,\n        directionLock,\n        onDragStart: onDragStartHandler,\n        onDrag: onDragHandler,\n        onDragEnd: onDragEndHandler,\n        layoutId: layoutId ? `${layoutId}-${index}` : void 0,\n        children: React36.cloneElement(child, update)\n      },\n      index\n    );\n  });\n  useWheelScroll(scrollableRef, {\n    enabled: wheelEnabled,\n    initial,\n    prev,\n    direction,\n    constraints,\n    offsetX: contentOffsetRef.current.x,\n    offsetY: contentOffsetRef.current.y,\n    onScrollStart,\n    onScroll,\n    onScrollEnd\n  });\n  return /* @__PURE__ */ jsx30(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"PageWrapper\",\n      preserve3d: false,\n      perspective: hasEffect(props) ? 1200 : void 0,\n      ...containerProps,\n      style: { pointerEvents: void 0, ...containerProps.style, overflow },\n      layoutId,\n      ref: containerRef,\n      onLayoutMeasure: handleMeasureLifecycle,\n      children: /* @__PURE__ */ jsxs9(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"Page\",\n          ref: scrollableRef,\n          background: null,\n          x: contentOffsetRef.current.x,\n          y: contentOffsetRef.current.y,\n          width: \"100%\",\n          height: \"100%\",\n          preserve3d: true,\n          layout: true,\n          layoutId: layoutId !== void 0 ? layoutId + \"-page\" : void 0,\n          style: {\n            padding: makePaddingString(paddingFromProps(props)),\n            display: \"flex\",\n            flexDirection: isHorizontal ? \"row\" : \"column\",\n            pointerEvents: (_a = props.style) == null ? void 0 : _a.pointerEvents\n          },\n          children: [\n            /* @__PURE__ */ jsx30(\n              EmptyState,\n              {\n                title: \"Page\",\n                description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n                children,\n                size: containerSizeRef.current,\n                insideUserCodeComponent: !__fromCodeComponentNode\n              }\n            ),\n            childComponents\n          ]\n        }\n      )\n    }\n  );\n});\nfunction cubeEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    originX: normalizedOffset < 0 ? 1 : 0,\n    originY: normalizedOffset < 0 ? 1 : 0,\n    rotateY: isHorizontal ? Math.min(Math.max(-90, normalizedOffset * 90), 90) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(Math.max(-90, normalizedOffset * -90), 90),\n    backfaceVisibility: \"hidden\",\n    WebkitBackfaceVisibility: \"hidden\"\n  };\n}\nfunction coverflowEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    rotateY: isHorizontal ? Math.min(45, Math.max(-45, normalizedOffset * -45)) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(45, Math.max(-45, normalizedOffset * 45)),\n    originX: isHorizontal ? normalizedOffset < 0 ? 0 : 1 : 0.5,\n    originY: isHorizontal ? 0.5 : normalizedOffset < 0 ? 0 : 1,\n    x: isHorizontal ? `${normalizedOffset * -25}%` : 0,\n    y: isHorizontal ? 0 : `${normalizedOffset * -25}%`,\n    z: -Math.abs(normalizedOffset),\n    scale: 1 - Math.abs(normalizedOffset / 10)\n  };\n}\nfunction calcPileAxisOffset(offset, length) {\n  return offset * length - offset * 8;\n}\nfunction pileEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const absoluteOffset = Math.abs(normalizedOffset);\n  return {\n    x: normalizedOffset < 0 && isHorizontal ? calcPileAxisOffset(absoluteOffset, size.width) : 0,\n    y: normalizedOffset < 0 && !isHorizontal ? calcPileAxisOffset(absoluteOffset, size.height) : 0,\n    scale: normalizedOffset < 0 ? 1 - absoluteOffset / 50 : 1\n  };\n}\nfunction wheelEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const originZ = (isHorizontal ? size.width : size.height) * 18 / (2 * Math.PI);\n  const rotateX = isHorizontal ? 0 : normalizedOffset * -20;\n  const rotateY = isHorizontal ? normalizedOffset * 20 : 0;\n  const y = isHorizontal ? 0 : normalizedOffset * -size.height;\n  const x = isHorizontal ? normalizedOffset * -size.width : 0;\n  return {\n    opacity: 1 - Math.abs(normalizedOffset) / 4,\n    transform: `translate(${x}px, ${y}px) translateZ(-${originZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(${originZ}px)`\n  };\n}\nfunction getDefaultEffect(type) {\n  switch (type) {\n    case \"cube\":\n      return cubeEffect;\n    case \"coverflow\":\n      return coverflowEffect;\n    case \"pile\":\n      return pileEffect;\n    case \"wheel\":\n      return wheelEffect;\n    default:\n      return null;\n  }\n}\nfunction nearestPageIndex(pageRects, startPosition, endPosition, isHorizontalDirection, allowSkippingPages) {\n  const distanceToStart = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + startPosition);\n  };\n  const distanceToEnd = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + endPosition);\n  };\n  if (allowSkippingPages) {\n    const closestPages = [...pageRects].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  } else {\n    const closestToStart = [...pageRects].sort((a, b) => distanceToStart(a) - distanceToStart(b));\n    if (closestToStart.length === 1 && closestToStart[0])\n      return pageRects.indexOf(closestToStart[0]);\n    const pageA = closestToStart[0];\n    const pageB = closestToStart[1];\n    if (!pageA || !pageB)\n      return -1;\n    const closestPages = [pageA, pageB].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  }\n}\nfunction getPageContentRects(containerRef, containerSize, direction, gap) {\n  var _a;\n  const containerElement = containerRef.current;\n  if (!containerElement)\n    return;\n  const contentWrappers = [];\n  (_a = containerElement.firstChild) == null ? void 0 : _a.childNodes.forEach((node) => {\n    const childNode = node.firstChild;\n    if (!(childNode instanceof HTMLElement))\n      return;\n    const componentType = childNode.getAttribute(\"data-framer-component-type\");\n    if (componentType === pageContentWrapperType) {\n      contentWrappers.push(childNode);\n    }\n  });\n  const sizes = [];\n  contentWrappers.forEach((contentWrapper) => {\n    if (contentWrapper instanceof HTMLElement && contentWrapper.firstChild instanceof HTMLElement) {\n      let width = contentWrapper.firstChild.offsetWidth;\n      let height = contentWrapper.firstChild.offsetHeight;\n      if (import_process2.default.env.NODE_ENV === \"test\") {\n        width = 100;\n        height = 100;\n      }\n      sizes.push({ width, height });\n    } else {\n      sizes.push(null);\n    }\n  });\n  let maxX = 0;\n  let maxY = 0;\n  const isHorizontal = direction === \"horizontal\";\n  return sizes.map((queriedSize) => {\n    const size = queriedSize || containerSize;\n    const x = maxX;\n    const y = maxY;\n    if (isHorizontal) {\n      maxX += size.width + gap;\n    } else {\n      maxY += size.height + gap;\n    }\n    return { ...size, x, y };\n  });\n}\nfunction getMaxOffset(containerSize, pageContentRects, direction, paddingProps) {\n  const lastPageRect = pageContentRects[pageContentRects.length - 1];\n  if (!lastPageRect)\n    return 0;\n  const paddingSides = paddingFromProps(paddingProps);\n  const isHorizontal = direction === \"horizontal\";\n  const paddingStart = isHorizontal ? paddingSides.left : paddingSides.top;\n  const paddingEnd = isHorizontal ? paddingSides.right : paddingSides.bottom;\n  const pageWidth = isHorizontal ? lastPageRect.width : lastPageRect.height;\n  const containerWidth = isHorizontal ? containerSize.width : containerSize.height;\n  const freeSpace = containerWidth - paddingStart - paddingEnd - pageWidth;\n  const target = isHorizontal ? lastPageRect.x : lastPageRect.y;\n  if (freeSpace <= 0)\n    return Math.max(target, 0);\n  return Math.max(target - freeSpace, 0);\n}\nfunction offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef) {\n  const pageIndex = Math.max(0, Math.min(pageCount - 1, index));\n  const currentPageRect = pageRectsRef.current[pageIndex];\n  if (!currentPageRect) {\n    return 0;\n  }\n  if (isHorizontal) {\n    return -Math.min(currentPageRect.x, maxOffsetRef.current);\n  } else {\n    return -Math.min(currentPageRect.y, maxOffsetRef.current);\n  }\n}\nfunction useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal) {\n  return (pageIndex, offset, options) => {\n    currentContentPageRef.current = pageIndex;\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    if (!options || !options.animated) {\n      contentOffset.set(offset);\n      return;\n    }\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const value = contentOffsetRef.current[axis];\n    value.set(contentOffset.get());\n    animate(value, offset, {\n      type: \"spring\",\n      velocity: contentOffset.getVelocity(),\n      stiffness: 500,\n      damping: 50\n    });\n  };\n}\nfunction getBoundedCurrentPage(pageIndex, pageCount) {\n  return pageIndex >= 0 ? Math.min(pageIndex, pageCount - 1) : (pageIndex % pageCount + pageCount) % pageCount;\n}\nfunction effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef) {\n  const {\n    direction: latestDirection = \"horizontal\",\n    defaultEffect: latestDefaultEffect,\n    effect: latestEffect,\n    gap: latestGap = 10\n  } = latestPropsRef.current;\n  const latestIsHorizontal = latestDirection === \"horizontal\";\n  const pageRect = pageRectsRef.current[index] || {\n    x: latestIsHorizontal ? index * 200 + latestGap : 0,\n    y: latestIsHorizontal ? 0 : index * 200 + latestGap,\n    width: 200,\n    height: 200\n  };\n  const effectFunction = latestEffect || getDefaultEffect(latestDefaultEffect);\n  if (!effectFunction)\n    return null;\n  let offset;\n  let normalizedOffset;\n  const contentOffset = contentOffsetRef.current;\n  const maxScrollOffset = maxOffsetRef.current;\n  if (latestIsHorizontal) {\n    offset = Math.min(pageRect.x, maxScrollOffset) + (contentOffset ? contentOffset.x.get() : 0);\n    normalizedOffset = offset / (pageRect.width + latestGap);\n  } else {\n    offset = Math.min(pageRect.y, maxScrollOffset) + (contentOffset ? contentOffset.y.get() : 0);\n    normalizedOffset = offset / (pageRect.height + latestGap);\n  }\n  const size = { width: pageRect.width, height: pageRect.height };\n  return effectFunction({\n    offset,\n    normalizedOffset,\n    size,\n    index,\n    direction: latestDirection,\n    gap: latestGap,\n    pageCount: pageRectsRef.current.length\n  });\n}\nfunction hasEffect(props) {\n  return !!props.effect || !!getDefaultEffect(props.defaultEffect);\n}\nfunction updateCurrentPage(newPageIndex, currentContentPageRef, onChangePage) {\n  if (currentContentPageRef.current === newPageIndex)\n    return;\n  if (onChangePage)\n    onChangePage(newPageIndex, currentContentPageRef.current);\n  currentContentPageRef.current = newPageIndex;\n}\n\n// ../../library/src/components/Page/Page.tsx\nvar Page3 = /* @__PURE__ */ (() => {\n  const ContentDimension = {\n    Auto: \"auto\",\n    Stretch: \"stretch\"\n  };\n  const pageContentDimensionOptions = [ContentDimension.Auto, ContentDimension.Stretch];\n  const pageContentDimensionTitles = /* @__PURE__ */ pageContentDimensionOptions.map((option) => {\n    switch (option) {\n      case ContentDimension.Auto:\n        return \"Auto\";\n      case ContentDimension.Stretch:\n        return \"Stretch\";\n    }\n  });\n  const pageEffectOptions = [\"none\", \"cube\", \"coverflow\", \"wheel\", \"pile\"];\n  const pageEffectTitles = /* @__PURE__ */ pageEffectOptions.map((option) => {\n    switch (option) {\n      case \"none\":\n        return \"None\";\n      case \"cube\":\n        return \"Cube\";\n      case \"coverflow\":\n        return \"Cover Flow\";\n      case \"wheel\":\n        return \"Wheel\";\n      case \"pile\":\n        return \"Pile\";\n    }\n  });\n  const pageAlignmentOptions = [\"start\", \"center\", \"end\"];\n  const genericAlignmentTitles = /* @__PURE__ */ pageAlignmentOptions.map((option) => {\n    switch (option) {\n      case \"start\":\n        return \"Start\";\n      case \"center\":\n        return \"Center\";\n      case \"end\":\n        return \"End\";\n    }\n  });\n  Page.defaultProps = {\n    gap: 10,\n    directionLock: false\n  };\n  addPropertyControls(Page, {\n    direction: {\n      type: \"enum\" /* Enum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"horizontal\",\n      displaySegmentedControl: true,\n      optionIcons: [\"direction-horizontal\", \"direction-vertical\"]\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    contentWidth: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Width\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    contentHeight: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Height\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    alignment: {\n      type: \"enum\" /* Enum */,\n      options: pageAlignmentOptions,\n      optionTitles: genericAlignmentTitles,\n      title: \"Align\",\n      hidden(props) {\n        const { direction, contentWidth, contentHeight } = props;\n        const isHorizontalDirection = direction === \"horizontal\";\n        const crossDimension = isHorizontalDirection ? contentHeight : contentWidth;\n        return crossDimension === ContentDimension.Stretch;\n      },\n      defaultValue: \"start\",\n      displaySegmentedControl: true,\n      optionIcons: {\n        direction: {\n          horizontal: [\"align-top\", \"align-middle\", \"align-bottom\"],\n          vertical: [\"align-left\", \"align-center\", \"align-right\"]\n        }\n      }\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      defaultValue: 0\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    },\n    overflow: {\n      type: \"enum\" /* Enum */,\n      title: \"Overflow\",\n      defaultValue: \"hidden\",\n      options: [\"visible\", \"hidden\"],\n      optionTitles: [\"Visible\", \"Hidden\"],\n      displaySegmentedControl: true\n    },\n    currentPage: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Current\",\n      displayStepper: true,\n      defaultValue: 0\n    },\n    momentum: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      title: \"Momentum\",\n      defaultValue: false\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: false\n    },\n    defaultEffect: {\n      type: \"enum\" /* Enum */,\n      options: pageEffectOptions,\n      optionTitles: pageEffectTitles,\n      title: \"Effect\",\n      defaultValue: \"none\"\n    },\n    children: {\n      type: \"array\" /* Array */,\n      title: \"Content\",\n      control: { type: \"componentinstance\" /* ComponentInstance */, title: \"Page\" }\n    }\n  });\n  Page.supportsConstraints = true;\n  return Page;\n})();\n\n// ../../library/src/components/Screen.tsx\nimport React37, { Component as Component9 } from \"react\";\n\n// ../../library/src/events/recognizer/GestureRecognizer.ts\nfunction stateName(state) {\n  switch (state) {\n    case 2 /* Possible */:\n      return \"Possible\";\n    case 4 /* Began */:\n      return \"Began\";\n    case 8 /* Changed */:\n      return \"Changed\";\n    case 16 /* Ended */:\n      return \"Ended\";\n    case 32 /* Failed */:\n      return \"Failed\";\n    case 64 /* Cancelled */:\n      return \"Cancelled\";\n    case 128 /* Recognized */:\n      return \"Recognized\";\n    default:\n      return \"Unknown\";\n  }\n}\nfunction containsBitmask(value, bitmask) {\n  return (value & bitmask) !== 0;\n}\nvar GestureRecognizer = class {\n  constructor() {\n    __publicField(this, \"_state\", 2 /* Possible */);\n    __publicField(this, \"handler\");\n    __publicField(this, \"preventers\", []);\n  }\n  get state() {\n    return this._state;\n  }\n  setState(state) {\n    this._state = state;\n  }\n  get isPrevented() {\n    let prevented = false;\n    for (const recognizer of this.preventers) {\n      if (recognizer.state & (4 /* Began */ | 8 /* Changed */ | 16 /* Ended */)) {\n        prevented = true;\n        break;\n      }\n    }\n    return prevented;\n  }\n  canBePreventedBy(recognizer) {\n    this.preventers.push(recognizer);\n  }\n  hasState(bitmask) {\n    return containsBitmask(this.state, bitmask);\n  }\n  stateSwitch(newState) {\n    let allowedStates;\n    switch (this.state) {\n      case 2 /* Possible */:\n        allowedStates = 4 /* Began */ | 128 /* Recognized */ | 32 /* Failed */;\n        break;\n      case 4 /* Began */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 8 /* Changed */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 128 /* Recognized */:\n      case 16 /* Ended */:\n      case 64 /* Cancelled */:\n      case 32 /* Failed */:\n        allowedStates = 2 /* Possible */;\n        break;\n      default:\n        allowedStates = 0;\n    }\n    if (!containsBitmask(newState, allowedStates)) {\n      console.warn(`Unallowed state change from ${stateName(this.state)} to ${stateName(newState)}`);\n      return;\n    }\n    this.setState(newState);\n  }\n  cancel() {\n    if (this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      this.setState(64 /* Cancelled */);\n    }\n    this.reset();\n  }\n  reset() {\n    if (!this.hasState(2 /* Possible */)) {\n      this.stateSwitch(2 /* Possible */);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/MouseWheelGestureRecognizer.ts\nvar MouseWheelGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"startEvent\");\n    __publicField(this, \"eventType\", \"mousewheel\");\n    __publicField(this, \"onMouseWheelEnd\", debounce((event) => {\n      if (this.handler && this.startEvent) {\n        this.stateSwitch(16 /* Ended */);\n        this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n        this.startEvent = null;\n        this.reset();\n      }\n    }, 300));\n  }\n  pointerSessionBegan(session, event) {\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n  }\n  mouseWheel(session, event) {\n    if (!this.handler)\n      return;\n    if (this.hasState(2 /* Possible */)) {\n      this.startEvent = event;\n      this.stateSwitch(4 /* Began */);\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n      return;\n    }\n    if (this.hasState(4 /* Began */ | 8 /* Changed */) && this.startEvent) {\n      this.stateSwitch(8 /* Changed */);\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n    this.onMouseWheelEnd(event);\n  }\n};\n\n// ../../library/src/events/recognizer/PanGestureRecognizer.ts\nvar PanGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"startEvent\");\n    __publicField(this, \"eventType\", \"pan\");\n  }\n  pointerSessionBegan(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionMoved(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionEnded(session, event) {\n    this.panend(event);\n  }\n  recognize(session, event) {\n    if (Math.abs(event.delta.x) > 0 || Math.abs(event.delta.y) > 0) {\n      if (this.startEvent) {\n        this.pan(event);\n      } else {\n        this.panstart(event);\n      }\n    }\n  }\n  reset() {\n    this.startEvent = null;\n    super.reset();\n  }\n  panstart(event) {\n    if (!this.hasState(2 /* Possible */) || event.isLeftMouseClick !== void 0 && !event.isLeftMouseClick) {\n      return;\n    }\n    this.stateSwitch(4 /* Began */);\n    this.startEvent = event;\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n    }\n  }\n  pan(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(8 /* Changed */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n  }\n  panend(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(16 /* Ended */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/TapGestureRecognizer.ts\nvar TapGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"eventType\", \"tap\");\n  }\n  pointerSessionBegan(session, event) {\n    if (this.handler && (event.isLeftMouseClick === void 0 || event.isLeftMouseClick)) {\n      this.handler.gestureBegan(this.eventType, event, null);\n    }\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n    if (this.isPrevented) {\n      this.stateSwitch(32 /* Failed */);\n    } else if (!session.startEvent || session.startEvent.target === event.target) {\n      this.stateSwitch(128 /* Recognized */);\n      if (this.handler) {\n        this.handler.gestureChanged(this.eventType, event, null);\n      }\n    } else {\n      this.stateSwitch(32 /* Failed */);\n    }\n    if (this.handler) {\n      this.handler.gestureEnded(this.eventType, event, null);\n    }\n  }\n};\n\n// ../../library/src/events/FramerEventSession.ts\nvar FramerEventSession = class {\n  constructor(dispatcher, customOrigin) {\n    __publicField(this, \"events\", []);\n    __publicField(this, \"recognizers\", []);\n    __publicField(this, \"mouseWheelRecognizer\", new MouseWheelGestureRecognizer());\n    __publicField(this, \"dispatcher\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"originElement\");\n    this.dispatcher = dispatcher;\n    if (customOrigin) {\n      this.originElement = customOrigin;\n    } else {\n      this.originElement = document.body;\n    }\n    const pan = new PanGestureRecognizer();\n    const tap = new TapGestureRecognizer();\n    pan.handler = this;\n    tap.handler = this;\n    this.mouseWheelRecognizer.handler = this;\n    this.recognizers = [tap, pan];\n  }\n  get isStarted() {\n    return this.events.length !== 0;\n  }\n  get startEvent() {\n    return this.isStarted ? this.events[0] : void 0;\n  }\n  get lastEvent() {\n    return this.events[this.events.length - 1];\n  }\n  // Event handling\n  processEvent(event) {\n    this.events.push(event);\n    return event;\n  }\n  pointerDown(event) {\n    if (this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.cancel();\n      r.pointerSessionBegan(this, event);\n    });\n  }\n  pointerMove(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionMoved(this, event);\n    });\n  }\n  pointerUp(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionEnded(this, event);\n    });\n    this.clearEvents();\n    this.recognizers.map((r) => {\n      r.reset();\n    });\n  }\n  mouseWheel(event) {\n    this.processEvent(event);\n    this.mouseWheelRecognizer.mouseWheel(this, event);\n    this.clearEvents();\n  }\n  clearEvents() {\n    this.events = [];\n  }\n  dispatch(type, event, target = null) {\n    const dispatchTarget = target || this.startEvent && this.startEvent.target || event.target;\n    if (dispatchTarget) {\n      this.dispatcher(type, event, dispatchTarget);\n    }\n  }\n  // Gesture Handler\n  gestureBegan(type, event, target) {\n    this.dispatch(`${type}start`, event, target);\n  }\n  gestureChanged(type, event, target) {\n    this.dispatch(type, event, target);\n  }\n  gestureEnded(type, event, target) {\n    this.dispatch(`${type}end`, event, target);\n  }\n  // Calculatinos\n  /**\n   * Average velocity over last n seconds in pixels per second.\n   * @param n - number of events to use for calculation\n   */\n  velocity(t = Loop.TimeStep * 2) {\n    if (!this.isStarted || this.events.length < 2) {\n      return { x: 0, y: 0 };\n    }\n    const events = this.events;\n    let i = events.length - 1;\n    let event = null;\n    while (i >= 0) {\n      event = events[i] ?? null;\n      if (!event || MainLoop.time - event.loopTime > t) {\n        break;\n      }\n      i--;\n    }\n    if (!event) {\n      return { x: 0, y: 0 };\n    }\n    const current = events[events.length - 1];\n    if (!current) {\n      return { x: 0, y: 0 };\n    }\n    const time = (MainLoop.time - event.loopTime) * 1e3;\n    if (time === 0) {\n      return { x: 0, y: 0 };\n    }\n    const velocity = {\n      x: (current.devicePoint.x - event.devicePoint.x) / time,\n      y: (current.devicePoint.y - event.devicePoint.y) / time\n    };\n    if (velocity.x === Infinity) {\n      velocity.x = 0;\n    }\n    if (velocity.y === Infinity) {\n      velocity.y = 0;\n    }\n    return velocity;\n  }\n  offset(event) {\n    if (!this.startEvent) {\n      return { x: 0, y: 0 };\n    }\n    const subtract = (pointA, pointB) => {\n      return {\n        x: pointA.x - pointB.x,\n        y: pointA.y - pointB.y\n      };\n    };\n    return subtract(event.devicePoint, this.startEvent.devicePoint);\n  }\n};\n\n// ../../library/src/events/recognizer/MouseEventListener.ts\nimport { Component as Component7 } from \"react\";\nvar MouseEventListener = class extends Component7 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseDown\", (originalEvent) => {\n      safeWindow.addEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.addEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseMove\", (originalEvent) => {\n      const leftMouseButtonOnlyDown = originalEvent.buttons === void 0 ? originalEvent.which === 1 : originalEvent.buttons === 1;\n      if (!leftMouseButtonOnlyDown) {\n        this.domMouseUp(originalEvent);\n        return;\n      }\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseUp\", (originalEvent) => {\n      safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseWheel\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.mouseWheel(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.addEventListener(\"wheel\", this.domMouseWheel);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n    safeWindow.removeEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n    safeWindow.removeEventListener(\"wheel\", this.domMouseWheel);\n  }\n};\n\n// ../../library/src/events/recognizer/TouchEventListener.ts\nimport { Component as Component8 } from \"react\";\nvar TouchEventListener = class extends Component8 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchStart\", (originalEvent) => {\n      safeWindow.addEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.addEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchMove\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchEnd\", (originalEvent) => {\n      safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"touchstart\", this.domTouchStart);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"touchstart\", this.domTouchStart);\n    safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n    safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n  }\n};\n\n// ../../library/src/events/FramerEventListener.ts\nvar FramerEventListener = /* @__PURE__ */ environment.isTouch() ? TouchEventListener : MouseEventListener;\n\n// ../../library/src/components/Screen.tsx\nimport { jsx as jsx31 } from \"react/jsx-runtime\";\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport React41 from \"react\";\n\n// ../../library/src/components/Scroll/EmulatedScroll.tsx\nimport React38, { useCallback as useCallback7, useInsertionEffect as useInsertionEffect2, useMemo as useMemo4, useRef as useRef13 } from \"react\";\nimport { jsx as jsx32, jsxs as jsxs10 } from \"react/jsx-runtime\";\nvar directionMap = {\n  horizontal: \"x\",\n  vertical: \"y\",\n  both: true\n};\nfunction convertScrollDirectionToDrag(scrollDirection) {\n  return scrollDirection ? directionMap[scrollDirection] : scrollDirection;\n}\nvar useUpdateChildSize = ({\n  dragDirection,\n  children,\n  fromCanvasComponent\n}) => {\n  return useMemo4(() => {\n    return React38.Children.map(children, (child) => {\n      if (child === null || typeof child !== \"object\" || typeof child.type === \"string\") {\n        return child;\n      }\n      const updatedSize = {};\n      switch (dragDirection) {\n        case \"vertical\":\n          updatedSize.width = \"100%\";\n          break;\n        case \"horizontal\":\n          updatedSize.height = \"100%\";\n          break;\n        default:\n          return child;\n      }\n      const update = fromCanvasComponent ? { style: Object.assign({}, child.props.style, updatedSize) } : updatedSize;\n      return React38.cloneElement(child, update);\n    });\n  }, [dragDirection, children]);\n};\nvar numberFromOptionalMotionValue = (value) => {\n  return typeof value === \"number\" ? value : value.get();\n};\nvar EmulatedScroll = /* @__PURE__ */ React38.forwardRef(\n  function EmulatedScroll2(props, forwardedRef) {\n    const {\n      direction = \"vertical\",\n      directionLock = false,\n      dragEnabled = true,\n      dragElastic,\n      dragMomentum,\n      dragTransition,\n      wheelEnabled = true,\n      contentOffsetX = 0,\n      contentOffsetY = 0,\n      contentWidth,\n      contentHeight,\n      onScrollStart,\n      onScroll,\n      onScrollEnd,\n      onDragStart,\n      onDrag,\n      onDragEnd,\n      onUpdate,\n      onDirectionLock,\n      style,\n      children,\n      scrollAnimate,\n      resetOffset,\n      overdragEnabled = true,\n      layoutId: specificLayoutId,\n      native: _native,\n      ...containerProps\n    } = props;\n    const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n    const defaultX = useMotionValue(typeof contentOffsetX === \"number\" ? contentOffsetX : 0);\n    const defaultY = useMotionValue(typeof contentOffsetY === \"number\" ? contentOffsetY : 0);\n    const x = isMotionValue2(contentOffsetX) ? contentOffsetX : defaultX;\n    const y = isMotionValue2(contentOffsetY) ? contentOffsetY : defaultY;\n    const measuredConstraints = useRef13(null);\n    const dragControls = useDragControls();\n    const isInTarget = useIsInCurrentNavigationTarget();\n    const wasInTargetRef = useRef13(true);\n    useInsertionEffect2(() => {\n      injectComponentCSSRules();\n    }, []);\n    function setMeasureDragConstraints(constraints) {\n      constraints = offsetToZero(constraints);\n      if (contentWidth !== void 0)\n        constraints.left = -contentWidth;\n      if (contentHeight !== void 0)\n        constraints.top = -contentHeight;\n      return measuredConstraints.current = constraints;\n    }\n    const { initial, prev } = useRef13({\n      initial: { x: 0, y: 0 },\n      prev: { x: 0, y: 0 }\n    }).current;\n    const isPreview = RenderTarget.current() === RenderTarget.preview;\n    const containerFallbackRef = useRef13(null);\n    const containerRef = forwardedRef || containerFallbackRef;\n    const contentRef = useRef13(null);\n    const lastOffsetRef = useRef13(null);\n    function shouldResetScroll(inTarget) {\n      const hasEnteredTarget = inTarget && wasInTargetRef.current === false;\n      return resetOffset && hasEnteredTarget;\n    }\n    function measureAndUpdateScrollOffset() {\n      if (!contentRef.current || !containerRef.current)\n        return;\n      const mustReset = shouldResetScroll(isInTarget);\n      wasInTargetRef.current = isInTarget;\n      const previous = lastOffsetRef.current;\n      if (previous === null && contentOffsetX === void 0 && contentOffsetY === void 0)\n        return;\n      const shouldUpdateOffset = previous === null || !isMotionValue2(contentOffsetX) && contentOffsetX !== previous.offsetX || !isMotionValue2(contentOffsetY) && contentOffsetY !== previous.offsetY;\n      const currentMaxXOffset = contentRef.current.offsetWidth - containerRef.current.offsetWidth;\n      const currentMaxYOffset = contentRef.current.offsetHeight - containerRef.current.offsetHeight;\n      const hasSizeChanged = currentMaxXOffset !== (previous == null ? void 0 : previous.maxXOffset) || currentMaxYOffset !== (previous == null ? void 0 : previous.maxYOffset);\n      const hasScrollOffsetChanged = (previous == null ? void 0 : previous.x) !== x.get() || (previous == null ? void 0 : previous.y) !== y.get();\n      const shouldStayPinned = hasSizeChanged && !hasScrollOffsetChanged;\n      if (mustReset || shouldUpdateOffset || shouldStayPinned) {\n        const currentOffsetX = direction !== \"vertical\" ? numberFromOptionalMotionValue(contentOffsetX) : 0;\n        const currentOffsetY = direction !== \"horizontal\" ? numberFromOptionalMotionValue(contentOffsetY) : 0;\n        const nextXOffset = -Math.min(currentOffsetX, currentMaxXOffset);\n        const nextYOffset = -Math.min(currentOffsetY, currentMaxYOffset);\n        x.set(nextXOffset);\n        y.set(nextYOffset);\n        lastOffsetRef.current = {\n          maxXOffset: currentMaxXOffset,\n          maxYOffset: currentMaxYOffset,\n          offsetX: currentOffsetX,\n          offsetY: currentOffsetY,\n          x: nextXOffset,\n          y: nextYOffset\n        };\n      }\n    }\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() !== RenderTarget.canvas)\n        return;\n      measureAndUpdateScrollOffset();\n    });\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() === RenderTarget.canvas)\n        return;\n      measureAndUpdateScrollOffset();\n    }, []);\n    React38.useEffect(() => {\n      if (shouldResetScroll(isInTarget))\n        measureAndUpdateScrollOffset();\n      if (isInTarget === false)\n        wasInTargetRef.current = false;\n    }, [isInTarget]);\n    const getLatestPoint = () => ({ x: x.get(), y: y.get() });\n    const resetInitialPoint = useCallback7(() => {\n      const point = getLatestPoint();\n      initial.x = point.x;\n      initial.y = point.y;\n      prev.x = point.x;\n      prev.y = point.y;\n    }, []);\n    const getPointData = useCallback7(() => {\n      const point = getLatestPoint();\n      const data2 = {\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      };\n      prev.x = point.x;\n      prev.y = point.y;\n      return data2;\n    }, [x, y]);\n    const updateScrollListeners = useCallback7(() => {\n      onUpdate && onUpdate({ x: x.get(), y: y.get() });\n      onScroll && onScroll(getPointData());\n    }, [onScroll, onUpdate, getPointData, x, y]);\n    const scheduleUpdateScrollListeners = useCallback7(() => {\n      frame.update(updateScrollListeners, false, true);\n    }, [updateScrollListeners]);\n    const onMotionDragStart = (event, info) => {\n      resetInitialPoint();\n      onDragStart && onDragStart(event, info);\n      onScrollStart && onScrollStart(info);\n    };\n    const onMotionDragTransitionEnd = () => onScrollEnd && onScrollEnd(getPointData());\n    const onWheelScrollStart = (info) => {\n      onScrollStart == null ? void 0 : onScrollStart(info);\n    };\n    useWheelScroll(containerRef, {\n      enabled: wheelEnabled,\n      initial,\n      prev,\n      direction,\n      offsetX: x,\n      offsetY: y,\n      onScrollStart: onWheelScrollStart,\n      onScroll,\n      onScrollEnd,\n      constraints: measuredConstraints\n    });\n    const overdragX = useMotionValue(0);\n    const overdragY = useMotionValue(0);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollX = (xValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollLeft = -xValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragXValue = 0;\n          if (xValue > constraints.right)\n            overdragXValue = xValue;\n          if (xValue < constraints.left)\n            overdragXValue = xValue - constraints.left;\n          overdragX.set(overdragXValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentX = x.get();\n      if (currentX !== 0)\n        setScrollX(currentX);\n      return x.on(\"change\", setScrollX);\n    }, [x, overdragX, scheduleUpdateScrollListeners, overdragEnabled]);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollY = (yValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollTop = -yValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragYValue = 0;\n          if (yValue > constraints.bottom)\n            overdragYValue = yValue;\n          if (yValue < constraints.top)\n            overdragYValue = yValue - constraints.top;\n          overdragY.set(overdragYValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentY = y.get();\n      if (currentY !== 0)\n        setScrollY(currentY);\n      return y.on(\"change\", setScrollY);\n    }, [y, overdragY, scheduleUpdateScrollListeners, overdragEnabled]);\n    const nativeOnScroll = React38.useCallback(() => {\n      const element = containerRef.current;\n      if (!(element instanceof HTMLDivElement))\n        return;\n      const xDelta = Math.abs(x.get() + element.scrollLeft);\n      const yDelta = Math.abs(y.get() + element.scrollTop);\n      if (xDelta > 1)\n        x.set(-element.scrollLeft);\n      if (yDelta > 1)\n        y.set(-element.scrollTop);\n    }, [x, y]);\n    const isEmpty2 = React38.Children.count(children) === 0;\n    const width = direction !== \"vertical\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const height = direction !== \"horizontal\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const size = !containerProps.__fromCanvasComponent ? {\n      width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n      height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n    } : {};\n    return /* @__PURE__ */ jsx32(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Scroll\",\n        background: \"none\",\n        ...containerProps,\n        ...size,\n        style: {\n          ...style,\n          willChange: isPreview ? \"transform\" : void 0,\n          // allows the scroll content to be hardware accelerated\n          overflow: \"hidden\"\n        },\n        onScroll: nativeOnScroll,\n        preserve3d: containerProps.preserve3d,\n        ref: containerRef,\n        layoutId,\n        layoutScroll: true,\n        onBeforeLayoutMeasure: measureAndUpdateScrollOffset,\n        children: /* @__PURE__ */ jsxs10(\n          FrameWithMotion,\n          {\n            \"data-framer-component-type\": \"ScrollContentWrapper\",\n            animate: scrollAnimate,\n            drag: dragEnabled && convertScrollDirectionToDrag(direction),\n            dragDirectionLock: directionLock,\n            dragElastic,\n            dragMomentum,\n            dragTransition,\n            dragConstraints: containerRef,\n            dragControls,\n            onDragStart: onMotionDragStart,\n            onDrag,\n            onDragEnd,\n            onDragTransitionEnd: onMotionDragTransitionEnd,\n            onDirectionLock,\n            onMeasureDragConstraints: setMeasureDragConstraints,\n            width,\n            height,\n            _dragX: x,\n            _dragY: y,\n            position: \"relative\",\n            x: overdragEnabled ? overdragX : void 0,\n            y: overdragEnabled ? overdragY : void 0,\n            ref: contentRef,\n            style: {\n              display: isEmpty2 ? \"block\" : \"inline-block\",\n              willChange: isPreview ? \"transform\" : void 0,\n              // makes the scroll content hardware accelerated\n              backgroundColor: \"transparent\",\n              overflow: \"visible\",\n              minWidth: \"100%\",\n              minHeight: \"100%\"\n            },\n            preserve3d: containerProps.preserve3d,\n            children: [\n              /* @__PURE__ */ jsx32(\n                EmptyState,\n                {\n                  children,\n                  size: {\n                    width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n                    height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n                  },\n                  insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n                  title: \"Scroll\",\n                  description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n                }\n              ),\n              useUpdateChildSize({\n                dragDirection: direction,\n                children,\n                fromCanvasComponent: containerProps.__fromCanvasComponent\n              })\n            ]\n          }\n        )\n      }\n    );\n  }\n);\nfunction offsetToZero({ top, left, right, bottom }) {\n  const width = right - left;\n  const height = bottom - top;\n  return {\n    top: -height,\n    left: -width,\n    right: 0,\n    bottom: 0\n  };\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport React40, { useInsertionEffect as useInsertionEffect3 } from \"react\";\n\n// ../../library/src/modules/cx.ts\nfunction cx(...classNames) {\n  return classNames.filter(Boolean).join(\" \");\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nimport React39, { useEffect as useEffect12 } from \"react\";\n\n// ../../library/src/components/utils/animatePointWithInertia.ts\nfunction isRunningAnimation(...phases) {\n  let runningAny = false;\n  let cancelledAny = false;\n  phases.forEach((phase) => {\n    runningAny = runningAny || phase === 1 /* Running */;\n    cancelledAny = cancelledAny || phase === 3 /* Cancelled */;\n  });\n  return runningAny && !cancelledAny;\n}\nfunction didFinishAnimations(...phases) {\n  return phases.every((phase) => phase === 0 /* None */ || phase === 2 /* Completed */);\n}\nvar timeConstant = 400;\nfunction animatePointWithInertia({\n  from,\n  velocity,\n  onUpdate,\n  onComplete,\n  onStop\n}) {\n  const latest = from;\n  let animationPhaseX = 0 /* None */;\n  let animationPhaseY = 0 /* None */;\n  const animations2 = [];\n  const updateHandler = () => {\n    if (isRunningAnimation(animationPhaseX, animationPhaseY)) {\n      onUpdate(latest);\n    }\n  };\n  const completionHandler = () => {\n    if (didFinishAnimations(animationPhaseX, animationPhaseY)) {\n      onComplete();\n    }\n  };\n  if (velocity.x) {\n    animationPhaseX = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.x],\n        velocity: -velocity.x,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.x = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseX !== 1 /* Running */) {\n            throw Error(\"animation x should be running when completing\");\n          }\n          animationPhaseX = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (velocity.y) {\n    animationPhaseY = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.y],\n        velocity: -velocity.y,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.y = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseY !== 1 /* Running */) {\n            throw Error(\"animation y should be running when completing\");\n          }\n          animationPhaseY = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (!isRunningAnimation(animationPhaseX, animationPhaseY)) {\n    completionHandler();\n  }\n  return {\n    stop: () => {\n      if (!isRunningAnimation(animationPhaseX, animationPhaseY))\n        return;\n      animations2.forEach((animation) => animation.stop());\n      animationPhaseX = animationPhaseX === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseX;\n      animationPhaseY = animationPhaseY === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseY;\n      onStop();\n    }\n  };\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nvar scrollThreshold = 3;\nvar isTouchDevice = /* @__PURE__ */ isTouch();\nvar isSafariBrowser = /* @__PURE__ */ isSafari();\nfunction getTouchAction(element) {\n  if (!(element instanceof HTMLElement))\n    return null;\n  return element.style.touchAction;\n}\nfunction canPanInDirection(element, direction) {\n  switch (direction) {\n    case \"horizontal\":\n      return getTouchAction(element) === \"pan-x\";\n    case \"vertical\":\n      return getTouchAction(element) === \"pan-y\";\n    default:\n      return false;\n  }\n}\nfunction isInteractiveElement(element) {\n  const tag = element.tagName.toLowerCase();\n  if (tag === \"input\")\n    return true;\n  if (tag === \"text\")\n    return true;\n  if (tag === \"textarea\")\n    return true;\n  return false;\n}\nfunction canStartScrollFromElement(element, direction) {\n  if (!(element instanceof Element))\n    return false;\n  if (isInteractiveElement(element))\n    return false;\n  if (element.hasAttribute(\"draggable\")) {\n    if (!canPanInDirection(element, direction)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getEventPoint(event) {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n}\nfunction setPointerEvents(element, value) {\n  if (element == null ? void 0 : element.style) {\n    element.style[\"pointerEvents\"] = value;\n  }\n}\nfunction getPointerEvents(element) {\n  var _a;\n  return (_a = element == null ? void 0 : element.style) == null ? void 0 : _a[\"pointerEvents\"];\n}\nvar emptyObject = /* @__PURE__ */ Object.freeze({});\nfunction useEmulateTouchScroll(ref, direction, enabled) {\n  if (isTouchDevice)\n    return emptyObject;\n  if (RenderTarget.current() !== RenderTarget.preview)\n    return emptyObject;\n  const scrollAnimationControlsRef = React39.useRef(null);\n  useEffect12(() => {\n    if (!ref.current)\n      return;\n    const element = ref.current;\n    let phase = 0 /* Idle */;\n    let targets = null;\n    let downPoint = null;\n    let scrollOffsetStart = null;\n    let mouseMoveEvents = [];\n    function onMouseMove(event) {\n      var _a;\n      switch (phase) {\n        case 0 /* Idle */:\n        case 4 /* DragAnimation */:\n        case 3 /* DragLocked */:\n          return;\n      }\n      if (event.metaKey)\n        return;\n      const point = getEventPoint(event);\n      if (!downPoint)\n        return;\n      const offset = Point.subtract(point, downPoint);\n      if (phase === 1 /* TouchDown */ || phase === 5 /* Interrupted */) {\n        const deltaX = Math.abs(offset.x);\n        const deltaY = Math.abs(offset.y);\n        if ((deltaX > scrollThreshold || deltaY > scrollThreshold) && deltaX !== deltaY) {\n          const scrollDirection = deltaX > deltaY ? \"horizontal\" : \"vertical\";\n          const shouldIgnoreBecauseOfDirectionLock = direction === \"horizontal\" && scrollDirection === \"vertical\" || direction === \"vertical\" && scrollDirection === \"horizontal\";\n          if (shouldIgnoreBecauseOfDirectionLock) {\n            phase = 3 /* DragLocked */;\n            return;\n          }\n          phase = 2 /* Drag */;\n          targets == null ? void 0 : targets.forEach(([target]) => setPointerEvents(target, \"none\"));\n        }\n      }\n      if (isSafariBrowser)\n        event.preventDefault();\n      if (phase !== 2 /* Drag */)\n        return;\n      (_a = safeWindow.getSelection()) == null ? void 0 : _a.empty();\n      mouseMoveEvents = getRecentEvents([...mouseMoveEvents, event]);\n      if (scrollOffsetStart) {\n        if (direction !== \"vertical\")\n          element.scrollLeft = scrollOffsetStart.x - offset.x;\n        if (direction !== \"horizontal\")\n          element.scrollTop = scrollOffsetStart.y - offset.y;\n      }\n    }\n    function onMouseUp(event) {\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove, false);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      if (phase === 2 /* Drag */ && targets) {\n        targets.forEach(\n          ([target, originalPointerEventsValue]) => setPointerEvents(target, originalPointerEventsValue || \"auto\")\n        );\n      }\n      targets = null;\n      const velocity = calculateVelocity({ mouseMoveEvents, mouseUpEvent: event });\n      downPoint = null;\n      if (phase === 2 /* Drag */) {\n        const shouldAnimateY = direction !== \"horizontal\" && velocity.y !== 0;\n        const shouldAnimateX = direction !== \"vertical\" && velocity.x !== 0;\n        if (!shouldAnimateY && !shouldAnimateX) {\n          phase = 0 /* Idle */;\n          return;\n        }\n        phase = 4 /* DragAnimation */;\n        scrollAnimationControlsRef.current = animatePointWithInertia({\n          from: { x: element.scrollLeft, y: element.scrollTop },\n          velocity: {\n            x: shouldAnimateX ? velocity.x : 0,\n            y: shouldAnimateY ? velocity.y : 0\n          },\n          onUpdate: (position) => {\n            if (shouldAnimateX)\n              element.scrollLeft = position.x;\n            if (shouldAnimateY)\n              element.scrollTop = position.y;\n          },\n          onStop: () => {\n            if (phase !== 5 /* Interrupted */) {\n              phase = 0 /* Idle */;\n            }\n            scrollAnimationControlsRef.current = null;\n          },\n          onComplete: () => {\n            if (phase !== 4 /* DragAnimation */) {\n              throw Error(\"On animation completion we should still be in the animation phase\");\n            }\n            phase = 0 /* Idle */;\n            scrollAnimationControlsRef.current = null;\n          }\n        });\n      } else {\n        phase = 0 /* Idle */;\n      }\n    }\n    function onMouseWheel() {\n      var _a;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    }\n    function onMouseDown(event) {\n      var _a;\n      if (!enabled)\n        return;\n      if (event.metaKey)\n        return;\n      if (!canStartScrollFromElement(event.target, direction)) {\n        if (phase === 4 /* DragAnimation */) {\n          phase = 0 /* Idle */;\n          (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n        }\n        return;\n      }\n      const previousPhase = phase;\n      phase = previousPhase === 4 /* DragAnimation */ ? 5 /* Interrupted */ : 1 /* TouchDown */;\n      downPoint = getEventPoint(event);\n      targets = document.elementsFromPoint(downPoint.x, downPoint.y).filter(\n        (targetEl) => targetEl instanceof HTMLElement || targetEl instanceof SVGElement\n      ).map((targetEl) => [targetEl, getPointerEvents(targetEl)]);\n      scrollOffsetStart = { x: element.scrollLeft, y: element.scrollTop };\n      mouseMoveEvents = [];\n      if (scrollAnimationControlsRef.current) {\n        if (previousPhase !== 4 /* DragAnimation */) {\n          throw Error(\"When stopping a drag animation we need to be animating\");\n        }\n        scrollAnimationControlsRef.current.stop();\n      }\n      safeWindow.addEventListener(\"mousemove\", onMouseMove);\n      safeWindow.addEventListener(\"mouseup\", onMouseUp);\n      element.addEventListener(\"mousewheel\", onMouseWheel);\n    }\n    element.addEventListener(\"mousedown\", onMouseDown);\n    return () => {\n      var _a;\n      element.removeEventListener(\"mousedown\", onMouseDown);\n      element.removeEventListener(\"mousewheel\", onMouseWheel);\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      phase = 5 /* Interrupted */;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    };\n  }, [ref, direction, enabled]);\n  return React39.useMemo(() => {\n    return {\n      cancelEmulatedTouchScrollAnimation: () => {\n        var _a;\n        (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n      }\n    };\n  }, []);\n}\nvar timeDelta = /* @__PURE__ */ (() => 4 / 60 * 1e3)();\nfunction getRecentEvents(events) {\n  const currentTime = new CustomEvent(\"getTime\").timeStamp;\n  const maxAge = currentTime - timeDelta;\n  return events.filter((event) => event.timeStamp > maxAge);\n}\nvar zeroPoint = { x: 0, y: 0 };\nfunction calculateVelocity({\n  mouseMoveEvents,\n  mouseUpEvent\n}) {\n  const recentMouseMoveEvents = getRecentEvents(mouseMoveEvents);\n  const oldestMouseMoveEvent = recentMouseMoveEvents[0];\n  if (!oldestMouseMoveEvent)\n    return zeroPoint;\n  const deltaX = mouseUpEvent.clientX - oldestMouseMoveEvent.clientX;\n  const deltaY = mouseUpEvent.clientY - oldestMouseMoveEvent.clientY;\n  const time = mouseUpEvent.timeStamp - oldestMouseMoveEvent.timeStamp;\n  if (time === 0)\n    return zeroPoint;\n  return {\n    x: deltaX / time * 1e3,\n    y: deltaY / time * 1e3\n  };\n}\n\n// ../../library/src/components/utils/useUpdateScrollOffset.ts\nfunction useUpdateScrollOffset(ref, side, offset, cancelEmulatedTouchScrollAnimation) {\n  useIsomorphicLayoutEffect2(() => {\n    if (isMotionValue2(offset)) {\n      const updateScrollLeft = () => {\n        cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n        const element = ref.current;\n        if (element)\n          element[side] = Math.abs(offset.get());\n      };\n      updateScrollLeft();\n      return offset.on(\"change\", updateScrollLeft);\n    } else if (isFiniteNumber(offset)) {\n      const element = ref.current;\n      if (!element)\n        return;\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element[side] = Math.abs(offset);\n    }\n  }, [offset]);\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport { jsx as jsx33, jsxs as jsxs11 } from \"react/jsx-runtime\";\nvar NativeScroll = /* @__PURE__ */ React40.forwardRef(function NativeScroll2(props, forwardedRef) {\n  const {\n    direction = \"vertical\",\n    scrollBarVisible = false,\n    dragEnabled = true,\n    contentOffsetX = 0,\n    contentOffsetY = 0,\n    contentWidth: _contentWidth,\n    contentHeight: _contentHeight,\n    children,\n    resetOffset,\n    onScroll,\n    className: className2,\n    // Not (yet) supported\n    directionLock: _directionLock = false,\n    wheelEnabled: _wheelEnabled = true,\n    scrollAnimate: _scrollAnimate,\n    dragTransition: _dragTransition,\n    dragMomentum: _dragMomentum,\n    dragElastic: _dragElastic,\n    overdragEnabled: _overdragEnabled = true,\n    onScrollStart: _onScrollStart,\n    onScrollEnd: _onScrollEnd,\n    onDragStart: _onDragStart,\n    onDrag: _onDrag,\n    onDragEnd: _onDragEnd,\n    onUpdate: _onUpdate,\n    onDirectionLock: _onDirectionLock,\n    layoutId: specificLayoutId,\n    native: _native,\n    // Rest\n    ...containerProps\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n  const fallbackRef = React40.useRef(null);\n  const ref = forwardedRef || fallbackRef;\n  const { cancelEmulatedTouchScrollAnimation } = useEmulateTouchScroll(ref, direction, dragEnabled);\n  useInsertionEffect3(() => {\n    injectComponentCSSRules();\n  }, []);\n  const isInTarget = useIsInCurrentNavigationTarget();\n  const previousIsInTargetRef = React40.useRef(isInTarget);\n  const updateScrollOffsetHandler = () => {\n    if (!resetOffset)\n      return;\n    const previousIsTarget = previousIsInTargetRef.current;\n    previousIsInTargetRef.current = isInTarget;\n    const shouldResetOffset = isInTarget && !previousIsTarget;\n    if (!shouldResetOffset)\n      return;\n    const element = ref.current;\n    if (!element)\n      return;\n    if (direction !== \"vertical\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollLeft = Math.abs(isMotionValue2(contentOffsetX) ? contentOffsetX.get() : contentOffsetX);\n    }\n    if (direction !== \"horizontal\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollTop = Math.abs(isMotionValue2(contentOffsetY) ? contentOffsetY.get() : contentOffsetY);\n    }\n  };\n  useIsomorphicLayoutEffect2(updateScrollOffsetHandler, [isInTarget]);\n  useUpdateScrollOffset(ref, \"scrollLeft\", contentOffsetX, cancelEmulatedTouchScrollAnimation);\n  useUpdateScrollOffset(ref, \"scrollTop\", contentOffsetY, cancelEmulatedTouchScrollAnimation);\n  const size = !containerProps.__fromCanvasComponent ? {\n    width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n    height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n  } : {};\n  return /* @__PURE__ */ jsxs11(\n    FrameWithMotion,\n    {\n      ref,\n      \"data-framer-component-type\": \"NativeScroll\",\n      background: \"none\",\n      ...containerProps,\n      ...size,\n      onScroll,\n      layoutId,\n      onBeforeLayoutMeasure: updateScrollOffsetHandler,\n      layoutScroll: true,\n      className: cx(className2, `direction-${direction}`, !scrollBarVisible && \"scrollbar-hidden\"),\n      children: [\n        /* @__PURE__ */ jsx33(\n          EmptyState,\n          {\n            children,\n            size: {\n              width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n              height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n            },\n            insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n            title: \"Scroll\",\n            description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n          }\n        ),\n        children\n      ]\n    }\n  );\n});\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport { jsx as jsx34 } from \"react/jsx-runtime\";\nvar Scroll = /* @__PURE__ */ (() => {\n  const ScrollInner = React41.forwardRef(function ScrollInner2(props, forwardedRef) {\n    if (props.native) {\n      return /* @__PURE__ */ jsx34(NativeScroll, { ref: forwardedRef, ...props });\n    } else {\n      return /* @__PURE__ */ jsx34(EmulatedScroll, { ref: forwardedRef, ...props });\n    }\n  });\n  ScrollInner.defaultProps = {\n    directionLock: false\n  };\n  addPropertyControls(ScrollInner, {\n    native: {\n      type: \"boolean\" /* Boolean */,\n      defaultValue: false\n    },\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      title: \"Direction\",\n      options: [\"vertical\", \"horizontal\", \"both\"],\n      defaultValue: \"vertical\"\n    },\n    contentOffsetX: {\n      type: \"number\" /* Number */,\n      title: \"Offset X\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"vertical\"\n    },\n    contentOffsetY: {\n      type: \"number\" /* Number */,\n      title: \"Offset Y\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"horizontal\"\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    overdragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Overdrag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    scrollBarVisible: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Scroll Bar\",\n      enabledTitle: \"Visible\",\n      disabledTitle: \"Hidden\",\n      defaultValue: false,\n      hidden: ({ native }) => native === false\n    },\n    resetOffset: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Reset\",\n      defaultValue: false\n    }\n  });\n  ScrollInner.supportsConstraints = true;\n  return ScrollInner;\n})();\n\n// ../../library/src/components/useNavigation.ts\nimport { useContext as useContext10 } from \"react\";\nfunction useNavigation() {\n  return useContext10(NavigationContext);\n}\n\n// ../../library/src/data/Data.ts\nvar data = /* @__PURE__ */ (() => {\n  function Data2(initial = {}) {\n    const _data = ObservableObject(initial, false, false);\n    Data2.addData(_data);\n    return _data;\n  }\n  Data2._stores = [];\n  Data2.addData = (_data) => {\n    Data2._stores.push(_data);\n  };\n  Data2.reset = () => {\n    Data2._stores.forEach((target) => ObservableObject.resetObject(target));\n  };\n  Data2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return Data2;\n})();\nvar Data = data;\n\n// ../../library/src/data/PropertyStore.ts\nvar PropertyStore = /* @__PURE__ */ (() => {\n  function PropertyStore2(initial = {}, makeAnimatables = false) {\n    deprecationWarning(\"PropertyStore\", \"1.0.0\", \"Data() or ObservableObject()\");\n    return ObservableObject(initial, makeAnimatables);\n  }\n  PropertyStore2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return PropertyStore2;\n})();\n\n// ../../library/src/data/useData/index.ts\nimport { createContext as createContext4, useContext as useContext11, useEffect as useEffect13, useMemo as useMemo5, useState as useState2 } from \"react\";\n\n// ../../library/src/data/useData/store.ts\nfunction bindActionsToStore(get, set, actions) {\n  const boundActions = {};\n  for (const key7 in actions) {\n    const action = actions[key7];\n    if (!action)\n      continue;\n    boundActions[key7] = (data2) => set(action(get(), data2));\n  }\n  return boundActions;\n}\nfunction createStore(initialState2, unboundActions) {\n  let state = initialState2;\n  let version2 = 0;\n  const subscribers = /* @__PURE__ */ new Set();\n  const notifySubscriber = (sub) => sub(version2);\n  const get = () => state;\n  const set = (latestState) => {\n    version2++;\n    state = latestState;\n    subscribers.forEach(notifySubscriber);\n  };\n  const actions = unboundActions ? bindActionsToStore(get, set, unboundActions) : set;\n  return {\n    get,\n    set,\n    getVersion: () => version2,\n    getActions: () => actions,\n    subscribe: (sub) => {\n      subscribers.add(sub);\n      return () => subscribers.delete(sub);\n    }\n  };\n}\n\n// ../../library/src/data/useData/index.ts\nvar defaultId = /* @__PURE__ */ Symbol(\"default\");\nvar DataContext = /* @__PURE__ */ createContext4(defaultId);\nfunction createData(defaultState2, actions) {\n  const stores = /* @__PURE__ */ new Map();\n  const useData = (id, initialState2) => {\n    const contextId = useContext11(DataContext);\n    id = id || contextId;\n    const store = useMemo5(() => {\n      if (!stores.has(id)) {\n        stores.set(id, createStore(initialState2 || defaultState2, actions));\n      }\n      return stores.get(id);\n    }, [id]);\n    const [, notifyUpdates] = useState2(store.getVersion());\n    const storeValueAtHookCallTime = useMemo5(() => store.get(), [store]);\n    useEffect13(() => {\n      const unsubscribe = store.subscribe(notifyUpdates);\n      if (storeValueAtHookCallTime !== store.get()) {\n        notifyUpdates(store.getVersion());\n      }\n      return unsubscribe;\n    }, [store, storeValueAtHookCallTime]);\n    return [store.get(), store.getActions()];\n  };\n  return useData;\n}\n\n// ../../library/src/deprecated/DataObserver.tsx\nimport React42, { Component as Component10 } from \"react\";\nimport { jsx as jsx35 } from \"react/jsx-runtime\";\nvar initialState = { update: 0 };\nvar DataObserverContext = /* @__PURE__ */ React42.createContext({ update: NaN });\nfunction useObserveData() {\n  const context = React42.useContext(DataObserverContext);\n  return !Number.isNaN(context.update);\n}\nvar DataObserver = class extends Component10 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"observers\", []);\n    __publicField(this, \"state\", initialState);\n    __publicField(this, \"taskAdded\", false);\n    __publicField(this, \"frameTask\", () => {\n      this.setState({ update: this.state.update + 1 });\n      this.taskAdded = false;\n    });\n    __publicField(this, \"observer\", () => {\n      if (this.taskAdded)\n        return;\n      this.taskAdded = true;\n      MainLoop.addFrameTask(this.frameTask);\n    });\n  }\n  componentWillUnmount() {\n    this.observers.map((cancel) => cancel());\n    Data.reset();\n  }\n  render() {\n    const { children } = this.props;\n    this.observers.map((cancel) => cancel());\n    this.observers = [];\n    Data._stores.forEach((d) => {\n      const observer = Data.addObserver(d, this.observer);\n      this.observers.push(observer);\n    });\n    return /* @__PURE__ */ jsx35(DataObserverContext.Provider, { value: { ...this.state }, children });\n  }\n};\n\n// ../../library/src/deprecated/WithOverride.tsx\nvar import_hoist_non_react_statics4 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport { useContext as useContext12 } from \"react\";\n\n// ../../library/src/deprecated/convertColorProps.ts\nfunction convertColorObject(prop) {\n  if (typeof prop === \"string\" || isMotionValue2(prop)) {\n    return prop;\n  } else if (LinearGradient.isLinearGradient(prop)) {\n    return LinearGradient.toCSS(prop);\n  } else if (RadialGradient.isRadialGradient(prop)) {\n    return RadialGradient.toCSS(prop);\n  } else if (Color.isColorObject(prop)) {\n    return Color.toRgbString(prop);\n  }\n  return prop;\n}\nfunction convertColorProps(props) {\n  if (props.background || props.color) {\n    const converted = Object.assign({}, props);\n    if (props.background) {\n      converted.background = convertColorObject(props.background);\n    }\n    if (props.color) {\n      converted.color = convertColorObject(props.color);\n    }\n    return converted;\n  }\n  return props;\n}\n\n// ../../library/src/deprecated/WithOverride.tsx\nimport { jsx as jsx36 } from \"react/jsx-runtime\";\nfunction WithOverride(Component18, override) {\n  const useOverride = typeof override === \"function\" ? (props) => override(convertColorProps(props)) : () => convertColorProps(override);\n  const ComponentWithOverride = function(props) {\n    useContext12(DataObserverContext);\n    const overrideProps = useOverride(props);\n    const { style, ...rest } = props;\n    return /* @__PURE__ */ jsx36(Component18, { ...rest, ...overrideProps, _initialStyle: style });\n  };\n  (0, import_hoist_non_react_statics4.default)(ComponentWithOverride, Component18);\n  ComponentWithOverride[\"displayName\"] = `WithOverride(${Component18.displayName || Component18.name})`;\n  return ComponentWithOverride;\n}\n\n// ../../library/src/modules/withFX.tsx\nimport React55 from \"react\";\n\n// ../../library/src/modules/hocOptions.ts\nvar prefix = \"__framer__\";\nvar prefixLength = /* @__PURE__ */ (() => prefix.length)();\nfunction extractPrefixedProps(props, keys3) {\n  const result = {};\n  const rest = {};\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey && keys3.has(strippedKey)) {\n      result[strippedKey] = props[key7];\n      continue;\n    }\n    rest[key7] = props[key7];\n  }\n  return [result, rest];\n}\nfunction stripPrefixFromPrefixedKey(key7) {\n  if (key7.startsWith(prefix)) {\n    return key7.substr(prefixLength);\n  }\n  return void 0;\n}\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport React49 from \"react\";\n\n// ../../library/src/modules/GeneratedComponentContext.ts\nimport React43 from \"react\";\nvar GeneratedComponentContext = /* @__PURE__ */ React43.createContext(\n  void 0\n);\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport React48 from \"react\";\n\n// ../../library/src/components/utils/cloneChildrenWithProps.tsx\nimport * as React44 from \"react\";\nimport { Fragment as Fragment6, jsx as jsx37 } from \"react/jsx-runtime\";\nfunction cloneChildrenWithProps(children, props, asNode) {\n  const cloned = React44.Children.map(children, (child) => {\n    if (React44.isValidElement(child)) {\n      return React44.cloneElement(child, props);\n    }\n    return child;\n  });\n  if (asNode)\n    return cloned;\n  return /* @__PURE__ */ jsx37(Fragment6, { children: cloned });\n}\n\n// ../../library/src/components/utils/useCloneChildrenWithPropsAndRef.tsx\nimport * as React45 from \"react\";\nimport { Fragment as Fragment7, jsx as jsx38 } from \"react/jsx-runtime\";\nfunction useCloneChildrenWithPropsAndRef(forwardedRef) {\n  const hook = useConstant(() => createHook(forwardedRef));\n  hook.useSetup(forwardedRef);\n  return hook.cloneAsElement;\n}\nfunction createHook(forwardedRef) {\n  const state = {\n    forwardedRef,\n    childRef: null,\n    ref: null\n  };\n  state.ref = createRefFunction(state);\n  const updateIfNeeded = (nextForwardedRef, ref) => {\n    if (!state.forwardedRef && state.forwardedRef === nextForwardedRef) {\n      state.ref = ref;\n      return;\n    }\n    let shouldUpdate = false;\n    if (state.childRef !== ref) {\n      state.childRef = ref;\n      shouldUpdate = true;\n    }\n    if (state.forwardedRef !== nextForwardedRef) {\n      state.forwardedRef = nextForwardedRef;\n      shouldUpdate = true;\n    }\n    if (!shouldUpdate)\n      return;\n    state.ref = createRefFunction(state);\n  };\n  let preventNextCall = false;\n  function cloneChildrenWithPropsAndRef(children, props) {\n    if (preventNextCall) {\n      throw new ReferenceError(\n        \"useCloneChildrenWithPropsAndRef: You should not call cloneChildrenWithPropsAndRef more than once during the render cycle.\"\n      );\n    }\n    preventNextCall = true;\n    if (React45.Children.count(children) > 1 && forwardedRef) {\n      if (false) {\n        throw new ReferenceError(\n          \"useCloneChildrenWithPropsAndRef: You should not have more than one child when using a forwarded ref.\"\n        );\n      }\n      state.forwardedRef = void 0;\n      state.ref = state.childRef;\n    }\n    return React45.Children.map(children, (child) => {\n      if (React45.isValidElement(child)) {\n        const ownRef = \"ref\" in child ? child.ref : void 0;\n        updateIfNeeded(state.forwardedRef, ownRef);\n        const newProps = isFunction(props) ? props(child.props) : props;\n        return React45.cloneElement(child, state.ref !== ownRef ? { ...newProps, ref: state.ref } : newProps);\n      }\n      return child;\n    });\n  }\n  const cloneAsElement = function cloneAsElement2(children, props) {\n    return /* @__PURE__ */ jsx38(Fragment7, { children: cloneChildrenWithPropsAndRef(children, props) });\n  };\n  cloneAsElement.cloneAsArray = cloneChildrenWithPropsAndRef;\n  return {\n    // used during render phase to sync props with state\n    useSetup: (newRef) => {\n      preventNextCall = false;\n      updateIfNeeded(newRef, state.childRef);\n    },\n    /**\n     * Clones children and adds props and refs and returns them as a JSX.Element\n     * Making it easier to use as it wraps them in a Fragment.\n     * */\n    cloneAsElement\n  };\n}\nfunction createRefFunction(state) {\n  if (!state.forwardedRef)\n    return state.childRef;\n  const { forwardedRef: prevForwardedRef, childRef: prevChildRef } = state;\n  return (value) => {\n    setRef(prevChildRef, value);\n    setRef(prevForwardedRef, value);\n  };\n}\n\n// ../../library/src/modules/withCSS.tsx\nimport React47, { useInsertionEffect as useInsertionEffect4 } from \"react\";\n\n// ../../library/src/render/StyleSheetContext.ts\nimport React46 from \"react\";\nvar StyleSheetContext = /* @__PURE__ */ React46.createContext(void 0);\n\n// ../../library/src/modules/withCSS.tsx\nimport { Fragment as Fragment8, jsx as jsx39, jsxs as jsxs12 } from \"react/jsx-runtime\";\nvar framerPostSSRCSSSelector = \"style[data-framer-css-ssr-minified]\";\nvar componentsWithServerRenderedStyles = /* @__PURE__ */ (() => {\n  var _a;\n  if (!isBrowser2())\n    return /* @__PURE__ */ new Set();\n  const componentsWithSSRStylesAttr = (_a = document.querySelector(framerPostSSRCSSSelector)) == null ? void 0 : _a.getAttribute(\"data-framer-components\");\n  if (!componentsWithSSRStylesAttr)\n    return /* @__PURE__ */ new Set();\n  return new Set(componentsWithSSRStylesAttr.split(\" \"));\n})();\nvar framerCSSMarker = \"data-framer-css-ssr\";\nvar withCSS = (Component18, escapedCSS, componentSerializationId) => React47.forwardRef((props, ref) => {\n  const { sheet, cache: cache2 } = React47.useContext(StyleSheetContext) ?? {};\n  const id = componentSerializationId;\n  if (!isBrowser2()) {\n    if (isFunction(escapedCSS))\n      escapedCSS = escapedCSS(RenderTarget.current());\n    const concatenatedCSS = Array.isArray(escapedCSS) ? escapedCSS.join(\"\\n\") : escapedCSS;\n    return /* @__PURE__ */ jsxs12(Fragment8, { children: [\n      /* @__PURE__ */ jsx39(\n        \"style\",\n        {\n          ...{ [framerCSSMarker]: true },\n          \"data-framer-component\": id,\n          dangerouslySetInnerHTML: { __html: concatenatedCSS }\n        }\n      ),\n      /* @__PURE__ */ jsx39(Component18, { ...props, ref })\n    ] });\n  }\n  useInsertionEffect4(() => {\n    if (id && componentsWithServerRenderedStyles.has(id))\n      return;\n    const css2 = isFunction(escapedCSS) ? escapedCSS(RenderTarget.current()) : Array.isArray(escapedCSS) ? escapedCSS : escapedCSS.split(\"\\n\");\n    css2.forEach((rule) => rule && injectCSSRule(rule, sheet, cache2));\n  }, []);\n  return /* @__PURE__ */ jsx39(Component18, { ...props, ref });\n});\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport { jsx as jsx40 } from \"react/jsx-runtime\";\nvar SSRParentVariantsContext = /* @__PURE__ */ React48.createContext(void 0);\nvar SSRVariantClassName = \"ssr-variant\";\nfunction renderBranchedChildrenFromPropertyOverrides(overrides, children, props, variantClassNames, primaryVariantId, parentVariants, cloneChildren, activeVariantId) {\n  const childrenArray = React48.Children.toArray(children);\n  const child = childrenArray[0];\n  if (childrenArray.length !== 1 || !React48.isValidElement(child)) {\n    console.warn(\"PropertyOverrides: expected exactly one React element for a child\", children);\n    return cloneChildren(children, props);\n  }\n  const branches = [];\n  const nonOverriddenVariants = [];\n  for (const [variantId] of Object.entries(variantClassNames)) {\n    if (variantId === primaryVariantId)\n      continue;\n    const propOverrides = overrides[variantId];\n    if (!propOverrides || !arePropOverridesEffectivelyDifferent(child.props, propOverrides)) {\n      nonOverriddenVariants.push(variantId);\n      continue;\n    }\n    const effectiveVariants = intersection([variantId], parentVariants);\n    if (effectiveVariants.length)\n      branches.push({ variants: effectiveVariants, propOverrides });\n  }\n  if (branches.length === 0)\n    return cloneChildren(child, props);\n  const remainingVariants = [primaryVariantId, ...nonOverriddenVariants];\n  const effectiveRemainingVariants = intersection(remainingVariants, parentVariants);\n  if (effectiveRemainingVariants.length)\n    branches.unshift({ variants: effectiveRemainingVariants });\n  const renderedBranches = [];\n  for (const { variants, propOverrides } of branches) {\n    if (activeVariantId && !variants.includes(activeVariantId)) {\n      continue;\n    }\n    const key7 = variants.join(\"+\");\n    let element = (\n      // We could omit the SSRParentVariantsContext if variants is the same as parentVariants, but that'd require\n      // comparing arrays, so it might not really be an optimization. And since it's just a context, it doesn't\n      // affect the size of the generated HTML.\n      /* @__PURE__ */ jsx40(SSRParentVariantsContext.Provider, { value: new Set(variants), children: cloneChildren(child, propOverrides ? { ...props, ...propOverrides } : props) }, key7)\n    );\n    const hiddenClassNames = generateHiddenClassNames(variants, parentVariants, variantClassNames);\n    if (hiddenClassNames.length) {\n      assert(branches.length > 1, \"Must branch out when there are hiddenClassNames\");\n      element = /* @__PURE__ */ jsx40(\"div\", { className: `${SSRVariantClassName} ${hiddenClassNames.join(\" \")}`, children: element }, key7);\n    } else {\n      assert(branches.length === 1, \"Cannot branch out when hiddenClassNames is empty\");\n    }\n    renderedBranches.push(element);\n  }\n  assert(\n    !activeVariantId || renderedBranches.length === 1,\n    \"Must render exactly one branch when activeVariantId is given\"\n  );\n  return renderedBranches;\n}\nvar SSRVariants = /* @__PURE__ */ React48.forwardRef(\n  function SSRVariants2({ id: _nodeId, children, ...props }, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    if (isBrowser2()) {\n      return cloneWithRefs(children, props);\n    }\n    throw new Error(\"SSRVariants is no longer supported outside canvas and preview\");\n  }\n);\nfunction variantHashFromClassName(className2) {\n  return className2.split(\"-\")[2];\n}\nfunction generateHiddenClassNames(showOnlyInVariantIds, parentVariants, variantClassNames) {\n  const classNames = [];\n  for (const [variantId, variantClassName] of Object.entries(variantClassNames)) {\n    const alreadyHiddenInParent = parentVariants && !parentVariants.has(variantId);\n    if (showOnlyInVariantIds.includes(variantId) || alreadyHiddenInParent)\n      continue;\n    classNames.push(`hidden-${variantHashFromClassName(variantClassName)}`);\n  }\n  return classNames;\n}\nfunction intersection(variants, parentVariants) {\n  if (!parentVariants)\n    return variants;\n  return variants.filter((variant) => parentVariants.has(variant));\n}\nfunction arePropOverridesEffectivelyDifferent(props, propOverrides) {\n  for (const key7 of Object.keys(propOverrides)) {\n    if (!isEqual(props[key7], propOverrides[key7], true)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction propsForBreakpoint(variant, props, overrides) {\n  if (!overrides || !variant)\n    return props;\n  return { ...props, ...overrides[variant] };\n}\nvar PropertyOverridesWithoutCSS = /* @__PURE__ */ React48.forwardRef(\n  function PropertyOverrides({ breakpoint, overrides, children, ...props }, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    const parentVariants = React48.useContext(SSRParentVariantsContext);\n    const isHydrationOrSSR = useIsHydrationOrSSR();\n    const action = useConstant(() => {\n      if (isHydrationOrSSR.current) {\n        if (isBrowser2()) {\n          return 1 /* RenderActiveBranch */;\n        } else {\n          return 2 /* RenderAllBranches */;\n        }\n      } else {\n        return 0 /* PassThrough */;\n      }\n    });\n    const generatedComponentContext = React48.useContext(GeneratedComponentContext);\n    if (!generatedComponentContext) {\n      console.warn(\"PropertyOverrides is missing GeneratedComponentContext\");\n      return cloneWithRefs(children, props);\n    }\n    const { primaryVariantId, variantClassNames } = generatedComponentContext;\n    switch (action) {\n      case 0 /* PassThrough */:\n        return cloneWithRefs(children, propsForBreakpoint(breakpoint, props, overrides));\n      case 1 /* RenderActiveBranch */:\n        return renderBranchedChildrenFromPropertyOverrides(\n          overrides,\n          children,\n          props,\n          variantClassNames,\n          primaryVariantId,\n          parentVariants,\n          cloneWithRefs,\n          breakpoint\n          // only render the single, active branch\n        );\n      case 2 /* RenderAllBranches */:\n        return renderBranchedChildrenFromPropertyOverrides(\n          overrides,\n          children,\n          props,\n          variantClassNames,\n          primaryVariantId,\n          parentVariants,\n          // On the server, we use plain cloneChildrenWithProps instead of useCloneChildrenWithPropsAndRef,\n          // because we can't clone one ref to multiple branched-out elements (useCloneChildrenWithPropsAndRef\n          // even guards against it), but luckily, refs mean nothing on the server anyway.\n          cloneChildrenWithProps,\n          void 0\n          // render all branches\n        );\n      default:\n        assertNever(action);\n    }\n  }\n);\nvar PropertyOverrides2 = /* @__PURE__ */ (() => withCSS(PropertyOverridesWithoutCSS, `.${SSRVariantClassName} { display: contents }`, \"PropertyOverrides\"))();\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport { jsx as jsx41 } from \"react/jsx-runtime\";\nvar defaultVariantKey = \"default\";\nvar defaultVariants = /* @__PURE__ */ new Set([defaultVariantKey]);\nvar _variantHashes;\nvar AnimationCollector = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n    __privateAdd(this, _variantHashes, {});\n  }\n  /** @deprecated */\n  set(nodeId, prop, value, variantHash) {\n    switch (prop) {\n      case \"transformTemplate\": {\n        assert(typeof value === \"string\", `transformTemplate must be a string, received: ${value}`);\n        this.setHash(nodeId, variantHash, { transformTemplate: value, legacy: true });\n        break;\n      }\n      case \"initial\":\n      case \"animate\": {\n        assert(typeof value === \"object\", `${prop} must be a valid object, received: ${value}`);\n        this.setHash(nodeId, variantHash, { [prop]: value, legacy: true });\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  setHash(id, variantHash = defaultVariantKey, value) {\n    const existing = this.entries.get(id) ?? {};\n    const existingValue = existing[variantHash] ?? {};\n    existing[variantHash] = value === null ? null : { ...existingValue, ...value };\n    this.entries.set(id, existing);\n  }\n  variantHash(variantId, info) {\n    if (variantId === (info == null ? void 0 : info.primaryVariantId))\n      return defaultVariantKey;\n    const existing = __privateGet(this, _variantHashes)[variantId];\n    if (existing)\n      return existing;\n    const className2 = info == null ? void 0 : info.variantClassNames[variantId];\n    if (!className2)\n      return defaultVariantKey;\n    return __privateGet(this, _variantHashes)[variantId] = variantHashFromClassName(className2);\n  }\n  setAll(id, variants = defaultVariants, props, info) {\n    var _a;\n    if (props === null) {\n      for (const variantId of variants) {\n        this.setHash(id, this.variantHash(variantId, info), null);\n      }\n      return;\n    }\n    const transformTemplate2 = isFunction(props.transformTemplate) ? (_a = props.transformTemplate) == null ? void 0 : _a.call(props, {}, framerAppearTransformTemplateToken) : void 0;\n    const initial = props.__framer__presenceInitial ?? props.initial;\n    const animate3 = props.__framer__presenceAnimate ?? props.animate;\n    const config = {\n      initial: isObject(initial) ? initial : void 0,\n      animate: isObject(animate3) ? animate3 : void 0,\n      transformTemplate: isString(transformTemplate2) ? transformTemplate2 : void 0\n    };\n    for (const variantId of variants)\n      this.setHash(id, this.variantHash(variantId, info), config);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  toObject() {\n    return Object.fromEntries(this.entries);\n  }\n};\n_variantHashes = new WeakMap();\nvar framerAppearEffects = /* @__PURE__ */ new AnimationCollector();\nfunction withOptimizedAppearEffect(Component18) {\n  return React49.forwardRef(({ optimized, ...props }, ref) => {\n    const generatedComponentContext = React49.useContext(GeneratedComponentContext);\n    const variants = React49.useContext(SSRParentVariantsContext);\n    const id = props[framerAppearIdKey];\n    if (id && !isBrowser2()) {\n      framerAppearEffects.setAll(\n        id,\n        variants,\n        // A layer may have an optimization id, and an `animate` prop,\n        // but not require optimization. For example in the case of a\n        // layer where one variant has an appear effect, and another\n        // variant has a scroll appear effect, the scroll appear effect\n        // should not be optimized.\n        optimized ? props : null,\n        generatedComponentContext\n      );\n    }\n    const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n    return /* @__PURE__ */ jsx41(Component18, { ref, ...props, ...disabledProps });\n  });\n}\nvar optimizeAppear = (prop, id, animateTargetAndTransition, variantHash) => {\n  if (!isBrowser2()) {\n    framerAppearEffects.set(id, prop, animateTargetAndTransition, variantHash);\n  }\n  return animateTargetAndTransition;\n};\nvar framerAppearTransformTemplateToken = \"__Appear_Animation_Transform__\";\nvar optimizeAppearTransformTemplate = (id, fn) => {\n  if (!isBrowser2()) {\n    const template = fn == null ? void 0 : fn({}, framerAppearTransformTemplateToken);\n    if (template === void 0)\n      return fn;\n    framerAppearEffects.set(id, \"transformTemplate\", template);\n  }\n  return fn;\n};\nvar framerAppearIdKey = \"data-framer-appear-id\";\nvar framerAppearAnimationScriptKey = \"data-framer-appear-animation\";\nvar getDisabledFXPropsInStaticRenderer = (props) => {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (!isRenderingStaticContent)\n    return void 0;\n  return {\n    animate: isVariantOrVariantList(props.animate) ? props.animate : void 0,\n    initial: isVariantOrVariantList(props.initial) ? props.initial : void 0,\n    exit: void 0\n  };\n};\nfunction isVariantOrVariantList(value) {\n  return isString(value) || Array.isArray(value);\n}\n\n// ../../library/src/modules/useFXValues.ts\nimport React50 from \"react\";\nvar effectValuesKeys = [\n  \"opacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"skewX\",\n  \"skewY\",\n  /** @deprecated */\n  \"transformPerspective\"\n];\nvar makeFXValues = (defaults) => {\n  return {\n    x: motionValue((defaults == null ? void 0 : defaults.x) ?? 0),\n    y: motionValue((defaults == null ? void 0 : defaults.y) ?? 0),\n    opacity: motionValue((defaults == null ? void 0 : defaults.opacity) ?? 1),\n    scale: motionValue((defaults == null ? void 0 : defaults.scale) ?? 1),\n    rotate: motionValue((defaults == null ? void 0 : defaults.rotate) ?? 0),\n    rotateX: motionValue((defaults == null ? void 0 : defaults.rotateX) ?? 0),\n    rotateY: motionValue((defaults == null ? void 0 : defaults.rotateY) ?? 0),\n    skewX: motionValue((defaults == null ? void 0 : defaults.skewX) ?? 0),\n    skewY: motionValue((defaults == null ? void 0 : defaults.skewY) ?? 0),\n    /** @deprecated */\n    transformPerspective: motionValue((defaults == null ? void 0 : defaults.transformPerspective) ?? 0)\n  };\n};\nvar defaultFXValues = {\n  x: 0,\n  y: 0,\n  scale: 1,\n  opacity: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  /** @deprecated */\n  transformPerspective: 0\n};\nfunction isFXValuesKey(key7) {\n  return key7 in defaultFXValues;\n}\nvar effectEnabledStyle = {\n  willChange: \"transform\"\n};\nObject.freeze(effectEnabledStyle);\nvar effectDisabledStyle = {};\nObject.freeze(effectDisabledStyle);\nfunction useFXValues(values, enabled) {\n  const effect = useConstant(() => ({ values: makeFXValues(enabled ? values : void 0) }));\n  React50.useEffect(() => {\n    if (enabled)\n      return;\n    for (const key7 of effectValuesKeys) {\n      const value = defaultFXValues[key7];\n      if (isUndefined(value))\n        continue;\n      effect.values[key7].set(value);\n    }\n  }, [enabled]);\n  return effect;\n}\n\n// ../../library/src/modules/useLoopEffect.ts\nimport { startTransition, useCallback as useCallback8, useEffect as useEffect14, useMemo as useMemo6, useRef as useRef14, useState as useState3 } from \"react\";\nvar loopOptionsKeys = /* @__PURE__ */ new Set([\n  \"loopEffectEnabled\",\n  \"loopTransition\",\n  \"loop\",\n  \"loopRepeatType\",\n  \"loopRepeatDelay\",\n  \"loopPauseOffscreen\"\n]);\nvar useDelay = () => {\n  const timeoutRef = useRef14();\n  useEffect14(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  return async (d) => new Promise((resolve) => {\n    timeoutRef.current = setTimeout(() => {\n      resolve(true);\n    }, d * 1e3);\n  });\n};\nfunction useLoop({\n  loopEffectEnabled,\n  loopRepeatDelay,\n  loopTransition,\n  loopRepeatType,\n  loop,\n  loopPauseOffscreen\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const values = useConstant(makeFXValues);\n  const mirrorStateRef = useRef14(false);\n  const delay2 = useDelay();\n  const animateValues = useCallback8(async () => {\n    if (!loop)\n      return;\n    const transition = loopTransition || void 0;\n    const mirror = mirrorStateRef.current && loopRepeatType === \"mirror\";\n    const to = mirror ? defaultFXValues : loop;\n    const from = mirror ? loop : defaultFXValues;\n    mirrorStateRef.current = !mirrorStateRef.current;\n    return Promise.all(\n      effectValuesKeys.map((key7) => {\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          return;\n        values[key7].set(from[key7] ?? defaultFXValues[key7]);\n        return new Promise((resolve) => {\n          const opts = {\n            ...transition,\n            onComplete: () => resolve()\n          };\n          const target = to[key7] ?? from[key7];\n          if (typeof target === \"number\") {\n            animate(values[key7], target, opts);\n          }\n        });\n      })\n    );\n  }, [loop, loopRepeatType, loopTransition, shouldReduceMotion]);\n  const [isRunning, setIsRunning] = useState3(false);\n  const shouldRunRef = useRef14(false);\n  const animateLoop = useCallback8(async () => {\n    if (!loopEffectEnabled || !shouldRunRef.current)\n      return;\n    await animateValues();\n    await delay2(loopRepeatDelay ?? 0);\n    await animateLoop();\n  }, [animateValues, delay2, loopEffectEnabled, loopRepeatDelay]);\n  const start = useCallback8(() => {\n    if (shouldRunRef.current)\n      return;\n    shouldRunRef.current = true;\n    startTransition(() => setIsRunning(true));\n    void animateLoop();\n  }, [animateLoop]);\n  const stop = useCallback8((overrideRunRef = true) => {\n    effectValuesKeys.forEach((key7) => {\n      values[key7].stop();\n    });\n    effectValuesKeys.forEach((key7) => {\n      values[key7].set(defaultFXValues[key7]);\n    });\n    mirrorStateRef.current = false;\n    if (overrideRunRef) {\n      shouldRunRef.current = false;\n      startTransition(() => setIsRunning(false));\n    }\n  }, []);\n  const hasLoop = loopEffectEnabled && loop;\n  const startStopTabVisibilityListener = useCallback8(() => {\n    if (document.hidden) {\n      stop(false);\n    } else if (shouldRunRef.current) {\n      shouldRunRef.current = false;\n      start();\n    }\n  }, [start, stop]);\n  useEffect14(() => {\n    if (!hasLoop)\n      return;\n    document.addEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    return () => {\n      document.removeEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    };\n  }, [hasLoop, startStopTabVisibilityListener]);\n  useEffect14(() => {\n    if (hasLoop && loopPauseOffscreen)\n      return;\n    if (hasLoop) {\n      start();\n    } else {\n      stop();\n    }\n  }, [start, stop, loopPauseOffscreen, hasLoop]);\n  useEffect14(() => {\n    return () => stop();\n  }, []);\n  const startAndStopBasedOnIntersection = useCallback8(\n    (entry) => {\n      if (entry.isIntersecting) {\n        start();\n      } else {\n        stop();\n      }\n    },\n    [start, stop]\n  );\n  useSharedIntersectionObserver(ref, startAndStopBasedOnIntersection, {\n    enabled: hasLoop && loopPauseOffscreen\n  });\n  const addWillChange = isRunning || !loopPauseOffscreen;\n  return useMemo6(() => {\n    return {\n      values,\n      style: hasLoop && addWillChange ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [hasLoop, addWillChange]);\n}\n\n// ../../library/src/modules/useParallax.ts\nimport React51 from \"react\";\n\n// ../../library/src/modules/parallaxTransform.ts\nfunction parallaxTransform(scrollY, originalPosition, speed, offset, adjustPosition) {\n  const speedFactor = speed / 100 - 1;\n  const initialPosition = adjustPosition ? (originalPosition - offset) * speedFactor : 0;\n  const scrollOffset = -scrollY * speedFactor;\n  return initialPosition + scrollOffset;\n}\n\n// ../../library/src/modules/useParallax.ts\nvar parallaxOptionsKeys = /* @__PURE__ */ new Set([\n  \"speed\",\n  \"adjustPosition\",\n  \"offset\",\n  \"parallaxTransformEnabled\"\n]);\nfunction useParallax(options, ref, visibilityStyle) {\n  const { speed = 100, offset = 0, adjustPosition = false, parallaxTransformEnabled } = options;\n  const originalPosition = React51.useRef(null);\n  const shouldReduceMotion = useReducedMotionConfig();\n  const transform2 = React51.useCallback(\n    (yValue) => {\n      if (originalPosition.current === null)\n        return 0;\n      if (speed === 100)\n        return 0;\n      return parallaxTransform(yValue, originalPosition.current, speed, offset, adjustPosition);\n    },\n    [speed, offset, adjustPosition]\n  );\n  const { scrollY } = useScroll();\n  const parallaxY = useTransform(scrollY, transform2);\n  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? \"hidden\" : visibilityStyle);\n  const defaultValue = useMotionValue(0);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (element === null)\n        return;\n      frame.read(() => {\n        var _a;\n        originalPosition.current = ((_a = element.getBoundingClientRect()) == null ? void 0 : _a.top) ?? 0;\n      });\n      frame.update(() => {\n        parallaxY.set(transform2(scrollY.get()));\n        if (adjustPosition) {\n          visibility.set(visibilityStyle ?? \"initial\");\n        }\n      });\n    },\n    [adjustPosition]\n  );\n  useOnRouteChange(() => parallaxY.set(0));\n  return {\n    values: {\n      y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY\n    },\n    style: parallaxTransformEnabled ? {\n      ...effectEnabledStyle,\n      visibility\n    } : effectDisabledStyle\n  };\n}\n\n// ../../library/src/modules/usePresenceAnimation.ts\nimport { useMemo as useMemo7, useRef as useRef15 } from \"react\";\nfunction getTransition(value) {\n  if (isString(value) || !isObject(value))\n    return void 0;\n  return value == null ? void 0 : value.transition;\n}\nfunction runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId, instant) {\n  const transition = getTransition(target);\n  return Promise.all(\n    effectValuesKeys.map((key7) => {\n      return new Promise((resolve) => {\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          return resolve();\n        const motionValue2 = effect.values[key7];\n        motionValue2.stop();\n        let value = !isObject(target) ? defaultFXValues[key7] : (target == null ? void 0 : target[key7]) ?? defaultFXValues[key7];\n        if (isMotionValue(value))\n          value = value.get();\n        if (!isNumber(value))\n          return resolve();\n        const visualElement = visualElementStore.get(ref.current);\n        if (visualElement)\n          visualElement.setBaseTarget(key7, value);\n        let startTime;\n        if (isString(appearId) && !(motionValue2 == null ? void 0 : motionValue2.hasAnimated) && safeWindow.MotionHandoffAnimation) {\n          const handoffAnimationStartTime = safeWindow.MotionHandoffAnimation(appearId, key7, frame);\n          if (handoffAnimationStartTime) {\n            startTime = handoffAnimationStartTime;\n          }\n        }\n        if (instant) {\n          motionValue2.set(value);\n        } else {\n          animate(motionValue2, value, {\n            ...transition,\n            velocity: 0,\n            startTime,\n            onComplete: () => resolve()\n          });\n        }\n      });\n    })\n  );\n}\nvar presenceOptionsKeys = /* @__PURE__ */ new Set([\n  \"presenceInitial\",\n  \"presenceAnimate\",\n  \"presenceExit\"\n]);\nfunction usePresenceAnimation({\n  initial: motionInitial,\n  animate: motionAnimate,\n  exit: motionExit,\n  presenceInitial,\n  presenceAnimate,\n  presenceExit\n}, ref, enabled, style, appearId) {\n  const initial = presenceInitial ?? motionInitial;\n  const animateConfig = presenceAnimate ?? motionAnimate;\n  const exit = presenceExit ?? motionExit;\n  const [isPresent, safeToRemove] = usePresence();\n  const internalState = useRef15({\n    lastPresence: false,\n    lastAnimate: animateConfig,\n    hasMounted: false,\n    running: false\n  });\n  const effect = useConstant(() => {\n    const base = initial ?? style;\n    if (!isObject(base))\n      return { values: makeFXValues() };\n    const defaults = {};\n    for (const key7 in base) {\n      const value = isObject(base) ? base[key7] : void 0;\n      if (!isNumber(value))\n        continue;\n      defaults[key7] = value;\n    }\n    return { values: makeFXValues(defaults) };\n  });\n  useRefEffect(\n    ref,\n    (element) => {\n      const { hasMounted } = internalState.current;\n      if (hasMounted && animateConfig)\n        return;\n      const visualElement = visualElementStore.get(element);\n      if (!visualElement)\n        return;\n      Object.assign(internalState.current, { hasMounted: true });\n      for (const key7 in effect.values) {\n        if (!isFXValuesKey(key7))\n          continue;\n        const value = style == null ? void 0 : style[key7];\n        visualElement.setBaseTarget(key7, isNumber(value) ? value : defaultFXValues[key7]);\n      }\n    },\n    [animateConfig]\n  );\n  const shouldReduceMotion = useReducedMotionConfig();\n  useRefEffect(ref, (element) => {\n    if (!enabled) {\n      safeToRemove == null ? void 0 : safeToRemove();\n      return;\n    }\n    if (element === null)\n      return;\n    if (isPresent !== internalState.current.lastPresence) {\n      Object.assign(internalState.current, { lastPresence: isPresent });\n      if (isPresent) {\n        if (initial && animateConfig) {\n          Object.assign(internalState.current, { running: true });\n          void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId).then(\n            () => Object.assign(internalState.current, { running: false })\n          );\n        }\n      } else if (exit) {\n        Object.assign(internalState.current, { running: true });\n        void runEffectAnimation(exit, effect, shouldReduceMotion, ref, appearId).then(() => Object.assign(internalState.current, { running: false })).then(() => safeToRemove());\n      } else {\n        safeToRemove();\n      }\n      return;\n    }\n    const { lastAnimate, running } = internalState.current;\n    const hasAnimateChanged = !isEqual(animateConfig, lastAnimate);\n    if (!hasAnimateChanged || !animateConfig)\n      return;\n    Object.assign(internalState.current, { lastAnimate: animateConfig });\n    void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId, !running).then(\n      () => Object.assign(internalState.current, { running: false })\n    );\n  });\n  const effectEnabled = enabled && animateConfig;\n  return useMemo7(() => {\n    return { values: effect.values, style: effectEnabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [effectEnabled]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nimport React53, { useMemo as useMemo8 } from \"react\";\n\n// ../../library/src/modules/calculateOffsetTop.ts\nfunction calcOffsetTop(element, container) {\n  let top = 0;\n  let current = element;\n  while (current && current !== container) {\n    if (!(current instanceof HTMLElement))\n      break;\n    top += current.offsetTop;\n    current = current.offsetParent;\n  }\n  return top;\n}\n\n// ../../library/src/modules/createTransformInputRange.ts\nvar scrollObserverOffset = 1;\nfunction createTransformInputRange(transformTargets, threshold = 0, callback) {\n  var _a;\n  const starts = [];\n  const inputRange = [];\n  for (let index = transformTargets.length; index >= 0; index--) {\n    const { ref: targetRef, offset } = transformTargets[index] ?? {};\n    if (!targetRef || !targetRef.current)\n      continue;\n    const offsetTop = calcOffsetTop(targetRef.current, document.documentElement);\n    const top = offsetTop - scrollObserverOffset - (offset ?? 0) - threshold;\n    const height = ((_a = targetRef.current) == null ? void 0 : _a.clientHeight) ?? 0;\n    const previousTop = starts[starts.length - 1];\n    const end = Math.max(top + height, 0);\n    starts.push(top);\n    inputRange.unshift(\n      Math.max(top, 0),\n      previousTop === void 0 ? end : Math.min(end, Math.max(previousTop - 1, 0))\n    );\n    callback == null ? void 0 : callback(index);\n  }\n  return inputRange;\n}\n\n// ../../library/src/modules/useScrollDirectionChange.ts\nimport React52 from \"react\";\nfunction currentScrollDirection(offset, lastOffset = 0) {\n  if (offset < lastOffset)\n    return \"up\";\n  return \"down\";\n}\nvar scrollDirectionThreshold = 4;\nfunction useScrollDirectionChange(scrollDirection, cb, options = {}) {\n  const { direction, target } = scrollDirection ?? {};\n  const { repeat = true, enabled = true } = options;\n  const currentRouteKey = useCurrentRouteKey();\n  React52.useEffect(() => {\n    if (!direction || !enabled)\n      return;\n    const _ = currentRouteKey;\n    let lastOffset = void 0;\n    let directionChangeOffset = 0;\n    let lastDirection = void 0;\n    let currentTarget = void 0;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!repeat && currentTarget === target)\n        return;\n      if (scrollY.current > scrollY.scrollLength)\n        return;\n      if (scrollY.current < 0)\n        return;\n      const d = currentScrollDirection(scrollY.current, lastOffset);\n      lastOffset = scrollY.current;\n      const hasDirectionChanged = d !== lastDirection;\n      lastDirection = d;\n      if (hasDirectionChanged) {\n        directionChangeOffset = scrollY.current;\n      } else {\n        const delta = Math.abs(scrollY.current - directionChangeOffset);\n        if (delta < scrollDirectionThreshold)\n          return;\n        const nextTarget = d === direction ? target : void 0;\n        if (nextTarget !== currentTarget)\n          cb(nextTarget);\n        currentTarget = nextTarget;\n      }\n    });\n  }, [currentRouteKey, direction, repeat, target, enabled, cb]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nvar styleAppearOptionsKeys = /* @__PURE__ */ new Set([\n  \"threshold\",\n  \"animateOnce\",\n  \"opacity\",\n  \"targetOpacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"transition\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"perspective\",\n  \"enter\",\n  \"exit\",\n  \"animate\",\n  \"styleAppearEffectEnabled\",\n  \"targets\",\n  \"scrollDirection\"\n]);\nvar defaultOutputRange = [\"animate\", \"animate\"];\nvar defaultRanges = { inputRange: [], outputRange: [] };\nfunction createInputOutputRange(targets, threshold, hasExit) {\n  const inputRange = createTransformInputRange(targets, threshold);\n  const outputRange = [...defaultOutputRange];\n  const firstRange = inputRange[0];\n  if (!isNumber(firstRange))\n    return defaultRanges;\n  if (firstRange > 1) {\n    inputRange.unshift(0, firstRange - 1);\n    outputRange.unshift(\"initial\", \"initial\");\n  }\n  if (hasExit) {\n    const idx = inputRange.length - 1;\n    const last = inputRange[idx];\n    if (!isNumber(last))\n      return defaultRanges;\n    inputRange.push(last + 1);\n    outputRange.push(\"exit\");\n  }\n  return {\n    inputRange,\n    outputRange\n  };\n}\nfunction makeStyle(defaults) {\n  return {\n    x: (defaults == null ? void 0 : defaults.x) ?? defaultFXValues.x,\n    y: (defaults == null ? void 0 : defaults.y) ?? defaultFXValues.y,\n    scale: (defaults == null ? void 0 : defaults.scale) ?? defaultFXValues.scale,\n    opacity: (defaults == null ? void 0 : defaults.opacity) ?? defaultFXValues.opacity,\n    transformPerspective: (defaults == null ? void 0 : defaults.transformPerspective) ?? defaultFXValues.transformPerspective,\n    rotate: (defaults == null ? void 0 : defaults.rotate) ?? defaultFXValues.rotate,\n    rotateX: (defaults == null ? void 0 : defaults.rotateX) ?? defaultFXValues.rotateX,\n    rotateY: (defaults == null ? void 0 : defaults.rotateY) ?? defaultFXValues.rotateY,\n    skewX: (defaults == null ? void 0 : defaults.skewX) ?? defaultFXValues.skewX,\n    skewY: (defaults == null ? void 0 : defaults.skewY) ?? defaultFXValues.skewY,\n    transition: (defaults == null ? void 0 : defaults.transition) ?? void 0\n  };\n}\nfunction useAnimationVariants({\n  opacity,\n  targetOpacity,\n  perspective: transformPerspective,\n  enter,\n  exit,\n  animate: animateVariant,\n  ...defaultStyles\n}) {\n  return React53.useMemo(\n    () => ({\n      initial: enter ?? makeStyle({\n        ...defaultStyles,\n        opacity: opacity ?? targetOpacity ?? 1,\n        transformPerspective\n      }),\n      animate: animateVariant ?? makeStyle({\n        opacity: targetOpacity\n      }),\n      exit: exit ?? makeStyle()\n    }),\n    // biome-ignore lint/correctness/useExhaustiveDependencies: `defaultStyles` makes this memo re-run on every render, but that appears to be fine.\n    [animateVariant, defaultStyles, enter, exit, opacity, targetOpacity, transformPerspective]\n  );\n}\nfunction useStyleAppearEffect(options, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const variants = useAnimationVariants(options);\n  const enabled = options.styleAppearEffectEnabled;\n  const effect = useFXValues(enabled ? variants.initial : variants.animate, enabled);\n  const playState = React53.useRef({\n    isPlaying: false,\n    scheduledAppearState: void 0,\n    lastAppearState: !options.styleAppearEffectEnabled\n  });\n  const currentRouteKey = useCurrentRouteKey();\n  const animation = React53.useRef();\n  const runAnimation = React53.useCallback(\n    async ({ transition, ...target }, fromInitial) => {\n      const transitionWithFallback = transition ?? variants.animate.transition ?? options.transition;\n      await animation.current;\n      const visualElement = visualElementStore.get(ref.current);\n      animation.current = Promise.all(\n        effectValuesKeys.map((key7) => {\n          if (fromInitial)\n            effect.values[key7].set(variants.initial[key7] ?? defaultFXValues[key7]);\n          const toValue = target[key7] ?? defaultFXValues[key7];\n          if (visualElement && typeof toValue !== \"object\") {\n            visualElement.setBaseTarget(key7, toValue);\n          }\n          return new Promise((resolve) => {\n            if (shouldReduceMotion && key7 !== \"opacity\") {\n              if (isNumber(toValue))\n                effect.values[key7].set(toValue);\n              resolve();\n            } else {\n              const opts = {\n                restDelta: key7 === \"scale\" ? 1e-3 : void 0,\n                ...transitionWithFallback,\n                onComplete: () => resolve()\n              };\n              if (typeof toValue === \"number\") {\n                animate(effect.values[key7], toValue, opts);\n              }\n            }\n          });\n        })\n      );\n    },\n    []\n  );\n  const hasAnimatedOnce = options.animateOnce && playState.current.lastAppearState === true;\n  const animateWithIntersectionObserver = !options.targets && options.styleAppearEffectEnabled && !options.scrollDirection && !hasAnimatedOnce;\n  useAppearEffect(\n    ref,\n    (appears) => {\n      const { isPlaying, lastAppearState } = playState.current;\n      if (isPlaying) {\n        playState.current.scheduledAppearState = appears;\n        return;\n      }\n      playState.current.scheduledAppearState = void 0;\n      playState.current.lastAppearState = appears;\n      if (lastAppearState === appears)\n        return;\n      runAnimation(appears ? variants.animate : variants.exit, appears);\n    },\n    {\n      enabled: animateWithIntersectionObserver,\n      animateOnce: !!options.animateOnce,\n      threshold: {\n        y: options.threshold\n      }\n    }\n  );\n  const animateWithScrollInfo = options.targets && enabled && !options.scrollDirection;\n  React53.useEffect(() => {\n    if (!animateWithScrollInfo)\n      return;\n    const playedState = { initial: true };\n    const _ = currentRouteKey;\n    let lastVariant = \"initial\";\n    return scrollInfo(({ y: scrollY }) => {\n      const { targets } = options;\n      if (!targets)\n        return;\n      if (!targets[0] || targets[0].ref && !targets[0].ref.current)\n        return;\n      const { inputRange, outputRange } = createInputOutputRange(\n        targets,\n        (options.threshold ?? 0) * scrollY.containerLength,\n        !!options.exit\n      );\n      if (inputRange.length === 0 || inputRange.length !== outputRange.length)\n        return;\n      const variant = transform(scrollY.current, inputRange, outputRange);\n      if (options.animateOnce && playedState[variant])\n        return;\n      playedState[variant] = true;\n      if (lastVariant === variant)\n        return;\n      lastVariant = variant;\n      const variantAnimation = asRecord(variants)[variant];\n      if (!variantAnimation)\n        return;\n      runAnimation(variantAnimation);\n    });\n  }, [currentRouteKey, animateWithScrollInfo]);\n  useScrollDirectionChange(options.scrollDirection, (target) => runAnimation(target ?? variants.animate), {\n    enabled,\n    repeat: !options.animateOnce\n  });\n  useOnRouteChange(() => {\n    var _a;\n    if (!enabled)\n      return;\n    if (!options.targets && !options.scrollDirection)\n      return;\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set(((_a = variants.initial) == null ? void 0 : _a[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return useMemo8(() => {\n    return { values: effect.values, style: enabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [enabled]);\n}\n\n// ../../library/src/modules/useStyleTransformEffect.ts\nimport React54, { useLayoutEffect as useLayoutEffect5 } from \"react\";\nvar styleTransformOptionsKeys = /* @__PURE__ */ new Set([\n  \"transformViewportThreshold\",\n  \"styleTransformEffectEnabled\",\n  \"transformTargets\",\n  \"spring\",\n  \"transformTrigger\"\n]);\nvar defaultValues = (transformTargets, shouldReduceMotion) => {\n  var _a;\n  const initial = (_a = transformTargets == null ? void 0 : transformTargets[0]) == null ? void 0 : _a.target;\n  return shouldReduceMotion ? { opacity: (initial == null ? void 0 : initial.opacity) ?? 1 } : initial;\n};\nvar defaultRanges2 = () => ({\n  opacity: [],\n  x: [],\n  y: [],\n  scale: [],\n  rotate: [],\n  rotateX: [],\n  rotateY: [],\n  skewX: [],\n  skewY: [],\n  transformPerspective: []\n});\nfunction useAttachOptionalSpring(values, spring2) {\n  const springs = React54.useRef({});\n  React54.useEffect(() => {\n    if (spring2 === void 0)\n      return;\n    for (const key7 of objectKeys(values)) {\n      const m2 = values[key7];\n      m2.attach((v, set) => {\n        const active = springs.current[key7];\n        if (active)\n          active.stop();\n        springs.current[key7] = animateValue({\n          keyframes: [m2.get(), v],\n          velocity: m2.getVelocity(),\n          ...spring2,\n          restDelta: 1e-3,\n          onUpdate: set\n        });\n        if (!frameData.isProcessing) {\n          const delta = performance.now() - frameData.timestamp;\n          if (delta < 40) {\n            springs.current[key7].time = delta / 1e3;\n          }\n        }\n        return m2.get();\n      });\n    }\n  }, [JSON.stringify(spring2)]);\n}\nfunction createInputOutputRanges(transformTargets, threshold) {\n  const effectKeyOutputRange = defaultRanges2();\n  const inputRange = createTransformInputRange(transformTargets, threshold, (index) => {\n    var _a, _b, _c;\n    const previousTarget = (_a = transformTargets[index - 1]) == null ? void 0 : _a.target;\n    const currentTarget = (_b = transformTargets[index]) == null ? void 0 : _b.target;\n    for (const key7 of effectValuesKeys) {\n      (_c = effectKeyOutputRange[key7]) == null ? void 0 : _c.unshift((previousTarget == null ? void 0 : previousTarget[key7]) ?? 0, (currentTarget == null ? void 0 : currentTarget[key7]) ?? 0);\n    }\n  });\n  return { inputRange, effectKeyOutputRange };\n}\nfunction createPageOutputRange(transformTargets) {\n  var _a;\n  const keyOutputRange = defaultRanges2();\n  for (const { target } of transformTargets) {\n    for (const key7 of effectValuesKeys)\n      (_a = keyOutputRange[key7]) == null ? void 0 : _a.push(target[key7]);\n  }\n  return keyOutputRange;\n}\nvar pageInputRange = [0, 1];\nfunction useStyleTransform({\n  transformTrigger,\n  styleTransformEffectEnabled,\n  transformTargets,\n  spring: spring2,\n  transformViewportThreshold = 0\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const effect = useFXValues(defaultValues(transformTargets, shouldReduceMotion), styleTransformEffectEnabled);\n  const effectDisabled = !styleTransformEffectEnabled || !transformTargets;\n  const triggerOnScroll = transformTrigger === \"onScrollTarget\";\n  const currentRouteKey = useCurrentRouteKey();\n  useLayoutEffect5(() => {\n    if (effectDisabled || !triggerOnScroll)\n      return;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current) {\n        return;\n      }\n      const { inputRange: scrollYInputRange, effectKeyOutputRange } = createInputOutputRanges(\n        transformTargets,\n        transformViewportThreshold * scrollY.containerLength\n      );\n      if (scrollYInputRange.length === 0)\n        return;\n      for (const key7 of effectValuesKeys) {\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          continue;\n        if (scrollYInputRange.length !== effectKeyOutputRange[key7].length)\n          continue;\n        if (effectKeyOutputRange[key7][0] === void 0)\n          continue;\n        effect.values[key7].set(transform(scrollY.current, scrollYInputRange, effectKeyOutputRange[key7]));\n      }\n    });\n  }, [shouldReduceMotion, triggerOnScroll, transformViewportThreshold, transformTargets, effectDisabled]);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (effectDisabled || triggerOnScroll || element === null) {\n        return;\n      }\n      const _ = currentRouteKey;\n      const outputRange = createPageOutputRange(transformTargets);\n      return scrollInfo(\n        ({ y: scrollY }) => {\n          for (const key7 of effectValuesKeys) {\n            if (shouldReduceMotion && key7 !== \"opacity\")\n              continue;\n            if (pageInputRange.length !== outputRange[key7].length)\n              continue;\n            if (outputRange[key7][0] === void 0)\n              continue;\n            effect.values[key7].set(transform(scrollY.progress, pageInputRange, outputRange[key7]));\n          }\n        },\n        transformTrigger === \"onInView\" ? {\n          target: element ?? void 0,\n          offset: [\"start end\", \"end end\"]\n        } : void 0\n      );\n    },\n    [currentRouteKey, shouldReduceMotion, transformTrigger, triggerOnScroll, transformTargets, effectDisabled]\n  );\n  useAttachOptionalSpring(effect.values, spring2);\n  useOnRouteChange(() => {\n    if (effectDisabled)\n      return;\n    const values = defaultValues(transformTargets, shouldReduceMotion);\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set((values == null ? void 0 : values[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return React54.useMemo(() => {\n    return {\n      values: effect.values,\n      style: styleTransformEffectEnabled ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [styleTransformEffectEnabled]);\n}\n\n// ../../library/src/modules/withFX.tsx\nimport { jsx as jsx42 } from \"react/jsx-runtime\";\nvar groups = {\n  parallax: parallaxOptionsKeys,\n  styleAppear: styleAppearOptionsKeys,\n  styleTransform: styleTransformOptionsKeys,\n  loop: loopOptionsKeys,\n  presence: presenceOptionsKeys\n};\nvar groupValues = /* @__PURE__ */ objectKeys(groups);\nfunction backwardsCompatibleEnabledCheck(key7, secondaryKey, object) {\n  return !(key7 in object) && secondaryKey in object || object[key7] === true;\n}\nfunction extractFXOptions(props) {\n  const result = {\n    parallax: {},\n    styleAppear: {},\n    styleTransform: {},\n    presence: {\n      animate: props.animate,\n      initial: props.initial,\n      exit: props.exit\n    },\n    loop: {},\n    forwardedProps: {}\n  };\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey) {\n      for (const group of groupValues) {\n        const keys3 = groups[group];\n        if (keys3 == null ? void 0 : keys3.has(strippedKey)) {\n          ;\n          result[group][strippedKey] = asRecord(props)[key7];\n          break;\n        }\n      }\n    } else {\n      ;\n      result.forwardedProps[key7] = asRecord(props)[key7];\n    }\n  }\n  result.parallax.parallaxTransformEnabled = backwardsCompatibleEnabledCheck(\n    \"parallaxTransformEnabled\",\n    \"speed\",\n    result.parallax\n  );\n  result.styleAppear.styleAppearEffectEnabled = backwardsCompatibleEnabledCheck(\n    \"styleAppearEffectEnabled\",\n    \"animateOnce\",\n    result.styleAppear\n  );\n  return result;\n}\nvar add2 = (values) => values.reduce((sum, value) => sum += value, 0);\nvar multiply = (values) => values.reduce((sum, value) => sum = sum * value, 1);\nvar reactRefObjectKey = \"current\";\nfunction isReactRefObject(value) {\n  return isObject(value) && reactRefObjectKey in value;\n}\nfunction addMotionValueStyle(style, values) {\n  if (!style || !isObject(style))\n    return values;\n  for (const key7 in style) {\n    const value = style[key7];\n    if (!isMotionValue(value) || !isFXValuesKey(key7))\n      continue;\n    if (!isNumber(value.get()))\n      continue;\n    values[key7].push(value);\n  }\n}\nfunction isVariantOrVariantList2(value) {\n  return isString(value) || Array.isArray(value);\n}\nvar withFX = (Component18) => React55.forwardRef((props, forwardedRef) => {\n  var _a;\n  if (props.__withFX) {\n    return /* @__PURE__ */ jsx42(Component18, { ...props, animate: void 0, initial: void 0, exit: void 0, ref: forwardedRef });\n  }\n  const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n  if (disabledProps) {\n    return /* @__PURE__ */ jsx42(Component18, { ...props, ...disabledProps, ref: forwardedRef });\n  }\n  const {\n    parallax = {},\n    styleAppear = {},\n    styleTransform = {},\n    presence = {},\n    loop = {},\n    forwardedProps\n  } = extractFXOptions(props);\n  const {\n    __targetOpacity: targetOpacityValue,\n    __perspectiveFX: withPerspective,\n    __smartComponentFX: inSmartComponent = false\n  } = props;\n  const targetOpacity = useMotionValue(targetOpacityValue ?? 1);\n  const observerRef = useObserverRef(forwardedRef);\n  const { values: presenceEffectValues, style: presenceEffectStyle } = usePresenceAnimation(\n    presence,\n    observerRef,\n    inSmartComponent,\n    props.style,\n    props[optimizedAppearDataAttribute]\n  );\n  const { values: parallaxValues, style: parallaxStyle } = useParallax(\n    parallax,\n    observerRef,\n    (_a = props.style) == null ? void 0 : _a.visibility\n  );\n  const { values: transformValues2, style: scrollStyle } = useStyleTransform(styleTransform, observerRef);\n  const { values: appearEffectValues, style: scrollAppearStyle } = useStyleAppearEffect(styleAppear, observerRef);\n  const { values: loopValues, style: loopStyle } = useLoop(loop, observerRef);\n  const fxValues = React55.useMemo(() => {\n    return {\n      scale: [appearEffectValues.scale, loopValues.scale, presenceEffectValues.scale, transformValues2.scale],\n      opacity: [\n        appearEffectValues.opacity,\n        loopValues.opacity,\n        presenceEffectValues.opacity,\n        // Ensure that the layers opacity is always represented.\n        targetOpacity,\n        transformValues2.opacity\n      ],\n      x: [appearEffectValues.x, loopValues.x, presenceEffectValues.x, transformValues2.x],\n      y: [appearEffectValues.y, loopValues.y, parallaxValues.y, presenceEffectValues.y, transformValues2.y],\n      rotate: [\n        appearEffectValues.rotate,\n        loopValues.rotate,\n        presenceEffectValues.rotate,\n        transformValues2.rotate\n      ],\n      rotateX: [\n        appearEffectValues.rotateX,\n        loopValues.rotateX,\n        presenceEffectValues.rotateX,\n        transformValues2.rotateX\n      ],\n      rotateY: [\n        appearEffectValues.rotateY,\n        loopValues.rotateY,\n        presenceEffectValues.rotateY,\n        transformValues2.rotateY\n      ],\n      skewX: [appearEffectValues.skewX, loopValues.skewX, presenceEffectValues.skewX, transformValues2.skewX],\n      skewY: [appearEffectValues.skewY, loopValues.skewY, presenceEffectValues.skewY, transformValues2.skewY],\n      /** @deprecated */\n      transformPerspective: [\n        transformValues2.transformPerspective,\n        appearEffectValues.transformPerspective\n        // We stopped animating transformPerspective with `withFX`\n        // before introducing `useLoop` etc, so it does not have a\n        // value here on purpose.\n      ]\n    };\n  }, [targetOpacity, transformValues2, parallaxValues, appearEffectValues, loopValues, presenceEffectValues]);\n  addMotionValueStyle(props.style, fxValues);\n  const scale = useTransform(fxValues.scale, multiply);\n  const opacity = useTransform(fxValues.opacity, multiply);\n  const x = useTransform(fxValues.x, add2);\n  const y = useTransform(fxValues.y, add2);\n  const rotate = useTransform(fxValues.rotate, add2);\n  const rotateX = useTransform(fxValues.rotateX, add2);\n  const rotateY = useTransform(fxValues.rotateY, add2);\n  const skewX = useTransform(fxValues.skewX, add2);\n  const skewY = useTransform(fxValues.skewY, add2);\n  const transformPerspective = useTransform(fxValues.transformPerspective, add2);\n  const { drag, dragConstraints } = forwardedProps;\n  useRerenderOnResize(drag && isReactRefObject(dragConstraints) ? dragConstraints : void 0);\n  const motionValueStyle = {\n    opacity,\n    scale,\n    x,\n    y,\n    rotate,\n    rotateX,\n    rotateY,\n    skewX,\n    skewY\n  };\n  if (isUndefined(withPerspective))\n    motionValueStyle.transformPerspective = transformPerspective;\n  const animate3 = isVariantOrVariantList2(props.animate) ? props.animate : void 0;\n  const initial = isVariantOrVariantList2(props.initial) ? props.initial : void 0;\n  const exit = isVariantOrVariantList2(props.exit) ? props.exit : void 0;\n  const motionGestures = inSmartComponent && !presence.presenceInitial ? { initial, animate: animate3, exit } : {};\n  return /* @__PURE__ */ jsx42(\n    Component18,\n    {\n      ...forwardedProps,\n      ...motionGestures,\n      __withFX: true,\n      style: {\n        ...props.style,\n        ...parallaxStyle,\n        ...scrollStyle,\n        ...loopStyle,\n        ...motionValueStyle,\n        ...scrollAppearStyle,\n        ...presenceEffectStyle\n      },\n      values: presenceEffectValues,\n      ref: observerRef\n    }\n  );\n});\n\n// ../../library/src/deprecated/deprecatedEffects.ts\nvar withParallaxTransform = withFX;\nvar withStyleAppearEffect = withFX;\n\n// ../../library/src/modules/ComponentPresetsContext.tsx\nimport { createContext as createContext5, useContext as useContext13, useRef as useRef16 } from \"react\";\nimport { jsx as jsx43 } from \"react/jsx-runtime\";\nvar Context = /* @__PURE__ */ createContext5({});\nfunction ComponentPresetsProvider({ presets, children }) {\n  const lastPresets = useRef16(presets);\n  if (!isEqual(presets, lastPresets.current, false)) {\n    lastPresets.current = presets;\n  }\n  return /* @__PURE__ */ jsx43(Context.Provider, { value: lastPresets.current, children });\n}\nfunction ComponentPresetsConsumer({ componentIdentifier, children }) {\n  const componentPresets = useContext13(Context);\n  const presetProps = componentPresets[componentIdentifier] ?? {};\n  return children(presetProps);\n}\n\n// ../../library/src/modules/ComponentViewportContext.tsx\nimport React56 from \"react\";\nimport { jsx as jsx44 } from \"react/jsx-runtime\";\nvar ComponentViewportContext = /* @__PURE__ */ React56.createContext({});\nfunction useComponentViewport() {\n  return React56.useContext(ComponentViewportContext);\n}\nvar ComponentViewportProvider = /* @__PURE__ */ React56.forwardRef(function ComponentViewportProvider2({ width, height, y, children, ...rest }, ref) {\n  const componentViewport = React56.useMemo(() => {\n    return { width, height, y };\n  }, [width, height, y]);\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  return /* @__PURE__ */ jsx44(ComponentViewportContext.Provider, { value: componentViewport, children: cloneWithPropsAndRef(children, rest) });\n});\n\n// ../../library/src/modules/Container.tsx\nimport React59 from \"react\";\n\n// ../../library/src/render/utils/withGeneratedLayoutId.tsx\nimport React57 from \"react\";\nimport { jsx as jsx45 } from \"react/jsx-runtime\";\nvar withGeneratedLayoutId = (Component18) => React57.forwardRef((props, ref) => {\n  const layoutId = useLayoutId(props);\n  return /* @__PURE__ */ jsx45(Component18, { layoutId, ...props, layoutIdKey: void 0, duplicatedFrom: void 0, ref });\n});\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { Component as Component12, Suspense as Suspense3 } from \"react\";\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { Suspense as Suspense2 } from \"react\";\n\n// ../../library/src/router/error-boundary/SuspenseErrorBoundary.tsx\nimport { Component as Component11, Suspense } from \"react\";\nimport { jsx as jsx46 } from \"react/jsx-runtime\";\nvar SuspenseErrorBoundary = class extends Component11 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error, errorInfo) {\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\"Caught error in SuspenseErrorBoundary:\\n\", error, componentStack);\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : void 0;\n    sendTrackingEvent(\"published_site_load_recoverable_error\", {\n      message: String(error),\n      stack,\n      // only log componentStack if we don't have a stack\n      componentStack: stack ? void 0 : componentStack\n    });\n  }\n  render() {\n    const error = this.state.error;\n    if (error === void 0)\n      return this.props.children;\n    if (error instanceof NotFoundErrorBoundaryCaughtError) {\n      throw error.cause;\n    }\n    window.__framer_STPD_OPT_OUT__ = true;\n    return /* @__PURE__ */ jsx46(Suspense, { children: this.props.fallbackChildren });\n  }\n};\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { jsx as jsx47 } from \"react/jsx-runtime\";\nvar suspendPromise = /* @__PURE__ */ (() => typeof window !== \"undefined\" ? new Promise(() => {\n}) : null)();\nfunction Suspend() {\n  if (typeof window === \"undefined\" || window.__framer_STPD_OPT_OUT__) {\n    return /* @__PURE__ */ jsx47(\n      \"div\",\n      {\n        hidden: true,\n        dangerouslySetInnerHTML: { __html: \"<!-- SuspenseThatPreservesDOM fallback rendered -->\" }\n      }\n    );\n  }\n  throw suspendPromise;\n}\nfunction SuspenseThatPreservesDom({ children }) {\n  return /* @__PURE__ */ jsx47(SuspenseErrorBoundary, { fallbackChildren: children, children: /* @__PURE__ */ jsx47(Suspense2, { fallback: /* @__PURE__ */ jsx47(Suspend, {}), children }) });\n}\n\n// ../../library/src/modules/code-boundary/NullFallback.tsx\nimport { jsx as jsx48 } from \"react/jsx-runtime\";\nfunction NullFallback() {\n  return /* @__PURE__ */ jsx48(\n    \"div\",\n    {\n      hidden: true,\n      dangerouslySetInnerHTML: { __html: \"<!-- Code boundary fallback rendered -->\" }\n    }\n  );\n}\nvar nullFallback = /* @__PURE__ */ jsx48(NullFallback, {});\n\n// ../../library/src/modules/code-boundary/collectErrorToAnalytics.tsx\nfunction collectErrorToAnalytics(error, errorInfo) {\n  if (typeof window === \"undefined\")\n    return;\n  if (Math.random() > 0.01)\n    return;\n  const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n  const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n  sendTrackingEvent(\"published_site_load_recoverable_error\", {\n    message: String(error),\n    stack,\n    // only log componentStack if we don't have a stack\n    componentStack: stack ? void 0 : componentStack\n  });\n}\n\n// ../../library/src/modules/code-boundary/logger.ts\nfunction logError(...args) {\n  if (false)\n    return;\n  console.error(...args);\n}\n\n// ../../library/src/modules/code-boundary/shouldEnableCodeBoundaries.ts\nfunction shouldEnableCodeBoundaries() {\n  return RenderTarget.current() !== RenderTarget.canvas;\n}\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { jsx as jsx49 } from \"react/jsx-runtime\";\nfunction CodeComponentBoundary({ errorMessage, fallback, children }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx49(ServerSideErrorBoundary, { fallback, children: /* @__PURE__ */ jsx49(ClientSideErrorBoundary, { fallback, errorMessage, children }) });\n}\nvar ClientSideErrorBoundary = class extends Component12 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  static getDerivedStateFromError() {\n    return { hasError: true };\n  }\n  componentDidCatch(error, errorInfo) {\n    logError(this.props.errorMessage, errorInfo == null ? void 0 : errorInfo.componentStack);\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children, fallback = nullFallback } = this.props;\n    const { hasError } = this.state;\n    return hasError ? fallback : children;\n  }\n};\nfunction ServerSideErrorBoundary({ children, fallback = nullFallback }) {\n  return typeof window === \"undefined\" ? (\n    // On the server, Suspense fallback is activated by errors. So we use the actual Suspense,\n    // and render the actual error fallback if Suspense activates.\n    /* @__PURE__ */ jsx49(Suspense3, { fallback, children })\n  ) : (\n    // On the client, Suspense fallback is activated by data fetching. So we use SuspenseThatPreservesDom,\n    // because we don\u2019t want to render a fallback if the boundary gets inadvertently activated.\n    //\n    // \u201CWhy won\u2019t you just render plain children without Suspense?\u201D Because that would cause a hydration mismatch\n    // (the server has Suspense, the client doesn\u2019t).\n    /* @__PURE__ */ jsx49(SuspenseThatPreservesDom, { children })\n  );\n}\n\n// ../../library/src/modules/code-boundary/DeprecatedContainerErrorBoundary.tsx\nimport { Component as Component13 } from \"react\";\nvar DeprecatedContainerErrorBoundary = class extends Component13 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  // We use `componentDidCatch` instead of `static getDerivedStateFromError()` because the latter could also catch hydration errors.\n  // Hydration errors are recoverable by React, so we don't want to hide the coponent in that case (since the tree will not unmount).\n  componentDidCatch(error, errorInfo) {\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\n      \"Error in component (see previous log). This component has been hidden. Please check any custom code or code overrides to fix.\",\n      componentStack\n    );\n    this.setState({ hasError: true });\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children } = this.props;\n    const { hasError } = this.state;\n    return hasError ? null : children;\n  }\n};\n\n// ../../library/src/modules/code-boundary/ExternalComponentContext.tsx\nimport React58 from \"react\";\nimport { jsx as jsx50 } from \"react/jsx-runtime\";\nvar ExternalComponentContext = /* @__PURE__ */ (() => React58.createContext(void 0))();\nfunction useNearestExternalComponent() {\n  return React58.useContext(ExternalComponentContext);\n}\nfunction useFurthestExternalComponent() {\n  const nearestExternalComponent = useNearestExternalComponent();\n  const furthestExternalComponent = React58.useMemo(() => {\n    if (!nearestExternalComponent)\n      return void 0;\n    let item = nearestExternalComponent;\n    while (item.parent && item.parent.level > 0) {\n      item = item.parent;\n    }\n    return item;\n  }, [nearestExternalComponent]);\n  return furthestExternalComponent;\n}\nfunction IsExternalComponent({\n  children,\n  scopeId,\n  nodeId\n}) {\n  const parent = useNearestExternalComponent();\n  const newValue = React58.useMemo(\n    () => ({ level: ((parent == null ? void 0 : parent.level) ?? 0) + 1, scopeId, nodeId, parent }),\n    [scopeId, nodeId, parent]\n  );\n  return /* @__PURE__ */ jsx50(ExternalComponentContext.Provider, { value: newValue, children });\n}\n\n// ../../library/src/modules/code-boundary/errorMessages.ts\nvar CRASH_ERROR_MESSAGE_PREFIX = \"code-crash:\";\nfunction formatCodeCrashLocationFromSourceNode(scopeId, nodeId) {\n  return `${CRASH_ERROR_MESSAGE_PREFIX}${scopeId}:${nodeId}`;\n}\nfunction getErrorMessageForComponent(scopeId, nodeId) {\n  return getErrorMessageFor(\"component\", scopeId, nodeId);\n}\nfunction getErrorMessageForOverride(scopeId, nodeId) {\n  return getErrorMessageFor(\"override\", scopeId, nodeId);\n}\nfunction getErrorMessageFor(element, scopeId, nodeId) {\n  return `A code ${element} crashed while rendering due to the error above. To find and fix it, open the project in the editor \\u2192 open Quick Actions (press Cmd+K or Ctrl+K) \\u2192 paste this: ${formatCodeCrashLocationFromSourceNode(scopeId, nodeId)} \\u2192 click \\u201CShow Layer\\u201D.`;\n}\n\n// ../../library/src/modules/code-boundary/shouldWrapWithBoundary.ts\nfunction shouldWrapComponentWithBoundary(scopeIdOfThisComponent, scopeIdOfNearestExternalComponent, externalComponentLevel, isAuthoredByUser, isExternalComponent, inComponentSlot) {\n  const isLocalComponentInstance = isNodeLocalToProject(\n    scopeIdOfThisComponent,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n  return (\n    // case 1: all (local instances) of (local) (code components)\n    isLocalComponentInstance && !isExternalComponent && isAuthoredByUser || // case 2: all (local instances) of (external components)\n    isLocalComponentInstance && isExternalComponent\n  );\n}\nfunction shouldWrapOverrideWithBoundary(scopeIdOfNodeWithOverride, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  return isNodeLocalToProject(\n    scopeIdOfNodeWithOverride,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n}\nfunction isNodeLocalToProject(scopeIdOfThisNode, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  if (isUndefined(externalComponentLevel))\n    return true;\n  const nodeIsDefinedInSameScopeAsExternalComponent = scopeIdOfThisNode === scopeIdOfNearestExternalComponent;\n  if (\n    // We know a component instance is local when it\u2019s nested inside one external component,\n    externalComponentLevel === 1 && // and it lives in a slot,\n    inComponentSlot && // and it\u2019s a slot of *that sole external component* (and not some other local component\n    // with slots that lives inside the external component).\n    nodeIsDefinedInSameScopeAsExternalComponent\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/modules/code-boundary/maybeWrapComponentWithCodeBoundary.tsx\nimport { jsx as jsx51 } from \"react/jsx-runtime\";\nfunction useMaybeWrapComponentWithCodeBoundary(children, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot) {\n  const nearestExternalComponent = useNearestExternalComponent();\n  if (\n    // Those props will either be all undefined, which means the Container hasn\u2019t yet been\n    // re-serialized since we introduced code boundaries, and we should use the old\n    // ContainerErrorBoundary \u2013 or all defined, which means we have enough information to use\n    // the new boundary.\n    isUndefined(scopeId) || isUndefined(nodeId)\n  ) {\n    return /* @__PURE__ */ jsx51(DeprecatedContainerErrorBoundary, { children });\n  }\n  const shouldWrapWithBoundary = shouldWrapComponentWithBoundary(\n    scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n    isAuthoredByUser ?? false,\n    isModuleExternal ?? false,\n    inComponentSlot ?? false\n  );\n  if (shouldWrapWithBoundary) {\n    children = /* @__PURE__ */ jsx51(CodeComponentBoundary, { errorMessage: getErrorMessageForComponent(scopeId, nodeId), fallback: null, children });\n  }\n  if (isModuleExternal) {\n    children = /* @__PURE__ */ jsx51(IsExternalComponent, { scopeId, nodeId, children });\n  }\n  return children;\n}\n\n// ../../library/src/modules/Container.tsx\nimport { jsx as jsx52 } from \"react/jsx-runtime\";\nvar ContainerInner = /* @__PURE__ */ React59.forwardRef(\n  ({ children, layoutId, as, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot, ...props }, ref) => {\n    const outerLayoutId = useConstant(() => layoutId ? `${layoutId}-container` : void 0);\n    const MotionComponent = htmlElementAsMotionComponent(as);\n    const clonedChildren = React59.Children.map(children, (child) => {\n      return React59.isValidElement(child) ? React59.cloneElement(child, { layoutId }) : child;\n    });\n    const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n      clonedChildren,\n      scopeId,\n      nodeId,\n      isAuthoredByUser,\n      isModuleExternal,\n      inComponentSlot\n    );\n    return /* @__PURE__ */ jsx52(MotionComponent, { layoutId: outerLayoutId, ...props, ref, children: /* @__PURE__ */ jsx52(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx52(AutomaticLayoutIds, { enabled: false, children: /* @__PURE__ */ jsx52(LayoutGroup, { id: layoutId ?? \"\", inherit: \"id\", children: childrenWithCodeBoundary }) }) }) });\n  }\n);\nvar Container = /* @__PURE__ */ withGeneratedLayoutId(ContainerInner);\nvar SmartComponentScopedContainer = /* @__PURE__ */ React59.forwardRef((props, ref) => {\n  const {\n    as,\n    children,\n    // Code boundary-specific props\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    rendersWithMotion,\n    isModuleExternal,\n    inComponentSlot,\n    // Other props, including some possibly used-passed ones\n    ...otherProps\n  } = props;\n  const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n    children,\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    isModuleExternal,\n    inComponentSlot\n  );\n  const tagName = props.as ?? \"div\";\n  if (props.rendersWithMotion) {\n    const Component18 = htmlElementAsMotionComponent(tagName);\n    return /* @__PURE__ */ jsx52(\n      Component18,\n      {\n        ...otherProps,\n        ref,\n        style: props.style,\n        children: childrenWithCodeBoundary\n      }\n    );\n  } else {\n    const Component18 = tagName;\n    const { layoutId, layoutDependency, ...plainHTMLRenderableProps } = otherProps;\n    return (\n      // Passing `props.style` explicitly to allow TypeScript to narrow the type of `props.style` according\n      // to the value of `props.rendersWithMotion`.\n      /* @__PURE__ */ jsx52(Component18, { ...plainHTMLRenderableProps, ref, style: props.style, children: childrenWithCodeBoundary })\n    );\n  }\n});\n\n// ../../library/src/modules/CustomCursor.tsx\nimport {\n  createContext as createContext6,\n  memo,\n  startTransition as startTransition2,\n  useCallback as useCallback9,\n  useContext as useContext14,\n  useEffect as useEffect15,\n  useId,\n  useLayoutEffect as useLayoutEffect6,\n  useRef as useRef17,\n  useState as useState4\n} from \"react\";\nimport { jsx as jsx53, jsxs as jsxs13 } from \"react/jsx-runtime\";\nvar CustomCursorContext = /* @__PURE__ */ createContext6({\n  onRegisterCursors: () => () => {\n  },\n  registerCursors: () => {\n  }\n});\nvar replaceCursorClassName = \"framer-cursor-none\";\nvar cursorComponentClassName = \"framer-pointer-events-none\";\nfunction getActiveDefinitions(map2, previousDefinitions, newDefinitions) {\n  const allCursors = {};\n  for (const [, hashes] of map2) {\n    for (const hash2 of hashes) {\n      const value = allCursors[hash2] ?? previousDefinitions[hash2] ?? newDefinitions[hash2];\n      if (value)\n        allCursors[hash2] = value;\n    }\n  }\n  return allCursors;\n}\nvar CustomCursorContextProvider = /* @__PURE__ */ memo(function CustomCursorList({ children }) {\n  const value = useConstant(() => {\n    const events = /* @__PURE__ */ new Set();\n    let allCursors = {};\n    const byCaller = /* @__PURE__ */ new Map();\n    return {\n      onRegisterCursors: (callback) => {\n        callback(allCursors);\n        events.add(callback);\n        return () => events.delete(callback);\n      },\n      registerCursors: (cursors, id) => {\n        byCaller.set(id, Object.keys(cursors));\n        allCursors = getActiveDefinitions(byCaller, allCursors, cursors);\n        for (const callback of events)\n          callback(allCursors);\n        return () => {\n          byCaller.delete(id);\n        };\n      }\n    };\n  });\n  const shouldReduceMotion = useReducedMotionConfig();\n  return /* @__PURE__ */ jsxs13(CustomCursorContext.Provider, { value, children: [\n    children,\n    !shouldReduceMotion && /* @__PURE__ */ jsx53(CustomCursorComponent, {})\n  ] });\n});\nvar CustomCursorHost = /* @__PURE__ */ (() => withCSS(\n  CustomCursorContextProvider,\n  [\n    `.${replaceCursorClassName}, .${replaceCursorClassName} * { cursor: none !important; }`,\n    `.${cursorComponentClassName}, .${cursorComponentClassName} * { pointer-events: none !important; }`\n  ],\n  \"framer-lib-cursors-host\"\n))();\nvar staticCursorStyle = /* @__PURE__ */ (() => ({\n  position: \"fixed\",\n  top: 0,\n  left: 0,\n  zIndex: 12 + 1,\n  // Max framer z-index + 1\n  pointerEvents: \"none\"\n}))();\nfunction customCursorReplacesNativeCursor(cursor) {\n  if (!cursor)\n    return false;\n  if (cursor.placement || cursor.alignment)\n    return false;\n  return true;\n}\nfunction valueForCursorAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return \"0%\";\n    case \"center\":\n      return \"-50%\";\n    case \"end\":\n      return \"-100%\";\n    default:\n      assertNever(alignment);\n  }\n}\nfunction getCenteringTransform(placement, alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return `${valueForCursorAlignment(alignment)}, -100%`;\n    case \"right\":\n      return `0%, ${valueForCursorAlignment(alignment)}`;\n    case \"bottom\":\n      return `${valueForCursorAlignment(alignment)}, 0%`;\n    case \"left\":\n      return `-100%, ${valueForCursorAlignment(alignment)}`;\n    default:\n      return \"-50%, -50%\";\n  }\n}\nvar portalIdAttribute = \"data-framer-portal-id\";\nfunction getCursorHash(x, y) {\n  let el = document.elementFromPoint(x, y);\n  while (el) {\n    if (el === document.body)\n      return void 0;\n    const value = el.getAttribute(\"data-framer-cursor\");\n    if (value)\n      return value;\n    if (el.hasAttribute(portalIdAttribute)) {\n      const id = el.getAttribute(portalIdAttribute);\n      el = el.parentElement;\n      if (id)\n        el = document.getElementById(id) ?? el;\n    } else {\n      el = el.parentElement;\n    }\n  }\n  return void 0;\n}\nfunction isEmptyObject(object) {\n  for (const _ in object)\n    return false;\n  return true;\n}\nvar CustomCursorComponent = /* @__PURE__ */ memo(function CustomCursorComponent2() {\n  const { onRegisterCursors } = useContext14(CustomCursorContext);\n  const [hasHoverCapability, setHasHoverCapability] = useState4(false);\n  const pointerX = useMotionValue(0);\n  const pointerY = useMotionValue(0);\n  const opacity = useMotionValue(0);\n  const cursorRef = useRef17(null);\n  const internalState = useRef17({ cursors: {}, cursorHash: void 0 });\n  const forceRender = useForceUpdate2();\n  useLayoutEffect6(() => {\n    const noHoverMQ = safeWindow.matchMedia(\"(any-hover: none)\");\n    function updateRender(e) {\n      if (e.matches) {\n        startTransition2(() => setHasHoverCapability(false));\n      } else {\n        setHasHoverCapability(true);\n      }\n    }\n    noHoverMQ.addEventListener(\"change\", updateRender);\n    if (!noHoverMQ.matches) {\n      setHasHoverCapability(true);\n    }\n    return () => {\n      noHoverMQ.removeEventListener(\"change\", updateRender);\n    };\n  }, []);\n  useEffect15(() => {\n    if (!hasHoverCapability)\n      return;\n    let x2 = 0;\n    let y2 = 0;\n    function updateValues() {\n      pointerX.set(x2);\n      pointerY.set(y2);\n      animate(opacity, 1, { type: \"tween\", duration: 0.2 });\n    }\n    const updateVariant = () => {\n      if (isEmptyObject(internalState.current.cursors))\n        return;\n      const hash2 = getCursorHash(x2, y2);\n      if (hash2 !== internalState.current.cursorHash) {\n        internalState.current.cursorHash = hash2;\n        frame.update(() => forceRender());\n      }\n    };\n    function updateCursor(e) {\n      if (e.pointerType === \"touch\") {\n        cancelFrame(updateVariant);\n        return;\n      }\n      frame.read(updateVariant, true);\n      x2 = e.clientX;\n      y2 = e.clientY;\n      frame.update(updateValues);\n    }\n    function fireEventToTarget(e) {\n      if (e.target === cursorRef.current || !cursorRef.current)\n        return;\n      const event = new PointerEvent(e.type, {\n        bubbles: true,\n        cancelable: e.cancelable,\n        pointerType: e.pointerType,\n        pointerId: e.pointerId,\n        composed: e.composed,\n        isPrimary: e.isPrimary,\n        buttons: e.buttons,\n        button: e.button\n      });\n      frame.update(() => {\n        var _a;\n        (_a = cursorRef.current) == null ? void 0 : _a.dispatchEvent(event);\n      });\n    }\n    safeWindow.addEventListener(\"pointermove\", updateCursor);\n    document.addEventListener(\"pointerdown\", fireEventToTarget);\n    document.addEventListener(\"pointerup\", fireEventToTarget);\n    frame.read(updateVariant, true);\n    return () => {\n      safeWindow.removeEventListener(\"pointermove\", updateCursor);\n      document.removeEventListener(\"pointerdown\", fireEventToTarget);\n      document.removeEventListener(\"pointerup\", fireEventToTarget);\n      cancelFrame(updateVariant);\n    };\n  }, [opacity, pointerX, pointerY, forceRender, hasHoverCapability]);\n  useEffect15(() => {\n    if (!hasHoverCapability)\n      return;\n    function hideCursor() {\n      void animate(opacity, 0, { type: \"tween\", duration: 0.2 });\n    }\n    document.addEventListener(\"mouseleave\", hideCursor);\n    safeWindow.addEventListener(\"blur\", hideCursor);\n    return () => {\n      document.removeEventListener(\"mouseleave\", hideCursor);\n      safeWindow.removeEventListener(\"blur\", hideCursor);\n    };\n  }, [opacity, hasHoverCapability]);\n  useLayoutEffect6(() => {\n    function updateCursors(newCursors) {\n      internalState.current.cursors = newCursors;\n      internalState.current.cursorHash = !isEmptyObject(newCursors) ? getCursorHash(pointerX.get(), pointerY.get()) : null;\n      forceRender();\n    }\n    const unregister = onRegisterCursors(updateCursors);\n    return () => {\n      unregister();\n      document.body.classList.toggle(replaceCursorClassName, false);\n    };\n  }, [pointerX, pointerY, onRegisterCursors, forceRender]);\n  const { cursors, cursorHash } = internalState.current;\n  const cursor = cursorHash ? cursors[cursorHash] : null;\n  const replaceNativeCursor = customCursorReplacesNativeCursor(cursor);\n  useLayoutEffect6(() => {\n    if (!hasHoverCapability)\n      return;\n    document.body.classList.toggle(replaceCursorClassName, replaceNativeCursor);\n  }, [replaceNativeCursor, hasHoverCapability]);\n  const Cursor = cursor == null ? void 0 : cursor.component;\n  const spring2 = (cursor == null ? void 0 : cursor.transition) ?? { duration: 0 };\n  const sprungX = useSpring(pointerX, spring2);\n  const sprungY = useSpring(pointerY, spring2);\n  const x = useTransform(() => {\n    var _a;\n    return sprungX.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.x) ?? 0);\n  });\n  const y = useTransform(() => {\n    var _a;\n    return sprungY.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.y) ?? 0);\n  });\n  const alignment = cursor == null ? void 0 : cursor.alignment;\n  const placement = cursor == null ? void 0 : cursor.placement;\n  const transformTemplate2 = useCallback9(\n    (_, t) => `translate(${getCenteringTransform(placement, alignment)}) ${t}`,\n    [alignment, placement]\n  );\n  if (!hasHoverCapability || !cursor || !Cursor)\n    return null;\n  return /* @__PURE__ */ jsx53(\n    Cursor,\n    {\n      transformTemplate: transformTemplate2,\n      style: {\n        ...staticCursorStyle,\n        x,\n        y,\n        opacity\n      },\n      globalTapTarget: true,\n      variant: cursor == null ? void 0 : cursor.variant,\n      ref: cursorRef,\n      className: cursorComponentClassName\n    }\n  );\n});\nfunction useCustomCursors(webPageCursors) {\n  const { registerCursors } = useContext14(CustomCursorContext);\n  const cursors = useConstant(() => webPageCursors);\n  const id = useId();\n  useLayoutEffect6(() => {\n    return registerCursors(cursors, id);\n  }, [registerCursors, id]);\n}\n\n// ../../library/src/modules/Floating.tsx\nimport React60, { useContext as useContext15 } from \"react\";\nimport ReactDOM from \"react-dom\";\n\n// ../../library/src/render/types/Polygon.ts\nvar Polygon = {\n  /**\n   * Determine if the vertices are ordered clockwise or counter-clockwise. This works for simple\n   * (non-self-intersecting) convex polygons. If the polygon is collapsed into a line (signedArea = 0), we consider it\n   * clockwise for it works with how Framer draws the polygons.\n   * See: https://paulbourke.net/geometry/polygonmesh/\n   * @internal */\n  isClockwise: (points) => {\n    return Polygon.signedArea(points) <= 0;\n  },\n  /**\n   * Calculate the signed area to determine if the vertices go clockwise or counter clockwise. We flip all the y\n   * values because the y axis in our canvas coordinate is fipped.\n   * See: https://mathworld.wolfram.com/PolygonArea.html\n   * @internal */\n  signedArea: (points) => {\n    let sum = 0;\n    const len = points.length;\n    for (let i = 0; i < len; i++) {\n      const pointA = points[i];\n      const pointB = points[(i + 1) % len];\n      if (!pointA || !pointB)\n        continue;\n      sum += pointA.x * -pointB.y - pointB.x * -pointA.y;\n    }\n    return 1 / 2 * sum;\n  },\n  /**\n   * Determine if some Point lies inside (or on) the polygon formed by other\n   * Points. The other points must be provided in a clockwise/counter\n   * clockwise order otherwise the line segments we create to test the polygon\n   * will not be representative.\n   *\n   * Solution for convex polygons based on:\n   * https://www.eecs.umich.edu/courses/eecs380/HANDOUTS/PROJ2/InsidePoly.html\n   *\n   * We create a line segment for each side of the polygon. The point we are\n   * testing must be on or on the same side of each line segment.\n   *\n   * @internal\n   */\n  containsPoint: (polygonPoints2, point) => {\n    var _a, _b, _c, _d;\n    let sign = void 0;\n    for (let i = 0; i < polygonPoints2.length; i++) {\n      if (Point.isEqual(polygonPoints2[i], point))\n        return true;\n      const x1 = ((_a = polygonPoints2[i]) == null ? void 0 : _a.x) ?? 0;\n      const y1 = ((_b = polygonPoints2[i]) == null ? void 0 : _b.y) ?? 0;\n      const i2 = (i + 1) % polygonPoints2.length;\n      if (Point.isEqual(polygonPoints2[i2], point))\n        return true;\n      const x2 = ((_c = polygonPoints2[i2]) == null ? void 0 : _c.x) ?? 0;\n      const y2 = ((_d = polygonPoints2[i2]) == null ? void 0 : _d.y) ?? 0;\n      const d = (point.x - x1) * (y2 - y1) - (point.y - y1) * (x2 - x1);\n      if (d === 0)\n        continue;\n      const localSign = d > 0;\n      sign ??= localSign;\n      if (sign !== localSign)\n        return false;\n    }\n    return true;\n  },\n  /** @internal */\n  intersects: (pointsA, pointsB) => {\n    if (pointsA.length < 1 || pointsB.length < 1)\n      return false;\n    const boundingRectA = Rect.boundingRectFromPoints(pointsA);\n    const boundingRectB = Rect.boundingRectFromPoints(pointsB);\n    if (!Rect.intersects(boundingRectA, boundingRectB))\n      return false;\n    const edgesA = [];\n    const pointsALength = pointsA.length;\n    pointsA.forEach((point, index) => {\n      const nextPoint = pointsA[(index + 1) % pointsALength];\n      if (!nextPoint)\n        return;\n      edgesA.push(Line(point, nextPoint));\n    });\n    const edgesB = [];\n    const pointsBLength = pointsB.length;\n    pointsB.forEach((point, index) => {\n      const nextPoint = pointsB[(index + 1) % pointsBLength];\n      if (!nextPoint)\n        return;\n      edgesB.push(Line(point, nextPoint));\n    });\n    for (const edgeA of edgesA) {\n      for (const edgeB of edgesB) {\n        const intersection2 = Line.intersection(edgeA, edgeB, true);\n        if (intersection2)\n          return true;\n      }\n    }\n    if (Polygon.containsPoint(pointsB, pointsA[0]))\n      return true;\n    if (Polygon.containsPoint(pointsA, pointsB[0]))\n      return true;\n    return false;\n  },\n  /** @internal */\n  contains: (pointsA, pointsB) => {\n    for (let i = 0; i < pointsB.length; i++) {\n      if (!Polygon.containsPoint(pointsA, pointsB[i]))\n        return false;\n    }\n    return true;\n  },\n  /** @internal */\n  clipToRect: (points, rect) => {\n    const edges = Rect.edges(rect);\n    const seen = /* @__PURE__ */ new Set();\n    const count = points.length;\n    const clippedPoints = [];\n    const originalPoints = [];\n    for (let i = 0; i < count; i++) {\n      const point = points[i];\n      const nextPoint = points[(i + 1) % count];\n      if (Rect.containsPoint(rect, point)) {\n        const intersectionKey = keyForPoint(point);\n        seen.add(intersectionKey);\n        originalPoints.push(point);\n        if (Rect.containsPoint(rect, nextPoint))\n          continue;\n      }\n      const line = Line(point, nextPoint);\n      edges.forEach((edge) => {\n        const intersection2 = Line.intersection(line, edge, true);\n        if (!intersection2)\n          return;\n        const intersectionKey = keyForPoint(intersection2);\n        if (seen.has(intersectionKey))\n          return;\n        seen.add(intersectionKey);\n        clippedPoints.push(intersection2);\n      });\n    }\n    if (clippedPoints.length === 0)\n      return originalPoints;\n    Rect.points(rect).forEach((point) => {\n      if (!Polygon.containsPoint(points, point))\n        return;\n      seen.add(keyForPoint(point));\n      clippedPoints.push(point);\n    });\n    return Point.sortClockwise([...originalPoints, ...clippedPoints]);\n  }\n};\nfunction keyForPoint(point) {\n  return `${point == null ? void 0 : point.x}-${point == null ? void 0 : point.y}`;\n}\n\n// ../../library/src/modules/floatingPositionSafeAreaStyle.ts\nfunction invertPlacement(placement) {\n  switch (placement) {\n    case \"top\":\n      return \"bottom\";\n    case \"right\":\n      return \"left\";\n    case \"bottom\":\n      return \"top\";\n    case \"left\":\n      return \"right\";\n    default:\n      assertNever(placement);\n  }\n}\nfunction preferredOffset(point, length, max, collisionDetectionPadding = 0) {\n  const min = Math.max(point, collisionDetectionPadding);\n  if (point < min)\n    return min;\n  const size = length + collisionDetectionPadding;\n  if (min + size > max)\n    return max - size;\n  return min;\n}\nfunction collisionAxis(placement, rect, windowSize) {\n  switch (placement) {\n    case \"top\":\n    case \"bottom\":\n      if (rect.y < 0 || rect.y + rect.height > windowSize.height)\n        return \"y\";\n      return void 0;\n    case \"left\":\n    case \"right\":\n      if (rect.x < 0 || rect.x + rect.width > windowSize.width)\n        return \"x\";\n      return void 0;\n    default:\n      assertNever(placement);\n  }\n}\nfunction getPlacementAndOffsetAvoidingScreenCollision(rect, placement, offset, windowSize) {\n  switch (collisionAxis(placement, rect, windowSize)) {\n    case \"x\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x * -1,\n        y: offset.y\n      };\n    case \"y\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x,\n        y: offset.y * -1\n      };\n    default:\n      return {\n        placement,\n        x: offset.x,\n        y: offset.y\n      };\n  }\n}\nfunction getSafePlacementFloatingPositionRect(anchor, element, placement, alignment, offset, collisionDetectionSize, collisionDetectionPadding) {\n  const rebasedRect = Rect.rebaseRectOnto(element, anchor, placement, alignment);\n  const preferredRect = {\n    x: rebasedRect.x + offset.x,\n    y: rebasedRect.y + offset.y,\n    width: element.width,\n    height: element.height\n  };\n  if (!collisionDetectionSize)\n    return [placement, preferredRect];\n  const {\n    x,\n    y,\n    placement: safePlacement\n  } = getPlacementAndOffsetAvoidingScreenCollision(preferredRect, placement, offset, collisionDetectionSize);\n  const rebasedCollisionRect = Rect.rebaseRectOnto(element, anchor, safePlacement, alignment);\n  return [\n    safePlacement,\n    {\n      x: preferredOffset(\n        rebasedCollisionRect.x + x,\n        element.width,\n        collisionDetectionSize.width,\n        collisionDetectionPadding\n      ),\n      y: preferredOffset(\n        rebasedCollisionRect.y + y,\n        element.height,\n        collisionDetectionSize.height,\n        collisionDetectionPadding\n      ),\n      width: element.width,\n      height: element.height\n    }\n  ];\n}\nfunction preferredPoint(a, b, points) {\n  if (Polygon.containsPoint([b, ...points], a))\n    return b;\n  return a;\n}\nvar minInset = 5;\nfunction safeAreaPolygonConstraints(rect) {\n  return {\n    constrainX: (value) => Math.min(Math.max(value, rect.x + minInset), rect.x + rect.width - minInset),\n    constrainY: (value) => Math.min(Math.max(value, rect.y + minInset), rect.y + rect.height - minInset)\n  };\n}\nvar mouseOffset = 4;\nfunction polygonPoints({ x, y }, placement, rect, { constrainX, constrainY }) {\n  const [tl, bl, tr, br] = Rect.points(rect);\n  switch (placement) {\n    case \"left\": {\n      const mousePoint = { x: constrainX(x - mouseOffset), y };\n      return [mousePoint, preferredPoint(br, bl, [mousePoint, tr]), preferredPoint(tr, tl, [mousePoint, br])];\n    }\n    case \"right\": {\n      const mousePoint = { x: constrainX(x + mouseOffset), y };\n      return [mousePoint, preferredPoint(bl, br, [mousePoint, tl]), preferredPoint(tl, tr, [mousePoint, bl])];\n    }\n    case \"top\": {\n      const mousePoint = { x, y: constrainY(y - mouseOffset) };\n      return [mousePoint, preferredPoint(bl, tl, [mousePoint, br]), preferredPoint(br, tr, [mousePoint, bl])];\n    }\n    case \"bottom\": {\n      const mousePoint = { x, y: constrainY(y + mouseOffset) };\n      return [mousePoint, preferredPoint(tl, bl, [mousePoint, tr]), preferredPoint(tr, br, [mousePoint, tl])];\n    }\n    default:\n      assertNever(placement);\n  }\n}\nfunction safeAreaInset(placement, delta) {\n  switch (placement) {\n    case \"left\":\n      return `${Math.min(delta.y, 0)}px auto auto 0px`;\n    case \"right\":\n      return `${Math.min(delta.y, 0)}px 0px auto auto`;\n    case \"top\":\n      return `0px auto auto ${Math.min(delta.x, 0)}px`;\n    case \"bottom\":\n      return `auto auto 0px ${Math.min(delta.x, 0)}px`;\n    default:\n      assertNever(placement);\n  }\n}\nfunction floatingPositionSafeAreaStyle(x, y, placement, anchorRect, floatingRect) {\n  const minX = Math.min(floatingRect.x, anchorRect.x);\n  const minY = Math.min(floatingRect.y, anchorRect.y);\n  const rect = Rect.merge(anchorRect, floatingRect);\n  const points = polygonPoints({ x, y }, placement, floatingRect, safeAreaPolygonConstraints(anchorRect)).map((point) => `${point.x - minX}px ${point.y - minY}px`).join(\", \");\n  return {\n    height: `${rect.height}px`,\n    width: `${rect.width}px`,\n    clipPath: `polygon(${points})`,\n    inset: safeAreaInset(placement, Rect.delta(anchorRect, floatingRect))\n  };\n}\nfunction valueForFloatingAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return 0;\n    case \"center\":\n      return 0.5;\n    case \"end\":\n      return 1;\n    default:\n      assertNever(alignment);\n  }\n}\nfunction motionOriginFromFloatingPosition(placement = \"bottom\", alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 1 };\n    case \"right\":\n      return { originX: 0, originY: valueForFloatingAlignment(alignment) };\n    case \"bottom\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 0 };\n    case \"left\":\n      return { originX: 1, originY: valueForFloatingAlignment(alignment) };\n    default:\n      assertNever(placement);\n  }\n}\n\n// ../../library/src/modules/Floating.tsx\nimport { jsx as jsx54, jsxs as jsxs14 } from \"react/jsx-runtime\";\nfunction getAncestorInfo(anchorRef) {\n  var _a;\n  let el = anchorRef.current;\n  const info = {\n    position: \"absolute\",\n    scrolls: false\n  };\n  while (el) {\n    if ((el == null ? void 0 : el.tagName) === \"BODY\")\n      return info;\n    if (((_a = getComputedStyle(el)) == null ? void 0 : _a.position) === \"fixed\")\n      info.position = \"fixed\";\n    if (el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight)\n      info.scrolls = true;\n    if (info.scrolls && info.position === \"fixed\")\n      return info;\n    el = el.parentElement;\n  }\n  return info;\n}\nfunction createAnimationFrameLoop(onRead) {\n  const startLoop = () => frame.read(onRead, true);\n  const cancelLoop = () => cancelFrame(onRead);\n  return [startLoop, cancelLoop];\n}\nfunction createUpdateSafeArea(safeAreaRef) {\n  let x = 0;\n  let y = 0;\n  return (anchorRect, calculatedRect, placement, event) => {\n    var _a;\n    if (!((_a = safeAreaRef.current) == null ? void 0 : _a.style))\n      return;\n    x = (event == null ? void 0 : event.clientX) ?? x;\n    y = (event == null ? void 0 : event.clientY) ?? y;\n    Object.assign(\n      safeAreaRef.current.style,\n      floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect)\n    );\n  };\n}\nfunction updatePosition(floatingPositionRef, position, rect) {\n  if (!floatingPositionRef.current)\n    return;\n  Object.assign(floatingPositionRef.current.style, {\n    position,\n    visibility: \"visible\",\n    // Append \"px\" because we are assigning this object straight to style.\n    left: ((rect == null ? void 0 : rect.x) ?? 0) + (position === \"fixed\" ? 0 : safeWindow.scrollX) + \"px\",\n    top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === \"fixed\" ? 0 : safeWindow.scrollY) + \"px\"\n  });\n}\nvar FloatingStackingContext = /* @__PURE__ */ React60.createContext(/* @__PURE__ */ new Set());\nfunction useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, { safeArea, onDismiss }) {\n  const descendantStackingContext = useConstant(() => /* @__PURE__ */ new Set());\n  const ancestorStackingContext = React60.useContext(FloatingStackingContext);\n  const [isPresent, safeToRemove] = usePresence();\n  React60.useEffect(() => {\n    if (isPresent) {\n      if (!floatingPositionRef.current)\n        return;\n      floatingPositionRef.current.style.pointerEvents = \"\";\n      ancestorStackingContext.add(floatingPositionRef.current);\n    } else {\n      if (!floatingPositionRef.current)\n        return;\n      floatingPositionRef.current.style.pointerEvents = \"none\";\n      ancestorStackingContext.delete(floatingPositionRef.current);\n      safeToRemove();\n    }\n  }, [isPresent, safeToRemove, floatingPositionRef, ancestorStackingContext]);\n  React60.useEffect(() => {\n    if (!safeArea) {\n      const handleEscape = (e) => {\n        if (e.key !== \"Escape\")\n          return;\n        onDismiss();\n      };\n      safeWindow.addEventListener(\"keyup\", handleEscape);\n      return () => safeWindow.removeEventListener(\"keyup\", handleEscape);\n    }\n    let latestEvent;\n    function maybeDismiss() {\n      if (!latestEvent || descendantStackingContext.size !== 0)\n        return;\n      for (const element of document.elementsFromPoint(latestEvent.x, latestEvent.y)) {\n        if (element === anchorRef.current)\n          return;\n        if (element === floatingPositionRef.current)\n          return;\n        if (element === safeAreaRef.current)\n          return;\n      }\n      onDismiss();\n    }\n    function scheduleMaybeDismiss(event) {\n      latestEvent = event;\n      frame.read(maybeDismiss);\n    }\n    safeWindow.addEventListener(\"mousemove\", scheduleMaybeDismiss);\n    return () => {\n      safeWindow.removeEventListener(\"mousemove\", scheduleMaybeDismiss);\n    };\n  }, [onDismiss, safeArea, anchorRef, safeAreaRef, floatingPositionRef]);\n  return descendantStackingContext;\n}\nfunction makeGetSafePlacementFloatingPositionRect({\n  placement,\n  alignment,\n  offset,\n  collisionDetectionSize,\n  collisionDetectionPadding\n}) {\n  return (anchor, element) => getSafePlacementFloatingPositionRect(\n    anchor,\n    element,\n    placement,\n    alignment,\n    offset,\n    collisionDetectionSize,\n    collisionDetectionPadding\n  );\n}\nfunction useDynamicMotionOrigin(initialPlacement, alignment) {\n  return useConstant(() => {\n    const { originX, originY } = motionOriginFromFloatingPosition(initialPlacement, alignment);\n    const origin = { x: motionValue(originX), y: motionValue(originY) };\n    return [\n      origin,\n      (placement) => {\n        const values = motionOriginFromFloatingPosition(placement, alignment);\n        origin.x.set(values.originX);\n        origin.y.set(values.originY);\n      }\n    ];\n  });\n}\nfunction childrenWithOrigin(child, { x, y }) {\n  if (!child || !isReactChild(child) || !isReactElement(child))\n    return null;\n  if (!isObject(child.props.style) && !isUndefined(child.props.style))\n    return null;\n  const style = {\n    ...child.props.style,\n    originX: x,\n    originY: y\n  };\n  return React60.cloneElement(child, { style });\n}\nvar overlayContainerId = \"overlay\";\nvar templateOverlayContainerId = \"template-overlay\";\nfunction getPortalContainer(deprecatedSelector, inComponent) {\n  if (inComponent || isUndefined(deprecatedSelector)) {\n    const container2 = document.querySelector(`#${templateOverlayContainerId}`) ?? document.querySelector(`#${overlayContainerId}`);\n    if (container2)\n      return container2;\n  }\n  const container = isString(deprecatedSelector) ? document.querySelector(deprecatedSelector) : void 0;\n  if (container)\n    return container;\n  return document.body;\n}\nfunction Floating({\n  alignment,\n  placement,\n  safeArea,\n  offsetX,\n  offsetY,\n  anchorRef,\n  className: className2,\n  children,\n  portalSelector,\n  zIndex,\n  collisionDetection = false,\n  collisionDetectionPadding,\n  onDismiss,\n  ...rest\n}) {\n  const floatingPositionRef = React60.useRef(null);\n  const safeAreaRef = React60.useRef(null);\n  const contentRef = React60.useRef(null);\n  const [origin, updateOrigin] = useDynamicMotionOrigin(placement, alignment);\n  React60.useLayoutEffect(() => {\n    if (!refHasValue(anchorRef) || !contentRef.current || !placement || !alignment)\n      return;\n    const { position, scrolls } = getAncestorInfo(anchorRef);\n    const elementRect = contentRef.current.getBoundingClientRect();\n    const initialAnchorRect = anchorRef.current.getBoundingClientRect();\n    const offset = {\n      x: offsetX ?? 0,\n      y: offsetY ?? 0\n    };\n    const getSafePlacementRect = makeGetSafePlacementFloatingPositionRect({\n      placement,\n      alignment,\n      offset,\n      collisionDetectionSize: collisionDetection ? { width: safeWindow.innerWidth, height: safeWindow.innerHeight } : void 0,\n      collisionDetectionPadding\n    });\n    const [initialSafePlacement, initialCalculatedRect] = getSafePlacementRect(initialAnchorRect, elementRect);\n    frame.update(() => {\n      updateOrigin(initialSafePlacement);\n    });\n    frame.render(() => {\n      if (!floatingPositionRef.current)\n        return;\n      updatePosition(floatingPositionRef, position, initialCalculatedRect);\n    });\n    const updateSafeArea = createUpdateSafeArea(safeAreaRef);\n    let anchorRect = initialAnchorRect;\n    let safePlacement;\n    let calculatedRect;\n    let latestEvent;\n    const onUpdate = () => {\n      updateOrigin(safePlacement);\n    };\n    const onRender = () => {\n      updatePosition(floatingPositionRef, position, calculatedRect);\n      if (safeArea)\n        updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);\n      latestEvent = void 0;\n    };\n    const onRead = () => {\n      anchorRect = anchorRef.current.getBoundingClientRect();\n      const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);\n      safePlacement = safePlacementAndRect[0];\n      calculatedRect = safePlacementAndRect[1];\n      frame.update(onUpdate);\n      frame.render(onRender);\n    };\n    const [loop, cancelAnimationFrameLoop] = createAnimationFrameLoop(onRead);\n    if (scrolls)\n      loop == null ? void 0 : loop();\n    if (!safeArea)\n      return () => cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();\n    const handleMouseMove = (event) => {\n      latestEvent = event;\n      frame.read(onRead);\n    };\n    const anchor = anchorRef.current;\n    anchor.addEventListener(\"mousemove\", handleMouseMove);\n    return () => {\n      cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();\n      anchor.removeEventListener(\"mousemove\", handleMouseMove);\n    };\n  }, [\n    safeArea,\n    placement,\n    alignment,\n    offsetX,\n    offsetY,\n    anchorRef,\n    collisionDetection,\n    collisionDetectionPadding,\n    updateOrigin\n  ]);\n  const descendantContext = useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, {\n    safeArea,\n    onDismiss\n  });\n  const inComponent = useContext15(ComponentContainerContext);\n  return ReactDOM.createPortal(\n    /* @__PURE__ */ jsxs14(\n      motion.div,\n      {\n        ref: floatingPositionRef,\n        className: className2,\n        style: {\n          // Initially rendered as hidden, but the layout effect will set\n          // to visible when the position is calculated.\n          visibility: \"hidden\",\n          width: \"auto\",\n          height: \"auto\",\n          position: \"absolute\",\n          zIndex\n        },\n        ...rest,\n        children: [\n          safeArea ? /* @__PURE__ */ jsx54(\"div\", { ref: safeAreaRef, style: { position: \"absolute\" }, \"data-safearea\": true }) : (\n            // biome-ignore lint/a11y/useKeyWithClickEvents: overlays don't support key events yet.\n            /* @__PURE__ */ jsx54(\"div\", { style: { position: \"fixed\", inset: 0 }, \"aria-hidden\": true, onClick: onDismiss })\n          ),\n          /* @__PURE__ */ jsx54(FloatingStackingContext.Provider, { value: descendantContext, children: /* @__PURE__ */ jsx54(\"div\", { ref: contentRef, children: childrenWithOrigin(children, origin) }) })\n        ]\n      }\n    ),\n    getPortalContainer(portalSelector, inComponent)\n  );\n}\n\n// ../../library/src/modules/GracefullyDegradingErrorBoundary.tsx\nimport { Component as Component14 } from \"react\";\nimport { jsx as jsx55 } from \"react/jsx-runtime\";\nvar GracefullyDegradingErrorBoundary = class extends Component14 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n    __publicField(this, \"message\", \"Made UI non-interactive due to an error\");\n    __publicField(this, \"messageFatal\", \"Fatal error\");\n    __publicField(this, \"messageReport\", \"If you are the author of this website, please report this issue to the Framer team via https://www.framer.community/\");\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error) {\n    window.__framer_hadFatalError = true;\n    if (\"cause\" in error) {\n      error = error.cause;\n    }\n    console.error(`${isBot ? this.message : this.messageFatal} (see above). ${this.messageReport}.`);\n    const sampleRate = Math.random();\n    if (sampleRate > 0.25)\n      return;\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n    sendTrackingEvent(\"published_site_load_error\", {\n      message: String(error),\n      stack\n    });\n  }\n  render() {\n    var _a, _b;\n    const error = this.state.error;\n    if (!error)\n      return this.props.children;\n    const unwrappedError = \"cause\" in error ? error.cause : error;\n    const closingHTMLComment = /-->/gu;\n    const closingHTMLCommentReplacement = \"--!>\";\n    const dom = isBot ? ((_a = document.getElementById(\"main\")) == null ? void 0 : _a.innerHTML) || \"\" : (\n      // @FIXME: We should have a UI for fatal error recovery.\n      // We don't have a UI for fatal error recovery currently, so we just render nothing for regular users. If we were to throw, React would unmount too.\n      // We do render instead of throwing, so that:\n      // - `componentDidCatch` runs (if we throw here, it does not)\n      // - we can skip logging `Recoverable error during hydration`, because we know it was fatal.\n      \"\"\n    );\n    return (\n      // This has the caveat that we will slightly modify the DOM, but it appears to be fine in this case.\n      // The alternative would be to queue a new task that runs after and then set the innerHTML (= avoids the dummy-div), but that means we'll have DOM -> no DOM -> DOM transitions. With the div, we have DOM -> DOM and remove possible race-conditions.\n      /* @__PURE__ */ jsx55(\n        \"div\",\n        {\n          style: { display: \"contents\" },\n          suppressHydrationWarning: true,\n          dangerouslySetInnerHTML: {\n            __html: `<!-- DOM replaced by GracefullyDegradingErrorBoundary due to \"${unwrappedError.message.replace(closingHTMLComment, closingHTMLCommentReplacement)}\". ${this.messageReport}: --><!-- Stack: ${(_b = error.stack) == null ? void 0 : _b.replace(closingHTMLComment, \"--!>\")} -->` + dom\n          }\n        }\n      )\n    );\n  }\n};\n\n// ../../library/src/modules/LazyValue.ts\nvar LazyValue = class {\n  constructor(resolver) {\n    this.resolver = resolver;\n    __publicField(this, \"status\");\n  }\n  static is(value) {\n    return value instanceof LazyValue;\n  }\n  /** Preload the value so it can be read() later. */\n  preload() {\n    if (this.status) {\n      const status = this.status;\n      if (status.type !== \"pending\")\n        return;\n      return status.promise;\n    }\n    const promise = this.resolver().then(\n      (value) => {\n        this.status = {\n          type: \"fulfilled\",\n          value\n        };\n      },\n      (error) => {\n        this.status = {\n          type: \"rejected\",\n          error\n        };\n      }\n    );\n    this.status = {\n      type: \"pending\",\n      promise\n    };\n    return promise;\n  }\n  /** Synchronously read the value after calling preload() before. */\n  read() {\n    const status = this.status;\n    if (!status) {\n      throw new Error(\"Need to call preload() before read()\");\n    }\n    switch (status.type) {\n      case \"pending\":\n        throw new Error(\"Need to wait for preload() to resolve\");\n      case \"fulfilled\":\n        return status.value;\n      case \"rejected\":\n        throw status.error;\n      default:\n        assertNever(status);\n    }\n  }\n  async readAsync() {\n    const promise = this.preload();\n    if (promise)\n      await promise;\n    return this.read();\n  }\n};\n\n// ../../library/src/modules/LibraryFeaturesContext.ts\nimport React61 from \"react\";\nvar LibraryFeaturesContext = /* @__PURE__ */ React61.createContext(void 0);\nvar LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();\nvar useLibraryFeatures = () => {\n  const context = React61.useContext(LibraryFeaturesContext);\n  return context ?? {};\n};\n\n// ../../library/src/modules/Link/index.tsx\nimport { forwardRef as forwardRef4, isValidElement as isValidElement4, useMemo as useMemo10 } from \"react\";\n\n// ../../library/src/render/utils/findAnchorElement.ts\nfunction findAnchorElement(target, withinElement) {\n  if (target instanceof HTMLAnchorElement) {\n    return target;\n  }\n  if (target instanceof Element) {\n    if (target === withinElement) {\n      return null;\n    }\n    return findAnchorElement(target.parentElement, withinElement);\n  }\n  return null;\n}\n\n// ../../library/src/modules/ChildrenCanSuspend.tsx\nimport { forwardRef as forwardRef3 } from \"react\";\nimport { jsx as jsx56 } from \"react/jsx-runtime\";\nfunction ChildrenCanSuspend({ children }) {\n  const { useGranularSuspense } = useLibraryFeatures();\n  if (!useGranularSuspense)\n    return children;\n  return /* @__PURE__ */ jsx56(SuspenseThatPreservesDom, { children });\n}\nfunction withChildrenCanSuspend(Component18) {\n  return forwardRef3(function withChildrenCanSuspendInner(props, ref) {\n    return /* @__PURE__ */ jsx56(ChildrenCanSuspend, { children: /* @__PURE__ */ jsx56(Component18, { ...props, ref }) });\n  });\n}\n\n// ../../library/src/modules/LinkToWebPage.ts\nvar linkKey = \"webPageId\";\nfunction isLinkToWebPage(link) {\n  return Boolean(link && typeof link === \"object\" && linkKey in link);\n}\n\n// ../../library/src/modules/observeRouteForPreloading.ts\nvar PRELOAD_AFTER_MS = 500;\nvar OBSERVER_THRESHOLD = 0.9;\nvar LOW_MEMORY_THRESHOLD = 1.7;\nvar MAX_CONCURRENT_PRELOADS_SLOW_NETWORK = 4;\nvar MAX_CONCURRENT_PRELOADS_FAST_NETWORK = Infinity;\nvar nodeToRoute = /* @__PURE__ */ new WeakMap();\nvar preloadedRoutes = /* @__PURE__ */ new Set();\nvar routeToNodesInViewport = /* @__PURE__ */ new Map();\nfunction getObserveRouteForPreloadingFn() {\n  var _a;\n  const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {};\n  const lowDeviceMemory = navigator.deviceMemory && navigator.deviceMemory > LOW_MEMORY_THRESHOLD;\n  let effectiveType, preloadDisabled, maxPreloadAmount;\n  function updateConnection() {\n    effectiveType = connection.effectiveType || \"\";\n    preloadDisabled = connection.saveData || effectiveType.includes(\"2g\");\n    maxPreloadAmount = effectiveType === \"3g\" || lowDeviceMemory ? MAX_CONCURRENT_PRELOADS_SLOW_NETWORK : MAX_CONCURRENT_PRELOADS_FAST_NETWORK;\n  }\n  (_a = connection.addEventListener) == null ? void 0 : _a.call(connection, \"change\", updateConnection);\n  updateConnection();\n  const observer = new IntersectionObserver(onPreloadIntersectionChange, { threshold: OBSERVER_THRESHOLD });\n  let activePreloadsAmount = 0;\n  async function preloadTimeout(route, target) {\n    if (preloadDisabled)\n      return;\n    const nodesInViewport = routeToNodesInViewport.get(route);\n    if (!(nodesInViewport == null ? void 0 : nodesInViewport.size) || preloadedRoutes.has(route))\n      return;\n    ++activePreloadsAmount;\n    preloadedRoutes.add(route);\n    const preloadDone = preloadRoute(route).catch(() => {\n      if (false) {\n        throw new Error(\n          \"Error in preloadRoute during preloadTimeout. This should never happen as it introduces bugs. Please make sure preloadRoute does not throw.\"\n        );\n      }\n    });\n    observer.unobserve(target);\n    nodeToRoute.delete(target);\n    for (const node of nodesInViewport) {\n      observer.unobserve(node);\n      nodeToRoute.delete(node);\n    }\n    nodesInViewport.clear();\n    routeToNodesInViewport.delete(route);\n    await preloadDone;\n    --activePreloadsAmount;\n  }\n  function onPreloadIntersectionChange(entries) {\n    var _a2;\n    for (const entry of entries) {\n      const target = entry.target;\n      const route = nodeToRoute.get(target);\n      if (!route || preloadedRoutes.has(route)) {\n        observer.unobserve(target);\n        nodeToRoute.delete(target);\n        continue;\n      }\n      const nodes = routeToNodesInViewport.get(route);\n      const amountOfNodesInViewport = ((_a2 = routeToNodesInViewport.get(route)) == null ? void 0 : _a2.size) ?? 0;\n      if (entry.isIntersecting) {\n        if (activePreloadsAmount >= maxPreloadAmount)\n          continue;\n        if (nodes)\n          nodes.add(target);\n        else\n          routeToNodesInViewport.set(route, /* @__PURE__ */ new Set([target]));\n        setTimeout(preloadTimeout.bind(void 0, route, target), PRELOAD_AFTER_MS);\n      } else {\n        if (nodes)\n          nodes.delete(target);\n        if (amountOfNodesInViewport <= 1)\n          routeToNodesInViewport.delete(route);\n      }\n    }\n  }\n  return (route, node) => {\n    if (preloadedRoutes.has(route))\n      return;\n    nodeToRoute.set(node, route);\n    observer.observe(node);\n    return () => {\n      nodeToRoute.delete(node);\n      observer.unobserve(node);\n    };\n  };\n}\nvar observeRouteForPreloading = (\n  // this also guards `window`\n  !shouldPreloadBasedOnUA || typeof IntersectionObserver === \"undefined\" ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn()\n);\n\n// ../../library/src/modules/resolveSlug.ts\nvar noLocale = Symbol(\"noLocale\");\nvar resolveSlugCache = /* @__PURE__ */ new Map();\nfunction resolveSlug(unresolvedSlug, utilsByCollectionId, activeLocale) {\n  var _a, _b;\n  const cache2 = (_b = (_a = resolveSlugCache == null ? void 0 : resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale)) == null ? void 0 : _a.get(unresolvedSlug.collectionId)) == null ? void 0 : _b.get(unresolvedSlug.collectionItemId);\n  if (cache2)\n    return cache2;\n  const collectionCache = resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale) ?? /* @__PURE__ */ new Map();\n  resolveSlugCache.set((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale, collectionCache);\n  const collectionItemCache = collectionCache.get(unresolvedSlug.collectionId) ?? /* @__PURE__ */ new Map();\n  collectionCache.set(unresolvedSlug.collectionId, collectionItemCache);\n  const lazyValue = new LazyValue(async () => {\n    try {\n      const getUtils = utilsByCollectionId[unresolvedSlug.collectionId];\n      if (!getUtils) {\n        throw new Error(`Key not found in collection utils for collection id: \"${unresolvedSlug.collectionId}\"`);\n      }\n      const utils = await getUtils();\n      if (!utils)\n        throw new Error(\"Collection does not contain utility functions\");\n      const slug = await utils.getSlugByRecordId(unresolvedSlug.collectionItemId, activeLocale ?? void 0);\n      return slug;\n    } catch (error) {\n      console.warn(`Failed to resolve slug: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      return void 0;\n    }\n  });\n  collectionItemCache.set(unresolvedSlug.collectionItemId, lazyValue);\n  return lazyValue;\n}\n\n// ../../library/src/modules/Link/resolveSlugs.ts\nasync function resolveSlugs(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  async function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils)\n      return {};\n    const result = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      await lazyValue.preload();\n      const value = lazyValue.read();\n      if (value) {\n        result[slugKey] = value;\n      }\n    }\n    return result;\n  }\n  const [pathResult, slugResult] = await Promise.allSettled([\n    handleSlugs(unresolvedPathSlugs),\n    handleSlugs(unresolvedHashSlugs)\n  ]);\n  return {\n    path: pathResult.status === \"fulfilled\" ? pathResult.value : void 0,\n    hash: slugResult.status === \"fulfilled\" ? slugResult.value : void 0\n  };\n}\nfunction resolveSlugsWithSuspense(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  const promises = [];\n  function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils)\n      return void 0;\n    const result2 = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      const promise = lazyValue.preload();\n      if (promise) {\n        promises.push(promise);\n      } else {\n        const value = lazyValue.read();\n        if (value) {\n          result2[slugKey] = value;\n        }\n      }\n    }\n    return result2;\n  }\n  const result = {\n    path: handleSlugs(unresolvedPathSlugs),\n    hash: handleSlugs(unresolvedHashSlugs)\n  };\n  if (promises.length) {\n    throw Promise.allSettled(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/Link/urlChecks.tsx\nfunction isInternalURL(href) {\n  if (href === void 0)\n    return false;\n  if (href.startsWith(\"#\") || href.startsWith(\"/\") || href.startsWith(\".\"))\n    return true;\n  return false;\n}\nfunction isValidURL(href, isInternal) {\n  try {\n    const url = new URL(href);\n    return Boolean(url.protocol);\n  } catch {\n  }\n  return isInternal;\n}\n\n// ../../library/src/modules/Link/findMatchingRouteAttributes.tsx\nasync function findMatchingRouteAttributesForWebPageLink(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = await resolveSlugs(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForWebPageLinkWithSuspense(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = resolveSlugsWithSuspense(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForResolvedPath(router, path, implicitPathVariables) {\n  if (!router.routes || !router.getRoute) {\n    return;\n  }\n  const isInternal = isInternalURL(path);\n  if (!isInternal) {\n    return;\n  }\n  try {\n    const [pathnameWithQueryParams, hash2] = path.split(\"#\", 2);\n    assert(pathnameWithQueryParams !== void 0, \"A href must have a defined pathname.\");\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    assert(pathname !== void 0, \"A href must have a defined pathname.\");\n    const { routeId, pathVariables } = inferInitialRouteFromPath(router.routes, pathname);\n    const route = router.getRoute(routeId);\n    if (route) {\n      const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables);\n      return {\n        routeId,\n        route,\n        href: path,\n        // If the link is resolved (in ResolveLink), we trust that the hash is also resolved. Otherwise, it\n        // should be resolved by getHashForRoute.\n        elementId: hash2,\n        pathVariables: combinedPathVariables\n      };\n    }\n  } catch {\n  }\n}\nfunction getRouteAttributes(router, currentRoute, routeId, hash2, implicitPathVariables, pathVariables, hashVariables, resolvedSlugs) {\n  var _a;\n  const combinedPathVariables = { ...implicitPathVariables, ...pathVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.path };\n  const combinedHashVariables = { ...implicitPathVariables, ...hashVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.hash };\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  const resolvedHref = getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: currentRoute == null ? void 0 : currentRoute.pathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    preserveQueryParams: router.preserveQueryParams,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const resolvedHash = resolvedHref.split(\"#\", 2)[1];\n  return {\n    routeId,\n    route,\n    href: resolvedHref,\n    elementId: resolvedHash,\n    pathVariables: combinedPathVariables\n  };\n}\n\n// ../../library/src/modules/Link/getRouteFromPageLink.tsx\nfunction getRouteFromPageLink(pageLink, router, currentRoute) {\n  var _a;\n  if (isString(pageLink)) {\n    const isInternal = isInternalURL(pageLink);\n    if (!router.routes || !router.getRoute || !currentRoute || !isInternal) {\n      return;\n    }\n    const [pathnameWithQueryParams] = pageLink.split(\"#\", 2);\n    if (pathnameWithQueryParams === void 0)\n      return;\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    if (pathname === void 0)\n      return;\n    const { routeId } = inferInitialRouteFromPath(router.routes, pathname);\n    return router.getRoute(routeId);\n  }\n  const { webPageId } = pageLink;\n  return (_a = router.getRoute) == null ? void 0 : _a.call(router, webPageId);\n}\n\n// ../../library/src/modules/framerPageLink.ts\nvar elementKey = \"element\";\nvar collectionKey = \"collection\";\nvar collectionItemIdKey = \"collectionItemId\";\nvar pathVariablesKey = \"pathVariables\";\nvar mediaType = \"framer/page-link,\";\nfunction isFramerPageLink(value) {\n  return isString(value) && value.startsWith(`data:${mediaType}`);\n}\nfunction createFramerPageLink(targetId = null, options = {}) {\n  const target = targetId ? targetId : \"none\";\n  const link = new URL(`data:${mediaType}${target}`);\n  if (options.element) {\n    link.searchParams.append(elementKey, options.element);\n  }\n  if (options.collectionItem) {\n    link.searchParams.append(collectionKey, options.collectionItem.collection);\n    link.searchParams.append(collectionItemIdKey, options.collectionItem.collectionItemId);\n    link.searchParams.append(pathVariablesKey, new URLSearchParams(options.collectionItem.pathVariables).toString());\n  }\n  return link.href;\n}\nfunction parseFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return;\n  try {\n    const url = new URL(link);\n    const target = url.pathname.substring(mediaType.length);\n    const searchParams = url.searchParams;\n    const element = searchParams.has(elementKey) ? searchParams.get(elementKey) : void 0;\n    let collectionItem;\n    const collection = searchParams.get(collectionKey);\n    const collectionItemId = searchParams.get(collectionItemIdKey);\n    const pathVariablesValue = searchParams.get(pathVariablesKey);\n    if (collection && collectionItemId && pathVariablesValue) {\n      const pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesValue).entries());\n      collectionItem = {\n        collection,\n        collectionItemId,\n        pathVariables\n      };\n    }\n    return {\n      target: target === \"none\" ? null : target,\n      /**\n       * For historical reason we used to set \"element=none\" into the\n       * datalink, we no longer do that today, but we still keep this code\n       * so we could parse legacy links correctly.\n       */\n      element: element === \"none\" ? void 0 : element,\n      collectionItem\n    };\n  } catch {\n    return;\n  }\n}\nfunction shouldOpenLinkInNewTab(link) {\n  return !isFramerPageLink(link);\n}\nfunction navigateFromAttributes(navigate, element, implicitPathVariables) {\n  var _a;\n  let routeId = element.getAttribute(\"data-framer-page-link-target\" /* Page */);\n  let elementId;\n  let pathVariables;\n  if (routeId) {\n    elementId = element.getAttribute(\"data-framer-page-link-element\" /* Element */) ?? void 0;\n    const pathVariablesRaw = element.getAttribute(\"data-framer-page-link-path-variables\" /* PathVariables */);\n    if (pathVariablesRaw) {\n      pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesRaw).entries());\n    }\n  } else {\n    const href = element.getAttribute(\"href\");\n    if (!href)\n      return false;\n    const link = parseFramerPageLink(href);\n    if (!link || !link.target)\n      return false;\n    routeId = link.target;\n    elementId = link.element ?? void 0;\n    pathVariables = (_a = link.collectionItem) == null ? void 0 : _a.pathVariables;\n  }\n  const smoothScroll = elementId ? element.dataset.framerSmoothScroll !== void 0 : void 0;\n  navigate(routeId, elementId, Object.assign({}, implicitPathVariables, pathVariables), smoothScroll);\n  return true;\n}\n\n// ../../library/src/modules/Link/linkFromFramerPageLink.tsx\nfunction linkFromFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return link;\n  const parsed = parseFramerPageLink(link);\n  if (!parsed)\n    return void 0;\n  const { target, element, collectionItem } = parsed;\n  if (!target)\n    return void 0;\n  return {\n    webPageId: target,\n    hash: element ?? void 0,\n    pathVariables: createVariablesFromPageLinkCollectionItem(collectionItem)\n  };\n}\nfunction createVariablesFromPageLinkCollectionItem(collectionItem) {\n  if (!collectionItem)\n    return void 0;\n  const variables = {};\n  for (const pathVariablesKey2 in collectionItem.pathVariables) {\n    const value = collectionItem.pathVariables[pathVariablesKey2];\n    if (value)\n      variables[pathVariablesKey2] = value;\n  }\n  return variables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nimport { useContext as useContext17 } from \"react\";\n\n// ../../library/src/modules/Link/pathVariables.tsx\nimport { createContext as createContext7, useContext as useContext16 } from \"react\";\nvar pathVariablesRegExp2 = /:([a-z]\\w*)/gi;\nvar PathVariablesContext = /* @__PURE__ */ createContext7(void 0);\nfunction useImplicitPathVariables() {\n  var _a;\n  const contextPathVariables = useContext16(PathVariablesContext);\n  const currentPathVariables = (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n  const pathVariables = contextPathVariables || currentPathVariables;\n  return pathVariables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nfunction linkMatchesRoute(route, { webPageId, hash: hash2, pathVariables }, implicitPathVariables) {\n  if (webPageId !== route.id)\n    return false;\n  if (hash2)\n    return false;\n  if (route.path && route.pathVariables) {\n    const combinedPathVariable = Object.assign({}, implicitPathVariables, pathVariables);\n    for (const [, key7] of route.path.matchAll(pathVariablesRegExp2)) {\n      if (!key7)\n        return false;\n      if (route.pathVariables[key7] !== combinedPathVariable[key7]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction useLinkMatchesRoute(link) {\n  const route = useCurrentRoute();\n  const contextPathVariables = useContext17(PathVariablesContext);\n  if (!route)\n    return false;\n  const pageLink = isString(link) ? linkFromFramerPageLink(link) : link;\n  return isLinkToWebPage(pageLink) ? linkMatchesRoute(route, pageLink, contextPathVariables) : false;\n}\n\n// ../../library/src/modules/Link/types.ts\nvar AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {\n  AnchorLinkTarget2[\"_blank\"] = \"_blank\";\n  AnchorLinkTarget2[\"_self\"] = \"_self\";\n  return AnchorLinkTarget2;\n})(AnchorLinkTarget || {});\n\n// ../../library/src/modules/Link/propsForLink.tsx\nfunction propsForLink(href, openInNewTab = void 0, trackLinkClick) {\n  const isInternal = isInternalURL(href);\n  const target = getTargetAttrValue(openInNewTab, isInternal);\n  const rel = !isInternal ? \"noopener\" : void 0;\n  href = href === \"\" || isValidURL(href, isInternal) ? href : `https://${href}`;\n  return trackLinkClick ? {\n    href,\n    target,\n    rel,\n    onClick() {\n      void trackLinkClick(href);\n    }\n  } : { href, target, rel };\n}\nfunction getTargetAttrValue(openInNewTab, isInternal) {\n  if (openInNewTab !== void 0) {\n    return openInNewTab ? \"_blank\" /* _blank */ : void 0;\n  }\n  return isInternal ? void 0 : \"_blank\" /* _blank */;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { Children as Children3, createContext as createContext8, createElement, isValidElement as isValidElement3, useCallback as useCallback10, useContext as useContext18, useMemo as useMemo9 } from \"react\";\n\n// ../../library/src/modules/NestedLinksCollector.ts\nfunction linkInfoKey(link) {\n  var _a, _b;\n  return `${link.scopeId}:${link.nodeId}:${(_a = link.furthestExternalComponent) == null ? void 0 : _a.scopeId}:${(_b = link.furthestExternalComponent) == null ? void 0 : _b.nodeId}`;\n}\nvar NestedLinksCollector = class {\n  constructor() {\n    __publicField(this, \"collectedLinks\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nestingInfo\", /* @__PURE__ */ new Map());\n  }\n  clear() {\n    this.collectedLinks.clear();\n    this.nestingInfo.clear();\n  }\n  /**\n   * Returns a Map of outer links to their inner links.\n   *\n   * NOTE: This function is called in the SSG renderer sandbox (<root>/src/ssg/src/ssg-sandbox-renderer/sandbox/worker/renderer.ts)\n   */\n  getLinks() {\n    const result = /* @__PURE__ */ new Map();\n    for (const [outerLinkKey, innerLinkKeys] of this.nestingInfo) {\n      const outerLinkInfo = this.collectedLinks.get(outerLinkKey);\n      assert(outerLinkInfo, `Outer link not found: ${outerLinkKey}`);\n      const links = Array.from(innerLinkKeys).map((innerLinkKey) => {\n        const innerLinkInfo = this.collectedLinks.get(innerLinkKey);\n        assert(innerLinkInfo, `Inner link not found: ${innerLinkKey}`);\n        return innerLinkInfo;\n      });\n      result.set(outerLinkInfo, links);\n    }\n    return result;\n  }\n  collectNestedLink(outerLink, innerLink) {\n    if (typeof window !== \"undefined\" && true || !outerLink.nodeId || !innerLink.nodeId) {\n      return;\n    }\n    this.collectedLinks.set(linkInfoKey(outerLink), outerLink);\n    this.collectedLinks.set(linkInfoKey(innerLink), innerLink);\n    const outerLinkNestingInfo = this.nestingInfo.get(linkInfoKey(outerLink)) ?? /* @__PURE__ */ new Set();\n    outerLinkNestingInfo.add(linkInfoKey(innerLink));\n    this.nestingInfo.set(linkInfoKey(outerLink), outerLinkNestingInfo);\n  }\n};\nvar nestedLinksCollector = /* @__PURE__ */ new NestedLinksCollector();\n\n// ../../library/src/modules/useIsOnFramerCanvas.ts\nfunction useIsOnFramerCanvas() {\n  return RenderTarget.current() === RenderTarget.canvas;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { jsx as jsx57 } from \"react/jsx-runtime\";\nvar OuterLinkContext = /* @__PURE__ */ createContext8(void 0);\nfunction useReplaceNestedLinks(children, scopeId, nodeId, href, propsAddedByLink, observerRef) {\n  const outerLink = useContext18(OuterLinkContext);\n  const furthestExternalComponent = useFurthestExternalComponent();\n  const innerLink = useMemo9(\n    () => ({ scopeId, nodeId, furthestExternalComponent }),\n    [scopeId, nodeId, furthestExternalComponent]\n  );\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const route = useMemo9(() => {\n    const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n    if (!pageLink)\n      return;\n    return getRouteFromPageLink(pageLink, router, currentRoute);\n  }, [currentRoute, href, router]);\n  const { replaceNestedLinks } = useLibraryFeatures();\n  const isOnFramerCanvas = useIsOnFramerCanvas();\n  const shouldReplaceLink = Boolean(replaceNestedLinks && !isOnFramerCanvas && (outerLink == null ? void 0 : outerLink.nodeId) && innerLink.nodeId);\n  const onClick = useCallback10(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href)\n        return;\n      event.preventDefault();\n      event.stopPropagation();\n      const isAppleDevice = /Mac|iPod|iPhone|iPad/u.test(navigator.userAgent);\n      if (isAppleDevice ? event.metaKey : event.ctrlKey) {\n        openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n        return;\n      }\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  const onAuxClick = useCallback10(\n    (event) => {\n      if (!propsAddedByLink.href)\n        return;\n      event.preventDefault();\n      event.stopPropagation();\n      openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n    },\n    [propsAddedByLink]\n  );\n  const onKeyDown = useCallback10(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href)\n        return;\n      if (event.key !== \"Enter\")\n        return;\n      event.preventDefault();\n      event.stopPropagation();\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  useRefEffect(\n    observerRef,\n    (node) => {\n      if (node === null)\n        return;\n      if (!shouldReplaceLink)\n        return;\n      node.dataset.hydrated = \"true\";\n    },\n    [shouldReplaceLink]\n  );\n  let replacedChildren = children;\n  if (shouldReplaceLink) {\n    Children3.forEach(children, (child) => {\n      if (!isChildReplaceable(child))\n        return;\n      assert(\n        linkInfoIsCollectable(outerLink),\n        \"outerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      assert(\n        linkInfoIsCollectable(innerLink),\n        \"innerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      nestedLinksCollector.collectNestedLink(outerLink, innerLink);\n    });\n    replacedChildren = Children3.map(children, (child) => {\n      if (!isChildReplaceable(child))\n        return child;\n      const tag = maybeReplaceAnchorWithSpan(child.type);\n      const { children: childChildren, ...childProps } = child.props;\n      const props = {\n        ...childProps,\n        // This attribute is used in `ssg/src/ssg-sandbox-renderer/worker/nestedLinks.ts` to handle the nested links clicks\n        \"data-nested-link\": true,\n        role: \"link\",\n        tabIndex: 0,\n        onClick,\n        onAuxClick,\n        onKeyDown,\n        as: childProps.as && maybeReplaceAnchorWithSpan(childProps.as)\n      };\n      const ref = \"ref\" in child ? child.ref : void 0;\n      return createElement(\n        tag,\n        // We need to pass the ref here again, otherwise it will be lost\n        { ...props, ref },\n        childChildren\n      );\n    });\n  }\n  return /* @__PURE__ */ jsx57(OuterLinkContext.Provider, { value: innerLink, children: replacedChildren });\n}\nfunction linkInfoIsCollectable(linkInfo) {\n  return !isUndefined(linkInfo == null ? void 0 : linkInfo.nodeId);\n}\nfunction isChildReplaceable(child) {\n  return isValidElement3(child) && (maybeReplaceAnchorWithSpan(child.type) !== child.type || maybeReplaceAnchorWithSpan(child.props.as) !== child.props.as);\n}\nfunction openExternalLink(href, rel, target) {\n  const link = document.createElement(\"a\");\n  link.href = href;\n  if (rel) {\n    link.rel = rel;\n  }\n  if (target) {\n    link.target = target;\n  }\n  document.body.appendChild(link);\n  link.click();\n  link.remove();\n}\nfunction maybeReplaceAnchorWithSpan(component) {\n  if (component === \"a\")\n    return \"span\";\n  if (isMotionComponent(component) && unwrapMotionComponent(component) === \"a\")\n    return motion.span;\n  return component;\n}\n\n// ../../library/src/modules/Link/useTrackLinkClick.ts\nimport { useCallback as useCallback11 } from \"react\";\nfunction useTrackLinkClick({\n  newTrackingEventsEnabled,\n  nodeId,\n  clickTrackingId,\n  router,\n  href,\n  activeLocale\n}) {\n  return useCallback11(\n    async (hrefAttribute) => {\n      var _a, _b, _c, _d, _e;\n      if (!newTrackingEventsEnabled || !((_a = router.pageviewEventData) == null ? void 0 : _a.current))\n        return;\n      const pageviewEventData = router.pageviewEventData.current;\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!isLinkToWebPage(pageLink)) {\n        return sendTrackingEvent(\"published_site_click\", {\n          ...pageviewEventData,\n          href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n          nodeId: nodeId ?? null,\n          trackingId: clickTrackingId ?? null,\n          targetRoutePath: null,\n          targetWebPageId: null,\n          targetCollectionItemId: null\n        });\n      }\n      const targetWebPageId = pageLink.webPageId;\n      const targetRoute = (_b = router == null ? void 0 : router.getRoute) == null ? void 0 : _b.call(router, targetWebPageId);\n      const targetRoutePath = (targetRoute == null ? void 0 : targetRoute.path) ?? null;\n      let targetCollectionItemId = null;\n      if ((targetRoute == null ? void 0 : targetRoute.collectionId) && pageLink.pathVariables && ((_c = router.collectionUtils) == null ? void 0 : _c[targetRoute.collectionId])) {\n        const utils = await ((_e = (_d = router.collectionUtils)[targetRoute.collectionId]) == null ? void 0 : _e.call(_d));\n        const [slug] = Object.values(pageLink.pathVariables);\n        if (utils && typeof slug === \"string\") {\n          targetCollectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      return sendTrackingEvent(\"published_site_click\", {\n        ...pageviewEventData,\n        href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n        nodeId: nodeId ?? null,\n        trackingId: clickTrackingId ?? null,\n        targetRoutePath,\n        targetWebPageId,\n        targetCollectionItemId\n      });\n    },\n    [newTrackingEventsEnabled, nodeId, clickTrackingId, router, href, activeLocale]\n  );\n}\nfunction makeUrlAbsolute(href) {\n  try {\n    const url = new URL(href, safeWindow.document.baseURI);\n    return url.origin === safeWindow.location.origin ? url.pathname + url.search + url.hash : url.href;\n  } catch {\n    return href;\n  }\n}\n\n// ../../library/src/modules/Link/index.tsx\nfunction performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll) {\n  var _a, _b;\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  if (route && isLazyComponentType(route == null ? void 0 : route.page)) {\n    void route.page.preload();\n  }\n  (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, combinedPathVariables, smoothScroll);\n}\nfunction createOnClickLinkHandler(router, routeId, href, trackLinkClick, elementId, combinedPathVariables, smoothScroll) {\n  return async (event) => {\n    void trackLinkClick(href);\n    if (event.metaKey)\n      return;\n    const anchorElement = findAnchorElement(event.target);\n    if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n      return;\n    event.preventDefault();\n    performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll);\n  };\n}\nfunction propsForRoutePath(href, openInNewTab, router, currentRoute, trackLinkClick, implicitPathVariables, smoothScroll) {\n  if (!currentRoute)\n    return propsForLink(href, openInNewTab, trackLinkClick);\n  const matchedRoute = findMatchingRouteAttributesForResolvedPath(router, href, implicitPathVariables);\n  if (!matchedRoute)\n    return propsForLink(href, openInNewTab, trackLinkClick);\n  const { routeId, route, elementId, pathVariables } = matchedRoute;\n  if (!route)\n    return propsForLink(href, openInNewTab, trackLinkClick);\n  const path = getPathForRoute(route, {\n    // If the link is resolved, we trust that the slugs are resolved.\n    currentRoutePath: currentRoute.path,\n    currentPathVariables: currentRoute.pathVariables,\n    // The hash value is already fully resolved so we don't need to\n    // provide any hashVariables.\n    hash: elementId,\n    pathVariables,\n    preserveQueryParams: router.preserveQueryParams,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const anchorTarget = getTargetAttrValue(openInNewTab, true);\n  return {\n    href: path,\n    target: anchorTarget,\n    onClick: createOnClickLinkHandler(\n      router,\n      routeId,\n      path,\n      trackLinkClick,\n      elementId,\n      pathVariables,\n      smoothScroll\n    ),\n    navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n    \"data-framer-page-link-current\": !elementId && currentRoute.id === routeId || void 0\n  };\n}\nvar Link = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef4(function Link2({\n    children,\n    href,\n    openInNewTab,\n    smoothScroll,\n    clickTrackingId,\n    nodeId,\n    scopeId,\n    motionChild,\n    ...restProps\n  }, forwardedRef) {\n    const router = useRouter();\n    const currentRoute = useCurrentRoute();\n    const implicitPathVariables = useImplicitPathVariables();\n    const { activeLocale } = useLocaleInfo();\n    const { newTrackingEvents } = useLibraryFeatures();\n    const trackLinkClick = useTrackLinkClick({\n      newTrackingEventsEnabled: newTrackingEvents,\n      nodeId,\n      clickTrackingId,\n      router,\n      href,\n      activeLocale\n    });\n    const propsAddedByLink = useMemo10(() => {\n      if (!href)\n        return {};\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!pageLink)\n        return {};\n      if (isString(pageLink)) {\n        return propsForRoutePath(\n          pageLink,\n          openInNewTab,\n          router,\n          currentRoute,\n          trackLinkClick,\n          implicitPathVariables,\n          smoothScroll\n        );\n      }\n      const {\n        routeId,\n        href: resolvedHref,\n        elementId,\n        pathVariables\n      } = findMatchingRouteAttributesForWebPageLinkWithSuspense(\n        router,\n        currentRoute,\n        pageLink,\n        activeLocale,\n        implicitPathVariables\n      );\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: resolvedHref,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(\n          router,\n          routeId,\n          resolvedHref,\n          trackLinkClick,\n          elementId,\n          pathVariables,\n          smoothScroll\n        ),\n        navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n        \"data-framer-page-link-current\": currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0\n      };\n    }, [\n      href,\n      router,\n      activeLocale,\n      implicitPathVariables,\n      openInNewTab,\n      currentRoute,\n      smoothScroll,\n      trackLinkClick\n    ]);\n    const hasRef = isValidElement4(children) && \"ref\" in children;\n    const observerRef = useObserverRef(hasRef ? children.ref : void 0);\n    useRefEffect(\n      observerRef,\n      (node) => {\n        var _a;\n        if (node === null)\n          return;\n        const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n        if (!pageLink)\n          return;\n        const route = getRouteFromPageLink(pageLink, router, currentRoute);\n        if (!route)\n          return;\n        return (_a = observeRouteForPreloading) == null ? void 0 : _a(route, node);\n      },\n      [currentRoute, href, router]\n    );\n    let replacedChildren = children;\n    const { navigate, ...propsAddedByLinkExceptNavigate } = propsAddedByLink;\n    const isInternalNavigation = Boolean(navigate);\n    const clone = useCloneChildrenWithPropsAndRef(forwardedRef);\n    replacedChildren = clone.cloneAsArray(\n      replacedChildren,\n      (childProps) => cloneChildPropsWithAggregatedEvents(\n        childProps,\n        {\n          ...restProps,\n          ...rebindEventHandlersIfNeeded(propsAddedByLinkExceptNavigate, motionChild, isInternalNavigation)\n        },\n        observerRef\n      )\n    );\n    replacedChildren = useReplaceNestedLinks(replacedChildren, scopeId, nodeId, href, propsAddedByLink, observerRef);\n    return replacedChildren;\n  })\n);\nfunction cloneChildPropsWithAggregatedEvents(childProps, linkProps, observerRef) {\n  const aggregatedProps = {\n    ...childProps,\n    ...linkProps,\n    ref: observerRef\n  };\n  const { onTap, onClick } = linkProps;\n  if (!onTap && !onClick) {\n    return aggregatedProps;\n  }\n  const { onClick: childOnClick, onTap: childOnTap } = childProps;\n  return {\n    ...aggregatedProps,\n    onClick: onClick || childOnClick ? (event) => {\n      if (isFunction(childOnClick)) {\n        childOnClick == null ? void 0 : childOnClick(event);\n      }\n      onClick == null ? void 0 : onClick(event);\n    } : void 0,\n    onTap: onTap || childOnTap ? (event, info) => {\n      if (isFunction(childOnTap)) {\n        childOnTap == null ? void 0 : childOnTap(event, info);\n      }\n      onTap == null ? void 0 : onTap(event, info);\n    } : void 0\n  };\n}\nfunction rebindEventHandlersIfNeeded(linkProps, motionChild, isInternalNavigation) {\n  const shouldReplaceClickWithTap = Boolean(motionChild && isIOS());\n  if (!shouldReplaceClickWithTap)\n    return linkProps;\n  const { onClick, ...restProps } = linkProps;\n  if (!onClick)\n    return linkProps;\n  if (isInternalNavigation) {\n    return {\n      ...restProps,\n      onTap: onClick,\n      // When the link is an internal link, we're already doing SPA routing in onClick\n      // prevent the default click behavior so that we don't trigger a native anchor link navigation again.\n      onClick: preventClickOnNativeAnchorLink\n    };\n  }\n  return { ...restProps, onTap: onClick };\n}\nfunction preventClickOnNativeAnchorLink(event) {\n  const anchorElement = findAnchorElement(event.target);\n  if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n    return;\n  event.preventDefault();\n}\n\n// ../../library/src/modules/Link/resolveLink.ts\nfunction resolveLink(href, router, implicitPathVariables) {\n  return resolveLinkInternal(href, router, implicitPathVariables);\n}\nfunction resolveLinkInternal(href, router, implicitPathVariables, onlyHash, resolveSlugs2) {\n  const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n  if (!isLinkToWebPage(pageLink))\n    return isString(href) ? propsForLink(href).href : void 0;\n  if (!router.getRoute || !router.currentRouteId)\n    return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const route = router.getRoute(webPageId);\n  const resolvedSlugs = unresolvedPathSlugs || unresolvedHashSlugs ? resolveSlugs2 == null ? void 0 : resolveSlugs2(unresolvedPathSlugs, unresolvedHashSlugs) : void 0;\n  const combinedPathVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    pathVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.path\n  );\n  const combinedHashVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    hashVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.hash\n  );\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    relative: false,\n    preserveQueryParams: router.preserveQueryParams,\n    onlyHash,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n}\n\n// ../../library/src/modules/Link/resolvePageScope.tsx\nfunction resolvePageScope(pageLink, router) {\n  if (!router.getRoute || !router.currentRouteId)\n    return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId } = pageLink;\n  const route = router.getRoute(webPageId);\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    relative: false,\n    preserveQueryParams: false,\n    siteCanonicalURL: void 0\n  });\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport React65, { startTransition as startTransition6, Suspense as Suspense4, useContext as useContext22, useEffect as useEffect18, useMemo as useMemo12, useState as useState6 } from \"react\";\n\n// ../../library/src/components/IgnoreErrors.tsx\nimport { Component as Component15 } from \"react\";\nvar IgnoreErrors = class extends Component15 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  render() {\n    if (this.state.error)\n      return null;\n    return this.props.children;\n  }\n};\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport React62, { startTransition as startTransition3, useContext as useContext19 } from \"react\";\n\n// ../../library/src/render/presentation/Forms/antibot.ts\nvar salt = \"framer\";\nvar difficulty = 3;\nvar tokenLength = 30;\nvar maxTime = 1e4;\nasync function calculateProofOfWork() {\n  const target = \"0\".repeat(difficulty);\n  const startTime = Date.now();\n  let processing = true;\n  while (processing) {\n    const timestamp = Date.now();\n    if (timestamp - startTime > maxTime) {\n      processing = false;\n      return;\n    }\n    const nonce = randomCharacters(tokenLength);\n    const secret = `${timestamp}:${nonce}`;\n    const hash2 = await sha256(salt + secret);\n    if (hash2.startsWith(target)) {\n      return { secret, hash: hash2 };\n    }\n  }\n  return;\n}\nasync function sha256(text) {\n  const buffer = new TextEncoder().encode(text);\n  const hashBuffer = await crypto.subtle.digest(\"SHA-256\", buffer);\n  return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction randomCharacters(count) {\n  const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n  let result = \"\";\n  const charactersLength = characters.length;\n  for (let i = 0; i < count; i++) {\n    result += characters.charAt(Math.floor(Math.random() * charactersLength));\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/Forms/formData.ts\nfunction getEncodedFormFieldsHeader(data2) {\n  return Array.from(data2.keys()).map(encodeURIComponent).join(\",\");\n}\nfunction addUTMTagsToFormData(data2, document2) {\n  try {\n    const matches = document2.cookie.match(\"(^|;) ?framerFormsUTMTags=([^;]*)(;|$)\");\n    if (matches !== null && matches[2]) {\n      const parsed = JSON.parse(decodeURIComponent(matches[2]));\n      if (!parsed || typeof parsed !== \"object\")\n        return;\n      [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\", \"gclid\"].forEach((key7) => {\n        if (typeof parsed[key7] === \"string\")\n          data2.append(key7, parsed[key7]);\n      });\n    }\n  } catch (e) {\n  }\n}\n\n// ../../library/src/render/presentation/Forms/trackFormSubmit.ts\nfunction trackFormSubmit({ newTrackingEventsEnabled, router, nodeId, submitTrackingId }) {\n  var _a;\n  if (!newTrackingEventsEnabled || !((_a = router == null ? void 0 : router.pageviewEventData) == null ? void 0 : _a.current))\n    return;\n  const pageviewEventData = router.pageviewEventData.current;\n  const eventData = {\n    ...pageviewEventData,\n    nodeId: nodeId ?? null,\n    trackingId: submitTrackingId ?? null\n  };\n  return sendTrackingEvent(\"published_site_form_submit\", eventData);\n}\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport { jsx as jsx58 } from \"react/jsx-runtime\";\nvar pendingState = { state: \"pending\" };\nvar successState = { state: \"success\" };\nvar incompleteState = { state: \"incomplete\" };\nvar completeState = { state: \"complete\" };\nvar errorState = { state: \"error\" };\nfunction formReducer({ state }, { type }) {\n  switch (type) {\n    case \"complete\":\n      if (state === \"error\")\n        return errorState;\n      return completeState;\n    case \"incomplete\":\n      if (state === \"error\")\n        return errorState;\n      return incompleteState;\n    case \"submit\":\n      return pendingState;\n    case \"success\":\n      return successState;\n    case \"error\":\n      return errorState;\n    default:\n      assertNever(type);\n  }\n}\nfunction stateCanSubmitForm({ state }) {\n  return state === \"incomplete\" || state === \"complete\";\n}\nfunction preventDefault(e) {\n  e.preventDefault();\n}\nfunction openExternalLinkInCurrentTab(link, formRef) {\n  const href = isValidURL(link, false) ? link : `https://${link}`;\n  const linkElement = document.createElement(\"a\");\n  linkElement.href = href;\n  linkElement.target = \"_self\";\n  linkElement.style.display = \"none\";\n  if (!(\"current\" in formRef && formRef.current))\n    return;\n  formRef.current.appendChild(linkElement);\n  linkElement.click();\n  linkElement.remove();\n}\nvar FormContext = React62.createContext(void 0);\nvar FormContainer = /* @__PURE__ */ React62.forwardRef(function FormContainer2({ action, children, redirectUrl, onSuccess, onError, onLoading, submitTrackingId, nodeId, ...props }, forwardedRef) {\n  const fallbackRef = React62.useRef(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const implicitPathVariables = useImplicitPathVariables();\n  const [state, dispatch] = React62.useReducer(formReducer, incompleteState);\n  const { activeLocale } = useLocaleInfo();\n  const projectHash = useContext19(FormContext);\n  const callbacks = React62.useRef({ onSuccess, onError, onLoading });\n  callbacks.current = { onSuccess, onError, onLoading };\n  const { newTrackingEvents } = useLibraryFeatures();\n  async function redirectTo(link) {\n    var _a, _b;\n    if (isString(link)) {\n      const matchingRoute2 = findMatchingRouteAttributesForResolvedPath(router, link, implicitPathVariables);\n      if (!matchingRoute2) {\n        openExternalLinkInCurrentTab(link, ref);\n        return;\n      }\n      const { routeId: routeId2, elementId: elementId2, pathVariables: pathVariables2 } = matchingRoute2;\n      (_a = router.navigate) == null ? void 0 : _a.call(router, routeId2, elementId2, pathVariables2);\n      return;\n    }\n    assert(isLinkToWebPage(link), \"Expected link to be either a LinkToWebPage or a string\", link);\n    const matchingRoute = await findMatchingRouteAttributesForWebPageLink(\n      router,\n      currentRoute,\n      link,\n      activeLocale,\n      implicitPathVariables\n    );\n    const { routeId, elementId, pathVariables } = matchingRoute;\n    (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, pathVariables);\n  }\n  const handleSubmit = async (event) => {\n    var _a, _b, _c, _d, _e, _f;\n    event.preventDefault();\n    if (!action || !projectHash)\n      return;\n    dispatch({ type: \"submit\" });\n    const data2 = new FormData(event.currentTarget);\n    await interactionResponse({ priority: \"user-blocking\" });\n    addUTMTagsToFormData(data2, safeWindow.document);\n    for (const [key7, value] of data2) {\n      if (value instanceof File)\n        data2.delete(key7);\n    }\n    try {\n      (_b = (_a = callbacks.current).onLoading) == null ? void 0 : _b.call(_a);\n      trackFormSubmit({\n        newTrackingEventsEnabled: newTrackingEvents,\n        router,\n        nodeId,\n        submitTrackingId,\n        activeLocale\n      });\n      await submitForm(action, data2, projectHash);\n      startTransition3(() => dispatch({ type: \"success\" }));\n      (_d = (_c = callbacks.current).onSuccess) == null ? void 0 : _d.call(_c);\n      if (redirectUrl) {\n        await redirectTo(redirectUrl);\n      }\n    } catch (error) {\n      startTransition3(() => dispatch({ type: \"error\" }));\n      (_f = (_e = callbacks.current).onError) == null ? void 0 : _f.call(_e);\n      console.error(error);\n    }\n  };\n  const handleKeyDown = (event) => {\n    const { target: input, currentTarget: form, key: key7 } = event;\n    const isTextArea = input instanceof HTMLTextAreaElement;\n    if (isTextArea)\n      return;\n    if (key7 === \"Enter\" && form.checkValidity()) {\n      event.preventDefault();\n      void handleSubmit(event);\n    }\n  };\n  const checkValidity = async (e) => {\n    const target = e.currentTarget;\n    await interactionResponse({ priority: \"background\" });\n    startTransition3(() => dispatch({ type: anyEmptyRequiredFields(target) ? \"incomplete\" : \"complete\" }));\n  };\n  return /* @__PURE__ */ jsx58(\n    motion.form,\n    {\n      ...props,\n      onSubmit: stateCanSubmitForm(state) ? handleSubmit : preventDefault,\n      onKeyDown: handleKeyDown,\n      onChange: checkValidity,\n      ref,\n      children: children(state)\n    }\n  );\n});\nfunction anyEmptyRequiredFields(element) {\n  if (element.children.length === 0)\n    return false;\n  for (const child of element.children) {\n    if (child instanceof HTMLInputElement || child instanceof HTMLTextAreaElement || child instanceof HTMLSelectElement) {\n      if (child.required && child.value === \"\")\n        return true;\n    } else {\n      const result = anyEmptyRequiredFields(child);\n      if (result)\n        return true;\n    }\n  }\n  return false;\n}\nasync function submitForm(action, data2, projectHash) {\n  const proofOfWork = await calculateProofOfWork();\n  if (!proofOfWork) {\n    throw new Error(\"Failed to calculate proof of work\");\n  }\n  const response = await fetch(action, {\n    body: data2,\n    method: \"POST\",\n    headers: {\n      \"Framer-Site-Id\": projectHash,\n      \"Framer-POW\": proofOfWork.secret,\n      \"Framer-Form-Fields\": getEncodedFormFieldsHeader(data2)\n    }\n  });\n  if (response.ok) {\n    return response;\n  } else {\n    const body = await response.json();\n    const error = \"Failed to submit form\";\n    if (responseHasError(body)) {\n      throw new Error(`${error} - ${body.error.message}`);\n    }\n    throw new Error(error);\n  }\n}\nfunction responseHasError(response) {\n  return typeof response === \"object\" && response !== null && \"error\" in response && isObject(response.error) && \"message\" in response.error && typeof response.error.message === \"string\";\n}\n\n// ../../library/src/router/Router.tsx\nimport { Fragment as Fragment9, startTransition as startTransition4, useCallback as useCallback12, useContext as useContext20, useEffect as useEffect16, useLayoutEffect as useLayoutEffect7, useMemo as useMemo11, useRef as useRef18 } from \"react\";\n\n// ../../library/src/router/getPageviewEventData.ts\nfunction getPageviewEventData({\n  framerSiteId,\n  routeId,\n  routePath,\n  collectionItemId,\n  localeCode\n}) {\n  return {\n    framerSiteId,\n    routePath: routePath || \"/\",\n    collectionItemId,\n    framerLocale: localeCode,\n    webPageId: routeId\n  };\n}\n\n// ../../library/src/router/isSamePage.ts\nfunction isSamePage(a, b) {\n  if (a.routeId !== b.routeId)\n    return false;\n  if (a.pathVariables === b.pathVariables)\n    return true;\n  const aPathVariables = a.pathVariables || {};\n  const bPathVariables = b.pathVariables || {};\n  return aPathVariables.length === bPathVariables.length && Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);\n}\n\n// ../../library/src/router/types.ts\nvar defaultLocaleId = \"default\";\n\n// ../../library/src/router/useForceUpdate.ts\nimport React63 from \"react\";\nfunction useForceUpdate3() {\n  const [_, setForcedRenderCount] = React63.useState(0);\n  return [_, React63.useCallback(() => setForcedRenderCount((v) => v + 1), [])];\n}\n\n// ../../library/src/router/Router.tsx\nimport { jsx as jsx59, jsxs as jsxs15 } from \"react/jsx-runtime\";\nfunction updateScrollPosition(hash2, smoothScroll, isHistoryTransition) {\n  const element = hash2 && document.getElementById(hash2);\n  if (element) {\n    scrollElementIntoView(element, smoothScroll);\n    return;\n  }\n  if (isHistoryTransition)\n    return;\n  window.scrollTo(0, 0);\n}\nfunction useScheduleRenderSideEffects(dep) {\n  const actions = useRef18([]);\n  useLayoutEffect7(() => {\n    var _a;\n    if (!((_a = actions.current) == null ? void 0 : _a.length))\n      return;\n    actions.current.forEach((action) => action());\n    actions.current = [];\n  }, [dep]);\n  return useCallback12((cb) => {\n    actions.current.push(cb);\n  }, []);\n}\nfunction useNavigationTransition(enableAsyncURLUpdates) {\n  const startNativeSpinner = useNativeLoadingSpinner();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change\");\n  const navigationController = useRef18(void 0);\n  return useCallback12(\n    async (transitionFn, updateURL, isAbortable = true) => {\n      var _a;\n      setHydrationDone();\n      const hasUpdateURL = updateURL !== void 0;\n      if (!enableAsyncURLUpdates) {\n        if (hasUpdateURL)\n          await updateURL();\n        transitionFn();\n        void monitorNextPaintAfterRender();\n        return new Promise((resolve) => {\n          resolve();\n        });\n      }\n      (_a = navigationController.current) == null ? void 0 : _a.abort();\n      const controller = isAbortable ? new AbortController() : void 0;\n      navigationController.current = controller;\n      const signal = controller == null ? void 0 : controller.signal;\n      const nextRender = monitorNextPaintAfterRender();\n      if (!hasUpdateURL) {\n        navigationController.current = void 0;\n        transitionFn(signal);\n        return nextRender;\n      }\n      let resolveNavigationPromise;\n      const navigationPromise = new Promise((resolve, reject) => {\n        resolveNavigationPromise = resolve;\n        if (signal == null ? void 0 : signal.aborted)\n          reject();\n        else\n          signal == null ? void 0 : signal.addEventListener(\"abort\", reject);\n      });\n      await interactionResponse({ priority: \"user-blocking\", signal }).catch(noop);\n      transitionFn(signal);\n      startNativeSpinner(navigationPromise, updateURL, controller);\n      return nextRender.then(() => {\n        resolveNavigationPromise();\n      });\n    },\n    [enableAsyncURLUpdates, monitorNextPaintAfterRender, startNativeSpinner]\n  );\n}\nfunction Router({\n  defaultPageStyle,\n  disableHistory,\n  initialPathVariables,\n  initialRoute,\n  notFoundPage,\n  collectionUtils,\n  routes,\n  initialLocaleId,\n  locales = EMPTY_ARRAY,\n  preserveQueryParams = false,\n  enableAsyncURLUpdates = false,\n  LayoutTemplate,\n  editorBar,\n  siteCanonicalURL\n}) {\n  useMarkRouterEffects();\n  useReplaceInitialState({\n    disabled: disableHistory,\n    routeId: initialRoute,\n    initialPathVariables,\n    initialLocaleId\n  });\n  const startViewTransition2 = useViewTransition();\n  const [dep, forceUpdate] = useForceUpdate3();\n  const scheduleSideEffect = useScheduleRenderSideEffects(dep);\n  const startNavigation = useNavigationTransition(enableAsyncURLUpdates);\n  const skipFirstPageView = useRef18(true);\n  const currentRouteRef = useRef18(initialRoute);\n  const currentPathVariablesRef = useRef18(initialPathVariables);\n  const currentLocaleIdRef = useRef18(initialLocaleId);\n  const currentLocaleId = currentLocaleIdRef.current;\n  const activeLocale = useMemo11(() => {\n    return locales.find(({ id }) => {\n      if (!currentLocaleId)\n        return id === defaultLocaleId;\n      return id === currentLocaleId;\n    }) ?? null;\n  }, [currentLocaleId, locales]);\n  const localeInfo = useMemo11(() => {\n    return {\n      activeLocale,\n      locales,\n      setLocale: async (localeOrLocaleId) => {\n        let localeId;\n        if (isString(localeOrLocaleId)) {\n          localeId = localeOrLocaleId;\n        } else if (isObject(localeOrLocaleId)) {\n          localeId = localeOrLocaleId.id;\n        }\n        const defaultLocale = locales.find(({ id }) => id === defaultLocaleId);\n        const nextLocale = locales.find(({ id }) => id === localeId);\n        if (!nextLocale)\n          return;\n        const currentRouteId2 = currentRouteRef.current;\n        const currentRoute2 = routes[currentRouteId2];\n        if (!currentRoute2)\n          return;\n        try {\n          const localeResult = await switchLocale({\n            currentLocale: activeLocale,\n            nextLocale,\n            route: currentRoute2,\n            routeId: currentRouteId2,\n            defaultLocale,\n            pathVariables: currentPathVariablesRef.current,\n            collectionUtils,\n            preserveQueryParams\n          });\n          if (!localeResult)\n            return;\n          const currentPathVariables2 = currentPathVariablesRef.current;\n          const currentStatePaginationInfo = isHistoryState(window.history.state) ? window.history.state.paginationInfo : void 0;\n          const currentPath = localeResult.path;\n          currentPathVariablesRef.current = localeResult.pathVariables;\n          currentLocaleIdRef.current = nextLocale.id;\n          const updateURL = async (ignorePushStateWrapper = false) => {\n            if (!currentPath)\n              return;\n            return pushHistoryState(\n              {\n                routeId: currentRouteId2,\n                pathVariables: currentPathVariables2,\n                localeId: nextLocale.id,\n                paginationInfo: currentStatePaginationInfo\n              },\n              currentPath,\n              // we yield in startNavigation before updating the URL, so yielding again is not needed.\n              false,\n              ignorePushStateWrapper\n            );\n          };\n          void startNavigation(\n            () => {\n              void startViewTransition2(\n                currentRouteId2,\n                currentRouteId2,\n                () => startTransition4(forceUpdate),\n                enableAsyncURLUpdates\n                // no signal here, because we update the refs above immediately\n              );\n            },\n            updateURL,\n            false\n          );\n        } catch {\n        }\n      }\n    };\n  }, [\n    activeLocale,\n    collectionUtils,\n    enableAsyncURLUpdates,\n    forceUpdate,\n    locales,\n    preserveQueryParams,\n    routes,\n    startNavigation,\n    startViewTransition2\n  ]);\n  const setCurrentRouteId = useCallback12(\n    (routeId, localeId, hash2, pathVariables, isHistoryTransition, smoothScroll = false, updateURL) => {\n      const currentRouteId2 = currentRouteRef.current;\n      currentRouteRef.current = routeId;\n      currentPathVariablesRef.current = pathVariables;\n      currentLocaleIdRef.current = localeId;\n      scheduleSideEffect(() => {\n        updateScrollPosition(hash2, smoothScroll, isHistoryTransition);\n      });\n      if (isHistoryTransition) {\n        startTransition4(forceUpdate);\n        return;\n      }\n      void startNavigation((signal) => {\n        void startViewTransition2(\n          currentRouteId2,\n          routeId,\n          () => startTransition4(forceUpdate),\n          enableAsyncURLUpdates,\n          signal\n        );\n      }, updateURL);\n    },\n    [enableAsyncURLUpdates, forceUpdate, scheduleSideEffect, startNavigation, startViewTransition2]\n  );\n  usePopStateHandler(currentRouteRef, setCurrentRouteId);\n  const navigate = useCallback12(\n    async (routeId, hash2, pathVariables, smoothScroll) => {\n      var _a;\n      const newRoute = routes[routeId];\n      if (pathVariables) {\n        const inUse = /* @__PURE__ */ new Set();\n        const path = (newRoute == null ? void 0 : newRoute.path) ?? \"/\";\n        for (const match of path.matchAll(pathVariablesRegExp)) {\n          const usedVariable = match[1];\n          if (usedVariable === void 0) {\n            throw new Error(\"A matching path variable should not be undefined\");\n          }\n          inUse.add(usedVariable);\n        }\n        pathVariables = Object.fromEntries(Object.entries(pathVariables).filter(([key7]) => inUse.has(key7)));\n      }\n      const routeElementId = getRouteElementId(newRoute, hash2);\n      const currentPathVariables2 = currentPathVariablesRef.current;\n      const currentRouteLocaleId = currentLocaleIdRef.current;\n      if (isSamePage(\n        { routeId: currentRouteRef.current, pathVariables: currentPathVariables2 },\n        { routeId, pathVariables }\n      )) {\n        const route = routes[routeId];\n        if (((_a = window.history.state) == null ? void 0 : _a.hash) !== hash2 && !disableHistory && route) {\n          await pushRouteState(\n            routeId,\n            route,\n            {\n              currentRoutePath: route.path,\n              currentPathVariables: currentPathVariables2,\n              pathVariables,\n              hash: hash2,\n              localeId: currentRouteLocaleId,\n              preserveQueryParams,\n              siteCanonicalURL\n            },\n            // we want to yield as this is called synchronusly from an user interaction.\n            enableAsyncURLUpdates\n          );\n        }\n        updateScrollPosition(routeElementId, smoothScroll, false);\n        return;\n      }\n      if (!newRoute)\n        return;\n      const currentRoute2 = routes[currentRouteRef.current];\n      const updateURL = async (ignorePushStateWrapper = false) => pushRouteState(\n        routeId,\n        newRoute,\n        {\n          currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,\n          currentPathVariables: currentPathVariables2,\n          hash: hash2,\n          pathVariables,\n          localeId: currentRouteLocaleId,\n          preserveQueryParams,\n          siteCanonicalURL\n        },\n        // we yield in startNavigation before updating the URL, so yielding again is not needed.\n        false,\n        ignorePushStateWrapper\n      );\n      setCurrentRouteId(\n        routeId,\n        currentRouteLocaleId,\n        routeElementId,\n        pathVariables,\n        false,\n        smoothScroll,\n        disableHistory ? void 0 : updateURL\n      );\n    },\n    [routes, setCurrentRouteId, disableHistory, preserveQueryParams, enableAsyncURLUpdates, siteCanonicalURL]\n  );\n  const getRoute = useGetRouteCallback(routes);\n  const currentRouteId = currentRouteRef.current;\n  const currentPathVariables = currentPathVariablesRef.current;\n  const currentRoute = routes[currentRouteId];\n  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;\n  const framerSiteId = useContext20(FormContext);\n  const pageviewEventData = useRef18();\n  const { newTrackingEvents } = useLibraryFeatures();\n  useEffect16(() => {\n    if (!newTrackingEvents)\n      return;\n    void (async () => {\n      var _a;\n      let collectionItemId = null;\n      if ((currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables) {\n        const utils = await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils));\n        const [slug] = Object.values(currentPathVariables);\n        if (utils && typeof slug === \"string\") {\n          collectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      pageviewEventData.current = getPageviewEventData({\n        framerSiteId: framerSiteId ?? null,\n        routeId: currentRouteId,\n        routePath: currentRoute == null ? void 0 : currentRoute.path,\n        collectionItemId,\n        localeCode: (activeLocale == null ? void 0 : activeLocale.code) || null\n      });\n      if (skipFirstPageView.current) {\n        skipFirstPageView.current = false;\n        return;\n      }\n      sendTrackingEvent(\"published_site_pageview\", pageviewEventData.current);\n    })();\n  }, [\n    newTrackingEvents,\n    framerSiteId,\n    currentRouteId,\n    currentRoute,\n    activeLocale,\n    currentPathVariables,\n    collectionUtils\n  ]);\n  const api = useMemo11(\n    () => ({\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      pageviewEventData,\n      siteCanonicalURL\n    }),\n    [\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      siteCanonicalURL\n    ]\n  );\n  if (!currentRoute) {\n    throw new Error(`Router cannot find route for ${currentRouteId}`);\n  }\n  const pageExistsInCurrentLocale = !activeLocale || !currentRoute.includedLocales || currentRoute.includedLocales.includes(activeLocale.id);\n  const pathWithFilledVariables = currentRoutePath && currentPathVariables ? fillPathVariables(currentRoutePath, currentPathVariables) : currentRoutePath;\n  const remountKey = String(currentLocaleId) + pathWithFilledVariables;\n  const templatePageStyle = useConstant(() => ({ ...defaultPageStyle, display: \"contents\" }));\n  return /* @__PURE__ */ jsx59(RouterAPIProvider, { api, children: /* @__PURE__ */ jsx59(LocaleInfoContext.Provider, { value: localeInfo, children: /* @__PURE__ */ jsxs15(SuspenseThatPreservesDom, { children: [\n    /* @__PURE__ */ jsxs15(\n      NotFoundErrorBoundary,\n      {\n        notFoundPage,\n        defaultPageStyle,\n        forceUpdateKey: dep,\n        children: [\n          /* @__PURE__ */ jsx59(MarkSuspenseEffects.Start, {}),\n          /* @__PURE__ */ jsx59(\n            WithLayoutTemplate,\n            {\n              LayoutTemplate,\n              routeId: currentRouteId,\n              style: defaultPageStyle,\n              children: (inLayoutTemplate) => {\n                return /* @__PURE__ */ jsx59(Fragment9, { children: pageExistsInCurrentLocale ? renderPage(\n                  currentRoute.page,\n                  inLayoutTemplate ? templatePageStyle : defaultPageStyle\n                ) : (\n                  // LAYOUT_TEMPLATE @TODO: display: content for not found page?\n                  notFoundPage && renderPage(notFoundPage, defaultPageStyle)\n                ) }, remountKey);\n              }\n            }\n          )\n        ]\n      }\n    ),\n    editorBar,\n    /* @__PURE__ */ jsx59(TurnOnReactEventHandling, {}),\n    /* @__PURE__ */ jsx59(MarkSuspenseEffects.End, {})\n  ] }) }) });\n}\nfunction WithLayoutTemplate({ LayoutTemplate, routeId, style, children }) {\n  if (!LayoutTemplate)\n    return children(false);\n  return /* @__PURE__ */ jsx59(LayoutTemplate, { routeId, style, children });\n}\nfunction scrollElementIntoView(element, smoothScroll) {\n  const scrollIntoViewOptions = smoothScroll ? { behavior: \"smooth\", block: \"start\", inline: \"nearest\" } : void 0;\n  element.scrollIntoView(scrollIntoViewOptions);\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport * as React64 from \"react\";\n\n// ../../library/src/render/utils/preloadImage.ts\nfunction preloadImage(url) {\n  return new Promise((resolve, reject) => {\n    try {\n      new URL(url);\n      const image = new Image();\n      image.onload = () => resolve();\n      image.onerror = reject;\n      image.src = url;\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n\n// ../../library/src/utils/getPropertyByPath.ts\nfunction isObjectOrArray(value) {\n  return typeof value === \"object\" && value !== null;\n}\nfunction getPropertyByPath(input, keyPath) {\n  if (keyPath === \"\") {\n    return input;\n  }\n  const keyParts = keyPath.split(/[.[\\]]+/u).filter((part) => part.length > 0);\n  let current = input;\n  for (const part of keyParts) {\n    if (!isObjectOrArray(current)) {\n      return void 0;\n    }\n    current = current[part];\n  }\n  return current;\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport { jsx as jsx60 } from \"react/jsx-runtime\";\nfunction getRequestCacheKey(value) {\n  return `${value.credentials}:${value.url}`;\n}\nvar loadingFetchResult = {\n  status: \"loading\",\n  data: void 0\n};\nfunction isNumberString(value) {\n  return isString(value) && !Number.isNaN(Number(value));\n}\nfunction isValidFetchDataValueResult(type, value) {\n  switch (type) {\n    case \"string\" /* String */:\n      return isString(value) || isNumber(value);\n    case \"color\" /* Color */:\n      return isString(value);\n    case \"boolean\" /* Boolean */:\n      return isBoolean(value);\n    case \"number\" /* Number */:\n      return isNumber(value) || isNumberString(value);\n    case \"link\" /* Link */:\n    case \"image\" /* Image */:\n      return isString(value) && isValidURL(value, false);\n    default: {\n      const _ = type;\n      return false;\n    }\n  }\n}\nfunction resolveFetchDataValue(result, request) {\n  if (result.status === \"loading\") {\n    return request.fallbackValue;\n  }\n  if (result.status === \"error\") {\n    throw result.error;\n  }\n  const resolvedValue = getPropertyByPath(result.data, request.resultKeyPath);\n  if (isUndefined(resolvedValue)) {\n    throw new Error(`Key '${request.resultKeyPath}' not found in response`);\n  }\n  if (!isValidFetchDataValueResult(request.resultOutputType, resolvedValue)) {\n    throw new Error(`Resolved value '${resolvedValue}' is not valid for type '${request.resultOutputType}'`);\n  }\n  return resolvedValue;\n}\nfunction isCacheExpired(insertionTimestamp, cacheDuration) {\n  if (RenderTarget.current() === RenderTarget.canvas) {\n    return false;\n  }\n  const cacheDurationMs = cacheDuration === 0 ? (\n    // When the cache is set to 0 seconds we set use a 500ms cache delay\n    // to avoid triggering refetching when a variant switches from\n    // preloading to rendering the component (and\n    // resubscribing to the fetch client). When another component\n    // relying on the same endpoint (eg another page) is mounted again\n    // and the cache time is set to 0, the the data will be fetched\n    // again.\n    500\n  ) : cacheDuration * 1e3;\n  const currentTimestamp = Date.now();\n  const expirationTimestamp = insertionTimestamp + cacheDurationMs;\n  return currentTimestamp >= expirationTimestamp;\n}\nvar noop3 = () => {\n};\nvar _subscribers, _preloadedRequests, _shortestCacheDurations, _cachedAt, _ongoingFetches, _staleQueriesInterval;\nvar _FetchClient = class {\n  constructor() {\n    // A map of FetchResult values for each URL\n    __publicField(this, \"responseValues\", /* @__PURE__ */ new Map());\n    // A map of URLs to their subscribers\n    __privateAdd(this, _subscribers, /* @__PURE__ */ new Map());\n    // A set of requests that have been preloaded by a loading variant\n    __privateAdd(this, _preloadedRequests, /* @__PURE__ */ new Set());\n    // Map for how long to cache the response for (in seconds)\n    __privateAdd(this, _shortestCacheDurations, /* @__PURE__ */ new Map());\n    // Map containing a timestamp when a URL was inserted into the cache\n    __privateAdd(this, _cachedAt, /* @__PURE__ */ new Map());\n    // Map of promises for requests that are currently in flight\n    __privateAdd(this, _ongoingFetches, /* @__PURE__ */ new Map());\n    // An ID for an interval that checks for stale queries and refetches\n    __privateAdd(this, _staleQueriesInterval, /* @__PURE__ */ new Map());\n    __publicField(this, \"persistCache\", debounce(() => {\n      const data2 = {};\n      for (const [url, responseValue] of this.responseValues) {\n        if (!responseValue)\n          continue;\n        if (responseValue.status !== \"success\")\n          continue;\n        const cacheConfig = __privateGet(this, _shortestCacheDurations).get(url);\n        if (!cacheConfig || cacheConfig === 0)\n          continue;\n        const storedAt = __privateGet(this, _cachedAt).get(url);\n        if (!storedAt)\n          continue;\n        if (storedAt && isCacheExpired(storedAt, cacheConfig)) {\n          continue;\n        }\n        data2[url] = [storedAt, cacheConfig, responseValue.data];\n      }\n      try {\n        localStorage.setItem(_FetchClient.cacheKey, JSON.stringify(data2));\n      } catch {\n      }\n    }, 500));\n  }\n  unmount() {\n    for (const [key7, interval] of __privateGet(this, _staleQueriesInterval)) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(key7);\n    }\n  }\n  stopQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const interval = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    if (interval) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(cacheKey);\n    }\n  }\n  /**\n   * Start an interval for the given request to refresh the value\n   * depending on the shortest configured cache duration for that request.\n   */\n  startQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const currentIntervalForRequest = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    const shortestCacheDuration = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (currentIntervalForRequest)\n      return;\n    if (!shortestCacheDuration)\n      return;\n    const interval = safeWindow.setInterval(() => {\n      if (document.visibilityState === \"hidden\")\n        return;\n      const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n      if (!shortestCacheDuration || !cachedAt)\n        return;\n      void this.fetchWithCache({\n        ...request,\n        cacheDuration: shortestCacheDuration\n      });\n    }, shortestCacheDuration);\n    __privateGet(this, _staleQueriesInterval).set(cacheKey, interval);\n  }\n  hydrateCache() {\n    try {\n      const rawData = localStorage.getItem(_FetchClient.cacheKey);\n      if (!rawData)\n        return;\n      const data2 = JSON.parse(rawData);\n      if (typeof data2 !== \"object\")\n        throw new Error(\"Invalid cache data\");\n      for (const cacheKey in data2) {\n        const cached = data2[cacheKey];\n        if (!Array.isArray(cached) || cached.length !== 3)\n          throw new Error(\"Invalid cache data\");\n        const [storedAt, cacheDuration, cachedData] = cached;\n        if (isCacheExpired(storedAt, cacheDuration))\n          continue;\n        __privateGet(this, _cachedAt).set(cacheKey, storedAt);\n        __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n        this.responseValues.set(cacheKey, { status: \"success\", data: cachedData });\n      }\n    } catch (error) {\n      try {\n        localStorage.removeItem(_FetchClient.cacheKey);\n      } catch {\n      }\n    }\n  }\n  setResponseValue(cacheKey, value) {\n    this.responseValues.set(cacheKey, value);\n    this.persistCache();\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    if (!subscribers)\n      return;\n    for (const subscriber of subscribers) {\n      subscriber();\n    }\n  }\n  async prefetch(request) {\n    if (!isBrowser2())\n      return;\n    if (!isValidURL(request.url, false))\n      return;\n    const cacheKey = getRequestCacheKey(request);\n    __privateGet(this, _preloadedRequests).add(cacheKey);\n    await this.fetchWithCache(request);\n    const result = this.getValue(cacheKey);\n    if (!result || result.status === \"loading\") {\n      throw new Error(\"Unexpected result status for prefetch\");\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    for (const subscriber of subscribers ?? []) {\n      subscriber();\n    }\n    const resolvedValue = resolveFetchDataValue(result, request);\n    if (request.resultOutputType === \"image\" /* Image */ && isString(resolvedValue)) {\n      await preloadImage(resolvedValue).catch(noop3);\n    }\n    return resolvedValue;\n  }\n  async fetchWithCache(request) {\n    if (!isBrowser2())\n      return;\n    const cacheKey = getRequestCacheKey(request);\n    const ongoingFetch = __privateGet(this, _ongoingFetches).get(cacheKey);\n    if (ongoingFetch)\n      return ongoingFetch;\n    const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n    const hasExpiredCache = cachedAt && isCacheExpired(cachedAt, request.cacheDuration);\n    if (this.responseValues.has(cacheKey) && !hasExpiredCache) {\n      return;\n    }\n    const currentValue = this.responseValues.get(cacheKey);\n    if (!currentValue) {\n      this.setResponseValue(cacheKey, loadingFetchResult);\n    }\n    const doFetch = async () => {\n      try {\n        const response = await fetch(request.url, {\n          method: \"GET\",\n          credentials: request.credentials\n        });\n        if (!response.ok) {\n          this.setResponseValue(cacheKey, {\n            status: \"error\",\n            error: new Error(\"Invalid Response Status\"),\n            data: void 0\n          });\n          return;\n        }\n        const value = await response.json();\n        this.setResponseValue(cacheKey, { status: \"success\", data: value });\n        __privateGet(this, _cachedAt).set(cacheKey, Date.now());\n      } catch (error) {\n        this.setResponseValue(cacheKey, { status: \"error\", error, data: void 0 });\n      }\n    };\n    const promise = doFetch();\n    __privateGet(this, _ongoingFetches).set(cacheKey, promise);\n    void promise.finally(() => {\n      __privateGet(this, _ongoingFetches).delete(cacheKey);\n    });\n    return promise;\n  }\n  getValue(cacheKey, onlyIfPrefetched = false) {\n    if (onlyIfPrefetched && !__privateGet(this, _preloadedRequests).has(cacheKey))\n      return void 0;\n    return this.responseValues.get(cacheKey);\n  }\n  subscribe(request, callback, skipFetchRequest = false) {\n    const { url, cacheDuration } = request;\n    if (!isValidURL(url, false))\n      return noop3;\n    const cacheKey = getRequestCacheKey(request);\n    const cacheDurationForUrl = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (!cacheDurationForUrl || cacheDuration < cacheDurationForUrl) {\n      __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n    }\n    if (!skipFetchRequest) {\n      this.startQueryRefetching(request);\n      void this.fetchWithCache(request);\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey) ?? /* @__PURE__ */ new Set();\n    subscribers.add(callback);\n    __privateGet(this, _subscribers).set(cacheKey, subscribers);\n    return () => {\n      const nextSubscribers = __privateGet(this, _subscribers).get(cacheKey);\n      if (!nextSubscribers)\n        return;\n      nextSubscribers.delete(callback);\n      if (nextSubscribers.size === 0) {\n        __privateGet(this, _subscribers).delete(cacheKey);\n      }\n      if (__privateGet(this, _subscribers).size === 0) {\n        this.stopQueryRefetching(request);\n      }\n    };\n  }\n};\nvar FetchClient = _FetchClient;\n_subscribers = new WeakMap();\n_preloadedRequests = new WeakMap();\n_shortestCacheDurations = new WeakMap();\n_cachedAt = new WeakMap();\n_ongoingFetches = new WeakMap();\n_staleQueriesInterval = new WeakMap();\n__publicField(FetchClient, \"cacheKey\", \"framer-fetch-client-cache\");\nvar FetchClientContext = /* @__PURE__ */ React64.createContext(void 0);\nvar IsRestoringCacheContext = /* @__PURE__ */ React64.createContext(true);\nvar FetchClientProvider = ({\n  children,\n  client: initialClient\n}) => {\n  const [client] = React64.useState(() => initialClient ?? new FetchClient());\n  const [isRestoring, setIsRestoring] = React64.useState(true);\n  React64.useEffect(() => {\n    client.hydrateCache();\n    React64.startTransition(() => {\n      setIsRestoring(false);\n    });\n    return () => client.unmount();\n  }, [client]);\n  return /* @__PURE__ */ jsx60(IsRestoringCacheContext.Provider, { value: isRestoring, children: /* @__PURE__ */ jsx60(FetchClientContext.Provider, { value: client, children }) });\n};\nvar _subscriptions, _subscribers2, _results, _SSRResults, _onlyPrefetched;\nvar RequestsObserver = class {\n  constructor(client, requests) {\n    this.client = client;\n    this.requests = requests;\n    // a map of subscriptions on the FetchClient\n    __privateAdd(this, _subscriptions, /* @__PURE__ */ new Map());\n    // A set of subscribers to requests of the observer\n    __privateAdd(this, _subscribers2, /* @__PURE__ */ new Set());\n    // The results of the susbcribed requests\n    __privateAdd(this, _results, void 0);\n    // getServerSnapshot is also called on the Client while the tree is hydrating.\n    // It is important to always return the same value or hydration warnings will occur.\n    __privateAdd(this, _SSRResults, void 0);\n    // When the RequestsObserver mounts we allow reading prefetched values.\n    // This is to support Text FX on mount for requests that were prefetched.\n    __privateAdd(this, _onlyPrefetched, true);\n    __publicField(this, \"updateResults\", () => {\n      const data2 = [];\n      const statuses = /* @__PURE__ */ new Set();\n      const errors = [];\n      for (const request of this.requests) {\n        const cachekey = getRequestCacheKey(request);\n        const value = this.client.getValue(cachekey, __privateGet(this, _onlyPrefetched));\n        if (!value) {\n          statuses.add(\"loading\");\n          data2.push(request.fallbackValue);\n          continue;\n        }\n        statuses.add(value.status);\n        try {\n          const resolvedValue = resolveFetchDataValue(value, request);\n          data2.push(resolvedValue);\n        } catch (error) {\n          data2.push(!isUndefined(request.errorFallbackValue) ? request.errorFallbackValue : request.fallbackValue);\n          errors.push(error);\n        }\n      }\n      const status = statuses.has(\"error\") ? \"error\" : statuses.has(\"loading\") ? \"loading\" : \"success\";\n      const result = { status, data: data2 };\n      if (!isEqual(result, __privateGet(this, _results))) {\n        __privateSet(this, _results, result);\n        if (errors.length > 0 && !statuses.has(\"loading\") && __privateGet(this, _subscribers2).size > 0) {\n          console.error(\"Fetch failed: \" + errors.join(\"\\n\"));\n        }\n      }\n      for (const subscriber of __privateGet(this, _subscribers2)) {\n        subscriber();\n      }\n    });\n    __publicField(this, \"subscribe\", (callback) => {\n      __privateGet(this, _subscribers2).add(callback);\n      this.updateResults();\n      return () => {\n        __privateGet(this, _subscribers2).delete(callback);\n      };\n    });\n    __publicField(this, \"getServerResults\", () => {\n      return __privateGet(this, _SSRResults);\n    });\n    __publicField(this, \"getResults\", () => {\n      return __privateGet(this, _results);\n    });\n    this.setRequests(requests, { onlyPrefetched: true });\n    __privateSet(this, _SSRResults, { status: \"loading\", data: requests.map((request) => request.fallbackValue) });\n    __privateSet(this, _results, __privateGet(this, _SSRResults));\n  }\n  setRequests(requests, { onlyPrefetched = false }) {\n    var _a;\n    const lastRequests = this.requests;\n    this.requests = requests;\n    const requestsByCacheKey = new Map(requests.map((request) => [getRequestCacheKey(request), request]));\n    const nextSubscribedKeys = Array.from(requestsByCacheKey.keys());\n    const hasOnlyPrefetchedChange = __privateGet(this, _onlyPrefetched) !== onlyPrefetched;\n    if (!onlyPrefetched)\n      __privateSet(this, _onlyPrefetched, false);\n    const hasSubscriptionChange = nextSubscribedKeys.length !== __privateGet(this, _subscriptions).size || nextSubscribedKeys.some((url) => !__privateGet(this, _subscriptions).has(url));\n    if (!hasSubscriptionChange && !hasOnlyPrefetchedChange) {\n      if (!isEqual(lastRequests, requests)) {\n        this.updateResults();\n      }\n      return;\n    }\n    for (const url of __privateGet(this, _subscriptions).keys()) {\n      (_a = __privateGet(this, _subscriptions).get(url)) == null ? void 0 : _a();\n      __privateGet(this, _subscriptions).delete(url);\n    }\n    for (const cacheKey of nextSubscribedKeys) {\n      const requestConfig = requestsByCacheKey.get(cacheKey);\n      if (!requestConfig)\n        continue;\n      const unsubscribe = this.client.subscribe(requestConfig, this.updateResults, onlyPrefetched);\n      __privateGet(this, _subscriptions).set(cacheKey, unsubscribe);\n    }\n    if (__privateGet(this, _subscribers2).size === 0)\n      return;\n    this.updateResults();\n  }\n  unmount() {\n    for (const unsubscribe of __privateGet(this, _subscribers2)) {\n      unsubscribe();\n    }\n    for (const unsubscribe of __privateGet(this, _subscriptions).values()) {\n      unsubscribe();\n    }\n  }\n};\n_subscriptions = new WeakMap();\n_subscribers2 = new WeakMap();\n_results = new WeakMap();\n_SSRResults = new WeakMap();\n_onlyPrefetched = new WeakMap();\nfunction useFetchRequests(requests, disabled) {\n  const fetchClient = React64.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  const isRestoringCache = React64.useContext(IsRestoringCacheContext);\n  const [observer] = React64.useState(() => new RequestsObserver(fetchClient, requests));\n  const [result, setResult] = React64.useState(() => observer.getServerResults());\n  React64.useLayoutEffect(() => {\n    if (disabled)\n      return;\n    observer.setRequests(requests, { onlyPrefetched: false });\n  }, [requests, observer, disabled]);\n  React64.useEffect(() => {\n    if (isRestoringCache || disabled)\n      return;\n    const unsubscribe = observer.subscribe(() => {\n      React64.startTransition(() => {\n        setResult(observer.getResults());\n      });\n    });\n    return () => {\n      unsubscribe();\n      observer.unmount();\n    };\n  }, [observer, disabled, isRestoringCache]);\n  return result;\n}\nfunction usePrefetch() {\n  const fetchClient = React64.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  return React64.useCallback((request) => fetchClient.prefetch(request), [fetchClient]);\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport { jsx as jsx61 } from \"react/jsx-runtime\";\nfunction PageRoot({\n  RootComponent,\n  isWebsite,\n  routeId,\n  framerSiteId,\n  pathVariables,\n  routes,\n  collectionUtils,\n  notFoundPage,\n  isReducedMotion = false,\n  includeDataObserver = false,\n  localeId,\n  locales,\n  preserveQueryParams,\n  EditorBar,\n  defaultPageStyle,\n  disableHistory,\n  LayoutTemplate,\n  siteCanonicalURL\n}) {\n  const { enableAsyncURLUpdates } = useLibraryFeatures();\n  React65.useEffect(() => {\n    if (isWebsite)\n      return;\n    MainLoop.start();\n  }, []);\n  if (isWebsite) {\n    return /* @__PURE__ */ jsx61(MotionConfig, { reducedMotion: isReducedMotion ? \"user\" : \"never\", children: /* @__PURE__ */ jsx61(FetchClientProvider, { children: /* @__PURE__ */ jsx61(CustomCursorHost, { children: /* @__PURE__ */ jsx61(FormContext.Provider, { value: framerSiteId, children: /* @__PURE__ */ jsx61(\n      Router,\n      {\n        initialRoute: routeId,\n        initialPathVariables: pathVariables,\n        initialLocaleId: localeId,\n        routes,\n        collectionUtils,\n        notFoundPage,\n        locales,\n        defaultPageStyle: defaultPageStyle ?? { minHeight: \"100vh\", width: \"auto\" },\n        preserveQueryParams,\n        enableAsyncURLUpdates,\n        editorBar: /* @__PURE__ */ jsx61(EditorBarLauncher, { EditorBar }),\n        disableHistory,\n        LayoutTemplate,\n        siteCanonicalURL\n      }\n    ) }) }) }) });\n  } else {\n    const Wrapper = includeDataObserver ? DataObserver : React65.Fragment;\n    return /* @__PURE__ */ jsx61(Wrapper, { children: /* @__PURE__ */ jsx61(RoutesProvider, { routes, children: /* @__PURE__ */ jsx61(NavigationWrapper, { children: React65.isValidElement(RootComponent) ? RootComponent : React65.createElement(\n      // @ts-expect-error to figure out how to type this properly, as tests are using different\n      // $$typeof symbol and isValidElement fails\n      RootComponent,\n      { key: routeId }\n    ) }) }) });\n  }\n}\nfunction EditorBarLauncher({ EditorBar }) {\n  const libraryFeatures = useLibraryFeatures();\n  const [mounted, setMounted] = useState6(false);\n  const framerSiteId = useContext22(FormContext);\n  const editorBarFeatures = useMemo12(() => {\n    const features = {};\n    let key7;\n    for (key7 in libraryFeatures) {\n      if (libraryFeatures.hasOwnProperty(key7) && key7.startsWith(\"editorBar\")) {\n        features[key7] = libraryFeatures[key7];\n      }\n    }\n    return features;\n  }, [libraryFeatures]);\n  useEffect18(() => {\n    startTransition6(() => {\n      setMounted(true);\n    });\n  }, []);\n  if (!EditorBar || !framerSiteId || !mounted)\n    return null;\n  return /* @__PURE__ */ jsx61(IgnoreErrors, { children: /* @__PURE__ */ jsx61(Suspense4, { children: /* @__PURE__ */ jsx61(EditorBar, { framerSiteId, features: editorBarFeatures }) }) });\n}\n\n// ../../library/src/modules/ResolveLinks.tsx\nimport { forwardRef as forwardRef5 } from \"react\";\nvar ResolveLinks = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef5(function ResolveLinksInner({ links, children, ...rest }, ref) {\n    const router = useRouter();\n    const { activeLocale } = useLocaleInfo();\n    const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n    const promises = [];\n    const resolvedLinks = links.map((link) => {\n      if (!link)\n        return void 0;\n      if (isString(link))\n        return resolveLinkInternal(link, router);\n      return resolveLinkInternal(\n        link.href,\n        router,\n        link.implicitPathVariables,\n        link.refKey,\n        (unresolvedPathSlugs, unresolvedHashSlugs) => {\n          function handleSlugs(slugs) {\n            const result = {};\n            for (const slugKey in slugs) {\n              const unresolvedSlug = slugs[slugKey];\n              assert(router.collectionUtils, \"collectionUtils should be defined\");\n              assert(unresolvedSlug, \"unresolvedSlug be defined\");\n              const lazyValue = resolveSlug(unresolvedSlug, router.collectionUtils, activeLocale);\n              const promise = lazyValue.preload();\n              if (promise) {\n                promises.push(promise);\n              } else {\n                const resolvedValue = lazyValue.read();\n                if (resolvedValue) {\n                  result[slugKey] = resolvedValue;\n                }\n              }\n            }\n            return result;\n          }\n          return {\n            path: handleSlugs(unresolvedPathSlugs),\n            hash: handleSlugs(unresolvedHashSlugs)\n          };\n        }\n      );\n    });\n    if (promises.length > 0) {\n      throw Promise.allSettled(promises);\n    }\n    const childrenWithLinks = children(resolvedLinks);\n    return cloneWithPropsAndRef(childrenWithLinks, rest);\n  })\n);\n\n// ../../library/src/modules/Fetcher.tsx\nimport * as React66 from \"react\";\nvar Fetcher = /* @__PURE__ */ React66.forwardRef(function Fetcher2({ requests, disabled, children, ...rest }, ref) {\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  const { data: data2, status } = useFetchRequests(requests, disabled);\n  const childrenWithValues = children(data2, status);\n  return cloneWithPropsAndRef(childrenWithValues, rest);\n});\n\n// ../../library/src/modules/callEach.ts\nvar callEach = (...fns) => fns.forEach((fn) => fn && fn());\n\n// ../../library/src/utils/getLogger.ts\nfunction getLogger(name) {\n  return {\n    trace(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.trace(...args);\n    },\n    debug(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.debug(...args);\n    },\n    info(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.info(...args);\n    },\n    warn(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.warn(...args);\n    },\n    error(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.error(...args);\n    }\n  };\n}\n\n// ../../library/src/modules/cms/types.ts\nfunction isAnyCollection(value) {\n  return isAnyLegacyCollection(value) || isAnyDatabaseCollection(value);\n}\nfunction isLegacyCollection(value) {\n  return isArray(value) && value.every(isObject);\n}\nfunction isLegacyLocalizedCollection(value) {\n  return isObject(value) && isFunction(value.read) && isFunction(value.preload);\n}\nfunction isAnyLegacyCollection(value) {\n  return isLegacyCollection(value) || isLegacyLocalizedCollection(value);\n}\nfunction isDatabaseCollection(value) {\n  return isObject(value) && isObject(value.schema);\n}\nfunction isLocalizedDatabaseCollection(value) {\n  return isObject(value) && isObject(value.collectionByLocaleId);\n}\nfunction isAnyDatabaseCollection(value) {\n  return isDatabaseCollection(value) || isLocalizedDatabaseCollection(value);\n}\n\n// ../../library/src/modules/cms/CompatibilityDatabaseCollection.ts\nasync function getCollectionItems(collection, locale) {\n  if (isLegacyLocalizedCollection(collection)) {\n    await collection.preload(locale);\n    return collection.read(locale);\n  }\n  return collection;\n}\nvar CompatibilityDatabaseCollection = class {\n  constructor(collection, locale) {\n    this.collection = collection;\n    this.locale = locale;\n    __publicField(this, \"schema\");\n    __publicField(this, \"indexes\", []);\n    const propertyControls = getPropertyControls(collection);\n    assert(propertyControls, \"Collection does not have properties\");\n    const schema = {\n      id: {\n        type: \"string\" /* String */,\n        isNullable: false\n      }\n    };\n    const controlEntries = Object.entries(propertyControls);\n    for (const [key7, controlDescription] of controlEntries) {\n      if (!controlDescription)\n        continue;\n      const type = controlDescription.type;\n      assert(type !== \"array\" /* Array */, \"Array properties are not supported\");\n      assert(type !== \"object\" /* Object */, \"Object properties are not supported\");\n      schema[key7] = {\n        type,\n        isNullable: true\n      };\n    }\n    this.schema = schema;\n  }\n  getDatabaseItem(item, pointer) {\n    const data2 = {};\n    for (const key7 in this.schema) {\n      const value = item[key7];\n      if (isNullish(value))\n        continue;\n      const definition = this.schema[key7];\n      if (isUndefined(definition))\n        continue;\n      assert(definition.type !== \"unknown\", \"Invalid definition type\");\n      data2[key7] = {\n        type: definition.type,\n        value\n      };\n    }\n    return { pointer, data: data2 };\n  }\n  async resolveRichText(pointer) {\n    if (LazyValue.is(pointer)) {\n      const promise = pointer.preload();\n      if (promise)\n        await promise;\n      return pointer.read();\n    }\n    return pointer;\n  }\n  async scanItems() {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return items.map((item, index) => {\n      const pointer = String(index);\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  async resolveItems(pointers) {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return pointers.map((pointer) => {\n      const index = Number(pointer);\n      const item = items[index];\n      assert(item, \"Can't find collection item\");\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  compareItems(left, right) {\n    return Number(left.pointer) - Number(right.pointer);\n  }\n};\n\n// ../../library/src/modules/cms/DatabaseValue.ts\nfunction compareArray(left, right, collation11) {\n  const leftLength = left.value.length;\n  const rightLength = right.value.length;\n  if (leftLength < rightLength)\n    return -1;\n  if (leftLength > rightLength)\n    return 1;\n  for (let i = 0; i < leftLength; i++) {\n    const leftItem = left.value[i];\n    const rightItem = right.value[i];\n    const result = compare(leftItem, rightItem, collation11);\n    if (result !== 0)\n      return result;\n  }\n  return 0;\n}\nfunction castArray(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"array\" /* Array */: {\n      const result = value.value.map((item) => {\n        return DatabaseValue.cast(item, definition.definition);\n      });\n      return {\n        type: \"array\" /* Array */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareBoolean(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castBoolean(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"boolean\" /* Boolean */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value: Boolean(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToBoolean(value) {\n  const cast = castBoolean(value);\n  return (cast == null ? void 0 : cast.value) ?? false;\n}\nfunction compareColor(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castColor(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"color\" /* Color */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareDate(left, right) {\n  const leftDate = new Date(left.value);\n  const rightDate = new Date(right.value);\n  if (leftDate < rightDate)\n    return -1;\n  if (leftDate > rightDate)\n    return 1;\n  return 0;\n}\nfunction castDate(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"date\" /* Date */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const date = new Date(value.value);\n      if (isValidDate(date)) {\n        return {\n          type: \"date\" /* Date */,\n          value: date.toISOString()\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction compareEnum(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castEnum(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"enum\" /* Enum */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      return {\n        type: \"enum\" /* Enum */,\n        value: value.value\n      };\n    }\n  }\n  return null;\n}\nfunction compareFile(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castFile(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"file\" /* File */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareLink(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded)\n    return -1;\n  if (leftEncoded > rightEncoded)\n    return 1;\n  return 0;\n}\nfunction castLink(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"link\" /* Link */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      try {\n        const { protocol } = new URL(value.value);\n        if (protocol === \"http:\" || protocol === \"https:\") {\n          return {\n            type: \"link\" /* Link */,\n            value: value.value\n          };\n        }\n        return null;\n      } catch {\n        return null;\n      }\n    }\n  }\n  return null;\n}\nfunction compareNumber(left, right) {\n  if (left.value < right.value)\n    return -1;\n  if (left.value > right.value)\n    return 1;\n  return 0;\n}\nfunction castNumber(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const number = Number(value.value);\n      if (Number.isFinite(number)) {\n        return {\n          type: \"number\" /* Number */,\n          value: number\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction valueToNumber(value) {\n  const cast = castNumber(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nfunction compareObject(left, right, collation11) {\n  const leftKeys = Object.keys(left.value).sort();\n  const rightKeys = Object.keys(right.value).sort();\n  if (leftKeys.length < rightKeys.length)\n    return -1;\n  if (leftKeys.length > rightKeys.length)\n    return 1;\n  for (let i = 0; i < leftKeys.length; i++) {\n    const leftKey = leftKeys[i];\n    const rightKey = rightKeys[i];\n    if (leftKey < rightKey)\n      return -1;\n    if (leftKey > rightKey)\n      return 1;\n    const leftValue = left.value[leftKey] ?? null;\n    const rightValue = right.value[rightKey] ?? null;\n    const result = compare(leftValue, rightValue, collation11);\n    if (result !== 0)\n      return result;\n  }\n  return 0;\n}\nfunction castObject(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"object\" /* Object */: {\n      const result = {};\n      const definitionEntries = Object.entries(definition.definitions);\n      for (const [key7, itemDefinition] of definitionEntries) {\n        const item = value.value[key7] ?? null;\n        result[key7] = DatabaseValue.cast(item, itemDefinition);\n      }\n      return {\n        type: \"object\" /* Object */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareResponsiveImage(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded)\n    return -1;\n  if (leftEncoded > rightEncoded)\n    return 1;\n  return 0;\n}\nfunction castResponsiveImage(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareRichText(left, right) {\n  const leftValue = left.value;\n  const rightValue = right.value;\n  if (leftValue < rightValue)\n    return -1;\n  if (leftValue > rightValue)\n    return 1;\n  return 0;\n}\nfunction castRichText(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"richtext\" /* RichText */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareString(left, right, collation11) {\n  let leftValue = left.value;\n  let rightValue = right.value;\n  if (collation11.type === 0 /* CaseInsensitive */) {\n    leftValue = left.value.toLowerCase();\n    rightValue = right.value.toLowerCase();\n  }\n  if (leftValue < rightValue)\n    return -1;\n  if (leftValue > rightValue)\n    return 1;\n  return 0;\n}\nfunction castString(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"string\" /* String */: {\n      return value;\n    }\n    case \"number\" /* Number */: {\n      return {\n        type: \"string\" /* String */,\n        value: String(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToString(value) {\n  const cast = castString(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nvar DatabaseValue = {\n  /**\n   * Casts a value to a different type.\n   */\n  cast(value, definition) {\n    switch (definition.type) {\n      case \"array\" /* Array */:\n        return castArray(value, definition);\n      case \"boolean\" /* Boolean */:\n        return castBoolean(value);\n      case \"color\" /* Color */:\n        return castColor(value);\n      case \"date\" /* Date */:\n        return castDate(value);\n      case \"enum\" /* Enum */:\n        return castEnum(value);\n      case \"file\" /* File */:\n        return castFile(value);\n      case \"link\" /* Link */:\n        return castLink(value);\n      case \"number\" /* Number */:\n        return castNumber(value);\n      case \"object\" /* Object */:\n        return castObject(value, definition);\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return castResponsiveImage(value);\n      case \"richtext\" /* RichText */:\n        return castRichText(value);\n      case \"string\" /* String */:\n        return castString(value);\n      case \"unknown\":\n        return value;\n      default:\n        assertNever(definition, \"Unsupported cast\");\n    }\n  },\n  /**\n   * Parses a JavaScript variable into a DatabaseValue.\n   */\n  parse(value) {\n    if (isBoolean(value)) {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value\n      };\n    }\n    if (isValidDate(value)) {\n      return {\n        type: \"date\" /* Date */,\n        value: value.toISOString()\n      };\n    }\n    if (isNumber(value)) {\n      return {\n        type: \"number\" /* Number */,\n        value\n      };\n    }\n    if (isString(value)) {\n      return {\n        type: \"string\" /* String */,\n        value\n      };\n    }\n    if (isArray(value)) {\n      return {\n        type: \"array\" /* Array */,\n        value: value.map(DatabaseValue.parse)\n      };\n    }\n    return null;\n  },\n  /**\n   * Checks if the left value is equal to the right value. Returns false if\n   * the values are not of the same type.\n   */\n  equal(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) === 0;\n  },\n  /**\n   * Checks if the left value is less than the right value. Returns false if\n   * the values are not of the same type.\n   */\n  lessThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) < 0;\n  },\n  /**\n   * Checks if the left value is less than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  lessThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) <= 0;\n  },\n  /**\n   * Checks if the left value is greater than the right value. Returns false\n   * if the values are not of the same type.\n   */\n  greaterThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) > 0;\n  },\n  /**\n   * Checks if the left value is greater than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  greaterThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) >= 0;\n  },\n  /**\n   * Checks if the left value is in the right value. Returns false if the\n   * right value is not an array.\n   */\n  in(left, right, collation11) {\n    if ((right == null ? void 0 : right.type) !== \"array\" /* Array */)\n      return false;\n    return right.value.some((item) => {\n      return DatabaseValue.equal(item, left, collation11);\n    });\n  },\n  /**\n   * Get the index of the first occurrence of `target` in `source`.\n   *\n   * If source has duplicates, the index of the first occurrence is always returned.\n   */\n  indexOf(source, target, collation11) {\n    if ((source == null ? void 0 : source.type) !== \"array\" /* Array */)\n      return -1;\n    return source.value.findIndex((item) => {\n      return DatabaseValue.equal(item, target, collation11);\n    });\n  },\n  contains(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue))\n      return false;\n    if (isNull(targetValue))\n      return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.includes(targetValue);\n  },\n  startsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue))\n      return false;\n    if (isNull(targetValue))\n      return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.startsWith(targetValue);\n  },\n  endsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue))\n      return false;\n    if (isNull(targetValue))\n      return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.endsWith(targetValue);\n  },\n  length(value) {\n    switch (value == null ? void 0 : value.type) {\n      case \"array\" /* Array */:\n        return value.value.length;\n    }\n    return 0;\n  },\n  stringify(value) {\n    if (value === null) {\n      return \"null\";\n    }\n    switch (value.type) {\n      case \"array\" /* Array */:\n        return `[${value.value.map(DatabaseValue.stringify).join(\", \")}]`;\n      case \"boolean\" /* Boolean */:\n      case \"number\" /* Number */:\n        return String(value.value);\n      case \"string\" /* String */:\n        return `'${value.value}'`;\n      case \"enum\" /* Enum */:\n        return `'${value.value}' /* Enum */`;\n      case \"color\" /* Color */:\n        return `'${value.value}' /* Color */`;\n      case \"date\" /* Date */:\n        return `'${value.value}' /* Date */`;\n      case \"richtext\" /* RichText */:\n        return \"RichText\";\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return \"ResponsiveImage\";\n      case \"file\" /* File */:\n        return \"File\";\n      case \"link\" /* Link */:\n        return isString(value.value) ? `'${value.value}' /* Link */` : \"Link\";\n      case \"object\" /* Object */:\n        return \"Object\";\n      default:\n        assertNever(value);\n    }\n  }\n};\nfunction compare(left, right, collation11) {\n  if (isNull(left) || isNull(right)) {\n    assert(left === right);\n    return 0;\n  }\n  switch (left.type) {\n    case \"array\" /* Array */: {\n      assert(left.type === right.type);\n      return compareArray(left, right, collation11);\n    }\n    case \"boolean\" /* Boolean */: {\n      assert(left.type === right.type);\n      return compareBoolean(left, right);\n    }\n    case \"color\" /* Color */: {\n      assert(left.type === right.type);\n      return compareColor(left, right);\n    }\n    case \"date\" /* Date */: {\n      assert(left.type === right.type);\n      return compareDate(left, right);\n    }\n    case \"enum\" /* Enum */: {\n      assert(left.type === right.type);\n      return compareEnum(left, right);\n    }\n    case \"file\" /* File */: {\n      assert(left.type === right.type);\n      return compareFile(left, right);\n    }\n    case \"link\" /* Link */: {\n      assert(left.type === right.type);\n      return compareLink(left, right);\n    }\n    case \"number\" /* Number */: {\n      assert(left.type === right.type);\n      return compareNumber(left, right);\n    }\n    case \"object\" /* Object */: {\n      assert(left.type === right.type);\n      return compareObject(left, right, collation11);\n    }\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      assert(left.type === right.type);\n      return compareResponsiveImage(left, right);\n    }\n    case \"richtext\" /* RichText */: {\n      assert(left.type === right.type);\n      return compareRichText(left, right);\n    }\n    case \"string\" /* String */: {\n      assert(left.type === right.type);\n      return compareString(left, right, collation11);\n    }\n    default: {\n      assertNever(left);\n    }\n  }\n}\n\n// ../../library/src/modules/cms/DatabaseValueDefinition.ts\nvar unknownDefinition = {\n  type: \"unknown\",\n  isNullable: true\n};\n\n// ../../library/src/modules/cms/optimizer/Cost.ts\nfunction getNetworkLatency() {\n  return 25;\n}\nfunction getNetworkSpeed() {\n  return 100 * 125;\n}\nvar KB = 1e3;\nvar Cost = class {\n  constructor(network) {\n    this.network = network;\n  }\n  static estimate(totalRequests, transferredBytes) {\n    const latency = getNetworkLatency();\n    const speed = getNetworkSpeed();\n    const network = totalRequests * latency + transferredBytes / speed;\n    return new Cost(network);\n  }\n  static max(left, right) {\n    const network = Math.max(left.network, right.network);\n    return new Cost(network);\n  }\n  static compare(left, right) {\n    if (left.network < right.network)\n      return -1;\n    if (left.network > right.network)\n      return 1;\n    return 0;\n  }\n  add(cost) {\n    this.network += cost.network;\n    return this;\n  }\n  toString() {\n    return `${this.network}ms`;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Group.ts\nfunction GroupId(id) {\n  return id;\n}\nvar Group = class {\n  constructor(id, relational) {\n    this.id = id;\n    this.relational = relational;\n    /**\n     * A list of all nodes in the group. All nodes must have compatible\n     * relational props.\n     */\n    __publicField(this, \"nodes\", []);\n    /**\n     * A map of all winners in the group by their hash.\n     */\n    __publicField(this, \"winners\", /* @__PURE__ */ new Map());\n  }\n  /**\n   * Adds a node to the group. Throws an error if the node is already in a\n   * group.\n   */\n  addNode(node) {\n    this.nodes.push(node);\n    node.setGroup(this);\n  }\n  /**\n   * Returns the winner for the given required physical props. The winner\n   * stores the best node and its cost. This is used to find the best node in\n   * the group.\n   */\n  getWinner(required) {\n    const hash2 = required.getHash();\n    const existing = this.winners.get(hash2);\n    if (existing)\n      return existing;\n    const winner = new Winner();\n    this.winners.set(hash2, winner);\n    return winner;\n  }\n  /**\n   * Returns the optimized version of the node. The optimized version is the\n   * node with the lowest cost with all children replaced with their optimized\n   * versions. This is used to create the final optimized query plan.\n   */\n  getOptimized(required) {\n    const winner = this.getWinner(required);\n    assert(winner.node, \"Group not optimized\");\n    const optimizer = winner.node.getOptimized(required);\n    optimizer.setGroup(this);\n    return optimizer;\n  }\n};\nvar Winner = class {\n  constructor() {\n    __publicField(this, \"node\");\n    __publicField(this, \"cost\", new Cost(Infinity));\n    __publicField(this, \"nodes\", []);\n  }\n  update(node, cost) {\n    this.nodes.push(node);\n    if (Cost.compare(cost, this.cost) < 0) {\n      this.node = node;\n      this.cost = cost;\n    }\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Evaluate.ts\nfunction evaluateSync(generator) {\n  const state = generator.next();\n  assert(state.done, \"Generator must not yield\");\n  return state.value;\n}\nasync function evaluateAsync(generator, state = generator.next()) {\n  while (!state.done) {\n    const value = await state.value;\n    state = generator.next(value);\n  }\n  return state.value;\n}\nfunction* evaluateObject(values) {\n  const result = {};\n  const keys3 = Object.keys(values);\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\nfunction* evaluateArray(values) {\n  const result = [];\n  const keys3 = values.keys();\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/cms/optimizer/nodes/AbstractNode.ts\nvar AbstractNode = class {\n  constructor(isSynchronous) {\n    this.isSynchronous = isSynchronous;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalNode.ts\nvar RelationalNode = class extends AbstractNode {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"group\");\n  }\n  /**\n   * Returns the group that the node belongs to. Throws an error if the node\n   * is not in a group. This should only happen in the constructor because\n   * every node is added to a group right after creation.\n   */\n  getGroup() {\n    assert(this.group, \"Node must be in a group\");\n    return this.group;\n  }\n  /**\n   * Adds the node to the given group. Throws an error if the node is already\n   * in a group.\n   */\n  setGroup(group) {\n    assert(!this.group, \"Node is already in a group\");\n    this.group = group;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Hashable.ts\nfunction Hash(value) {\n  return value;\n}\nfunction isHashable(value) {\n  return isObject(value) && isFunction(value.getHash);\n}\nfunction calculateHash(name, ...values) {\n  const hashes = values.map((value) => {\n    const isCollectionMetadata = value instanceof CollectionMetadata;\n    assert(!isCollectionMetadata, \"Pass CollectionMetadata.id instead\");\n    const isFieldMetadata = value instanceof FieldMetadata;\n    assert(!isFieldMetadata, \"Pass FieldMetadata.id instead\");\n    const isIndexMetadata = value instanceof IndexMetadata;\n    assert(!isIndexMetadata, \"Pass IndexMetadata.id instead\");\n    const isRelationalNode = value instanceof RelationalNode;\n    assert(!isRelationalNode, \"Pass RelationalNode.group.id instead\");\n    const isGroup = value instanceof Group;\n    assert(!isGroup, \"Pass Group.id instead\");\n    if (isHashable(value)) {\n      return value.getHash();\n    }\n    return JSON.stringify(value);\n  });\n  return Hash(`${name}(${hashes.join(\", \")})`);\n}\n\n// ../../library/src/modules/cms/optimizer/RichText.ts\nvar RichText = class {\n  constructor(data2, pointer) {\n    this.data = data2;\n    this.pointer = pointer;\n    __publicField(this, \"cached\");\n  }\n  resolve() {\n    this.cached ??= this.data.resolveRichText(this.pointer);\n    return this.cached;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Metadata.ts\nvar VIRTUAL_INDEX_FIELD = \"index\";\nvar Metadata = class extends Set {\n  merge(other) {\n    for (const item of other) {\n      this.add(item);\n    }\n  }\n  equals(other) {\n    if (this === other)\n      return true;\n    if (this.size !== other.size)\n      return false;\n    for (const item of this) {\n      if (!other.has(item))\n        return false;\n    }\n    return true;\n  }\n  subsetOf(other) {\n    if (this === other)\n      return true;\n    if (this.size > other.size)\n      return false;\n    for (const item of this) {\n      if (!other.has(item))\n        return false;\n    }\n    return true;\n  }\n  getHash() {\n    const ids = [];\n    for (const item of this) {\n      ids.push(item.id);\n    }\n    ids.sort((a, b) => a - b);\n    return calculateHash(this.name, ...ids);\n  }\n};\nfunction CollectionId(id) {\n  return id;\n}\nvar CollectionMetadata = class {\n  constructor(id, name, data2) {\n    this.id = id;\n    this.name = name;\n    this.data = data2;\n    __publicField(this, \"indexes\", new Indexes());\n    __publicField(this, \"fields\", new Fields());\n  }\n};\nfunction IndexId(id) {\n  return id;\n}\nvar IndexMetadata = class {\n  constructor(id, data2, collection, lookupNodes, constraint, ordering) {\n    this.id = id;\n    this.data = data2;\n    this.collection = collection;\n    this.lookupNodes = lookupNodes;\n    this.constraint = constraint;\n    this.ordering = ordering;\n    __publicField(this, \"resolvedFields\", new Fields());\n    for (const fieldName in data2.schema) {\n      for (const field of collection.fields) {\n        if (field.name === fieldName) {\n          this.resolvedFields.add(field);\n        }\n      }\n    }\n  }\n};\nvar Indexes = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Indexes\");\n  }\n};\nfunction FieldId(id) {\n  return id;\n}\nvar FieldMetadata = class {\n  constructor(id, name, definition, collection) {\n    this.id = id;\n    this.name = name;\n    this.definition = definition;\n    this.collection = collection;\n  }\n  getValue(item) {\n    assert(this.name, \"Can only get value of field with a name\");\n    const value = item.data[this.name];\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(this.collection, \"Rich text field must have a collection\");\n      return {\n        type: \"richtext\" /* RichText */,\n        value: new RichText(this.collection.data, value.value)\n      };\n    }\n    return value ?? null;\n  }\n};\nvar Fields = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Fields\");\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Ordering.ts\nvar OrderingField = class {\n  constructor(field, direction = \"asc\" /* Ascending */) {\n    this.field = field;\n    this.direction = direction;\n  }\n  getHash() {\n    return calculateHash(\"OrderingField\", this.field.id, this.direction);\n  }\n};\nvar Ordering = class {\n  constructor(ordering) {\n    __publicField(this, \"fields\", []);\n    if (ordering) {\n      this.merge(ordering);\n    }\n  }\n  get length() {\n    return this.fields.length;\n  }\n  getHash() {\n    return calculateHash(\"Ordering\", ...this.fields);\n  }\n  push(field) {\n    this.fields.push(field);\n  }\n  merge(ordering) {\n    this.fields.push(...ordering.fields);\n  }\n  equals(other) {\n    if (this === other)\n      return true;\n    if (this.length !== other.length)\n      return false;\n    return this.getHash() === other.getHash();\n  }\n  providedByFields(fields) {\n    for (const { field } of this.fields) {\n      if (fields.has(field))\n        continue;\n      if (field.name === VIRTUAL_INDEX_FIELD)\n        continue;\n      return false;\n    }\n    return true;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/PhysicalProps.ts\nvar RequiredProps = class {\n  constructor(ordering, resolvedFields) {\n    this.ordering = ordering;\n    this.resolvedFields = resolvedFields;\n  }\n  getHash() {\n    return calculateHash(\"RequiredProps\", this.ordering, this.resolvedFields);\n  }\n  /**\n   * Required props with no ordering and no resolved fields are considered\n   * minimal. Every node can provide them.\n   */\n  get isMinimal() {\n    return this.ordering.length === 0 && this.resolvedFields.size === 0;\n  }\n  /**\n   * Checks if the node can provide the required props. If it can't, we need\n   * to add enforcers that provides them.\n   *\n   * Some nodes don't provide the required props directly, but can pass them\n   * through to their children. E.g. a `RelationalFilter` returns the relation\n   * in the same order and with the same resolved fields as its input. These\n   * nodes should return `true` and pass the required props to their children.\n   */\n  canProvide(node) {\n    return this.canProvideOrdering(node) && this.canProvideResolvedFields(node);\n  }\n  /**\n   * Checks if the given node can provide the required ordering. If it can't,\n   * we need to add an `EnforcerSort` node that provides it.\n   */\n  canProvideOrdering(node) {\n    if (this.ordering.length === 0)\n      return true;\n    return node.canProvideOrdering(this.ordering);\n  }\n  /**\n   * Checks if the given node can provide the required resolved fields. If it\n   * can't, we need to add an `EnforcerResolve` node that provides it.\n   */\n  canProvideResolvedFields(node) {\n    if (this.resolvedFields.size === 0)\n      return true;\n    return node.canProvideResolvedFields(this.resolvedFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Scope.ts\nvar Scope = class {\n  constructor(parent) {\n    this.parent = parent;\n    /**\n     * The last node built in the scope.\n     */\n    __publicField(this, \"node\");\n    /**\n     * The required ordering of the scope.\n     */\n    __publicField(this, \"ordering\");\n    /**\n     * A list of all fields available in the scope.\n     */\n    __publicField(this, \"fields\", []);\n  }\n  /**\n   * Returns the last node built in the scope and removes it from the scope.\n   * Throws an error if no node was built in the scope yet.\n   */\n  takeNode() {\n    const node = this.node;\n    assert(node, \"Node is missing\");\n    this.node = void 0;\n    return node;\n  }\n  /**\n   * Sets the last node built in the scope. Throws an error if there is\n   * already a node in the scope.\n   */\n  setNode(node) {\n    assert(!this.node, \"Node already set\");\n    this.node = node;\n  }\n  setOrdering(ordering) {\n    this.ordering = ordering;\n  }\n  /**\n   * Create a new scope with the this scope as its parent.\n   */\n  push() {\n    return new Scope(this);\n  }\n  /**\n   * Creates a new scope with the parent of the this scope as its parent.\n   */\n  replace() {\n    return new Scope(this.parent);\n  }\n  /**\n   * Adds a field to this scope. Any fields that are added will be available\n   * in the this scope and all of its children.\n   */\n  addField(scopeField) {\n    this.fields.push(scopeField);\n  }\n  /**\n   * Merges all fields from the given scope into the this scope.\n   */\n  addFieldsFromScope(scope) {\n    for (const scopeField of scope.fields) {\n      this.addField(scopeField);\n    }\n  }\n  /**\n   * Resolves a field from this scope. If the field is not found, the parent\n   * scope is checked. If the name of a field is ambiguous, an error is\n   * thrown.\n   */\n  resolveField(name, collection) {\n    var _a;\n    const candidates = [];\n    for (const field of this.fields) {\n      if (field.name !== name)\n        continue;\n      if (collection && field.collectionName !== collection)\n        continue;\n      candidates.push(field);\n    }\n    if (candidates.length === 1) {\n      return candidates[0];\n    }\n    if (candidates.length > 1) {\n      throw new Error(\"Ambiguous fields\");\n    }\n    return (_a = this.parent) == null ? void 0 : _a.resolveField(name, collection);\n  }\n  /**\n   * Checks if the scope or any parent scope has the given scope field.\n   */\n  has(scopeField) {\n    var _a;\n    if (this.fields.includes(scopeField)) {\n      return true;\n    }\n    return ((_a = this.parent) == null ? void 0 : _a.has(scopeField)) ?? false;\n  }\n  /**\n   * Returns the required ordering for the scope.\n   */\n  getRequiredOrdering() {\n    return this.ordering ?? new Ordering();\n  }\n  /**\n   * Returns the required resolved fields for the scope.\n   */\n  getRequiredResolvedFields() {\n    const resolvedFields = new Fields();\n    for (const { field } of this.fields) {\n      if (field.collection) {\n        resolvedFields.add(field);\n      }\n    }\n    return resolvedFields;\n  }\n  /**\n   * Returns the set of required physical props for this scope. This is used\n   * to create the required props for the root node in the optimizer.\n   */\n  getRequiredProps() {\n    const ordering = this.getRequiredOrdering();\n    const resolvedFields = this.getRequiredResolvedFields();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  /**\n   * Returns a map of the fields in this scope, with their scope names as\n   * keys. This is used to create the final `QueryResult` with the correct\n   * field names.\n   */\n  getNamedFields() {\n    const namedFields = {};\n    for (const { name, field } of this.fields) {\n      namedFields[name] = field;\n    }\n    return namedFields;\n  }\n  /**\n   * Returns the single field from this scope if it only contains one field.\n   * Throws an error if there are more than one fields.\n   */\n  getSingleField() {\n    assert(this.fields.length === 1, \"Scope must contain exactly one field\");\n    const scopeField = this.fields[0];\n    assert(scopeField, \"Field must exist\");\n    return scopeField.field;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Relation.ts\nvar Tuple = class {\n  constructor() {\n    __publicField(this, \"pointers\", /* @__PURE__ */ new Map());\n    __publicField(this, \"values\", /* @__PURE__ */ new Map());\n  }\n  getKey() {\n    const result = [];\n    for (const [collection, pointer] of this.pointers) {\n      result.push(`${collection.id}-${pointer}`);\n    }\n    return result.sort().join(\"-\");\n  }\n  addValue(field, value) {\n    this.values.set(field, value);\n  }\n  getValue(field) {\n    return this.values.get(field) ?? null;\n  }\n  mergeValues(tuple) {\n    for (const [field, value] of tuple.values) {\n      this.addValue(field, value);\n    }\n  }\n  addPointer(collection, pointer) {\n    this.pointers.set(collection, pointer);\n  }\n  getPointer(collection) {\n    return this.pointers.get(collection);\n  }\n  mergePointers(tuple) {\n    for (const [collection, pointer] of tuple.pointers) {\n      this.addPointer(collection, pointer);\n    }\n  }\n  merge(tuple) {\n    this.mergeValues(tuple);\n    this.mergePointers(tuple);\n  }\n};\nvar Relation = class {\n  constructor(fields, tuples = []) {\n    this.fields = fields;\n    this.tuples = tuples;\n  }\n  push(tuple) {\n    this.tuples.push(tuple);\n  }\n  filter(predicate) {\n    const tuples = this.tuples.filter(predicate);\n    return new Relation(this.fields, tuples);\n  }\n  map(fields, callback) {\n    const tuples = this.tuples.map(callback);\n    return new Relation(fields, tuples);\n  }\n  sort(callback) {\n    const tuples = Array.from(this.tuples).sort(callback);\n    return new Relation(this.fields, tuples);\n  }\n  slice(start, end) {\n    const tuples = this.tuples.slice(start, end);\n    return new Relation(this.fields, tuples);\n  }\n  union(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n      result.push(tuple);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (keys3.has(key7))\n        continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n  intersection(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (!keys3.has(key7))\n        continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalProject.ts\nvar ProjectionField = class {\n  constructor(input, field) {\n    this.input = input;\n    this.field = field;\n  }\n  getHash() {\n    return calculateHash(\"ProjectionField\", this.input, this.field.id);\n  }\n};\nvar RelationalProject = class extends RelationalNode {\n  constructor(input, projections, passthrough) {\n    let isSynchronous = input.isSynchronous;\n    for (const projection of projections) {\n      isSynchronous &&= projection.input.isSynchronous;\n    }\n    super(isSynchronous);\n    this.input = input;\n    this.projections = projections;\n    this.passthrough = passthrough;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalProject\", this.inputGroup.id, ...this.projections, this.passthrough);\n  }\n  getOutputFields() {\n    const fields = new Fields();\n    fields.merge(this.passthrough);\n    for (const projection of this.projections) {\n      fields.add(projection.field);\n    }\n    return fields;\n  }\n  canProvideOrdering(ordering) {\n    const projectionFields = new Fields();\n    for (const projection of this.projections) {\n      projectionFields.add(projection.field);\n    }\n    for (const { field } of ordering.fields) {\n      if (projectionFields.has(field)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const projection of this.projections) {\n      resolvedFields.merge(projection.input.referencedFields);\n      resolvedFields.delete(projection.field);\n    }\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    let projectionsCost = new Cost(0);\n    for (const projection of this.projections) {\n      const projectionCost = projection.input.optimize(optimizer);\n      projectionsCost = Cost.max(projectionsCost, projectionCost);\n    }\n    return new Cost(0).add(Cost.max(inputCost, projectionsCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const projections = this.projections.map((projection) => {\n      const projectionInput = projection.input.getOptimized();\n      return new ProjectionField(projectionInput, projection.field);\n    });\n    return new RelationalProject(input, projections, this.passthrough);\n  }\n  *evaluate(context) {\n    const outputFields = this.getOutputFields();\n    const input = yield* this.input.evaluate(context);\n    const projectedValues = yield* evaluateArray(\n      input.tuples.map(\n        (tuple) => evaluateArray(\n          this.projections.map(\n            (projection) => evaluateObject({\n              field: projection.field,\n              value: projection.input.evaluate(context, tuple)\n            })\n          )\n        )\n      )\n    );\n    return input.map(outputFields, (tuple, index) => {\n      const result = new Tuple();\n      result.mergePointers(tuple);\n      for (const field of this.passthrough) {\n        const value = tuple.getValue(field);\n        result.addValue(field, value);\n      }\n      const projections = projectedValues[index];\n      assert(projections, \"Projections must exist\");\n      for (const { field, value } of projections) {\n        result.addValue(field, value);\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNode.ts\nvar collation = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNode = class extends AbstractNode {\n  constructor(referencedFields, referencedOuterFields, isSynchronous) {\n    super(isSynchronous);\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    this.isSynchronous = isSynchronous;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCase.ts\nvar collation2 = {\n  type: 0 /* CaseInsensitive */\n};\nvar CaseCondition = class {\n  constructor(when, then) {\n    this.when = when;\n    this.then = then;\n  }\n  getHash() {\n    return calculateHash(\"CaseCondition\", this.when, this.then);\n  }\n};\nvar ScalarCase = class extends ScalarNode {\n  constructor(input, conditions, otherwise) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    let isSynchronous = true;\n    if (input) {\n      referencedFields.merge(input.referencedFields);\n      referencedOuterFields.merge(input.referencedOuterFields);\n      isSynchronous &&= input.isSynchronous;\n    }\n    for (const { when, then } of conditions) {\n      referencedFields.merge(when.referencedFields);\n      referencedOuterFields.merge(when.referencedOuterFields);\n      isSynchronous &&= when.isSynchronous;\n      referencedFields.merge(then.referencedFields);\n      referencedOuterFields.merge(then.referencedOuterFields);\n      isSynchronous &&= then.isSynchronous;\n    }\n    if (otherwise) {\n      referencedFields.merge(otherwise.referencedFields);\n      referencedOuterFields.merge(otherwise.referencedOuterFields);\n      isSynchronous &&= otherwise.isSynchronous;\n    }\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.input = input;\n    this.conditions = conditions;\n    this.otherwise = otherwise;\n    __publicField(this, \"definition\", {\n      type: \"unknown\",\n      isNullable: true\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarCase\", this.input, ...this.conditions, this.otherwise);\n  }\n  optimize(optimizer) {\n    var _a, _b;\n    (_a = this.input) == null ? void 0 : _a.optimize(optimizer);\n    for (const condition of this.conditions) {\n      condition.when.optimize(optimizer);\n      condition.then.optimize(optimizer);\n    }\n    (_b = this.otherwise) == null ? void 0 : _b.optimize(optimizer);\n    return new Cost(0);\n  }\n  getOptimized() {\n    var _a, _b;\n    const input = (_a = this.input) == null ? void 0 : _a.getOptimized();\n    const conditions = this.conditions.map((condition) => {\n      const when = condition.when.getOptimized();\n      const then = condition.then.getOptimized();\n      return new CaseCondition(when, then);\n    });\n    const otherwise = (_b = this.otherwise) == null ? void 0 : _b.getOptimized();\n    return new ScalarCase(input, conditions, otherwise);\n  }\n  *evaluate(context, tuple) {\n    var _a, _b;\n    const { input, conditions, otherwise } = yield* evaluateObject({\n      input: ((_a = this.input) == null ? void 0 : _a.evaluate(context, tuple)) ?? null,\n      conditions: evaluateArray(\n        this.conditions.map(\n          (condition) => evaluateObject({\n            when: condition.when.evaluate(context, tuple),\n            // biome-ignore lint/suspicious/noThenProperty: Existing name.\n            then: condition.then.evaluate(context, tuple)\n          })\n        )\n      ),\n      otherwise: ((_b = this.otherwise) == null ? void 0 : _b.evaluate(context, tuple)) ?? null\n    });\n    if (this.input) {\n      for (const { when, then } of conditions) {\n        if (DatabaseValue.equal(input, when, collation2)) {\n          return then;\n        }\n      }\n    } else {\n      for (const { when, then } of conditions) {\n        if (valueToBoolean(when)) {\n          return then;\n        }\n      }\n    }\n    return otherwise;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Builder.ts\nvar Builder = class {\n  constructor(normalizer, query, locale) {\n    this.normalizer = normalizer;\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"collectionId\", 0);\n    __publicField(this, \"indexId\", 0);\n    __publicField(this, \"fieldId\", 0);\n    /**\n     * A stack of the subqueries that are currently being built. We use this to\n     * calculate fields that come from the enclosing scope or from inside the\n     * subquery.\n     */\n    __publicField(this, \"subqueries\", []);\n  }\n  build() {\n    const inScope = new Scope();\n    return this.buildQuery(inScope, this.query);\n  }\n  buildQuery(inScope, query) {\n    const select = { type: \"Select\", ...query };\n    return this.buildSelect(inScope, select);\n  }\n  buildSelect(inScope, select) {\n    const fromScope = this.buildFrom(inScope, select.from);\n    const defaultOrdering = fromScope.getRequiredOrdering();\n    if (select.where) {\n      const input = fromScope.takeNode();\n      const predicate = this.buildExpression(fromScope, select.where);\n      const node = this.normalizer.newRelationalFilter(input, predicate);\n      fromScope.setNode(node);\n    }\n    const orderProjections = [];\n    const orderFields = new Fields();\n    let ordering;\n    if (select.orderBy) {\n      ordering = new Ordering();\n      for (const order of select.orderBy) {\n        if (order.type === \"Identifier\") {\n          const scopeField = fromScope.resolveField(order.name, order.collection);\n          if (isUndefined(scopeField))\n            continue;\n          orderFields.add(scopeField.field);\n          const orderingField = new OrderingField(scopeField.field, order.direction);\n          ordering.push(orderingField);\n        } else {\n          const expression = this.buildExpression(fromScope, order);\n          const fieldId = FieldId(this.fieldId++);\n          const field = new FieldMetadata(fieldId, void 0, expression.definition, void 0);\n          const projection = new ProjectionField(expression, field);\n          orderProjections.push(projection);\n          const orderingField = new OrderingField(field, order.direction);\n          ordering.push(orderingField);\n        }\n      }\n      ordering.merge(defaultOrdering);\n    } else {\n      ordering = defaultOrdering;\n    }\n    const projectionScope = this.buildSelectList(fromScope, select.select, orderFields, orderProjections);\n    projectionScope.setOrdering(ordering);\n    if (select.offset) {\n      const input = projectionScope.takeNode();\n      const offset = this.buildExpression(inScope, select.offset);\n      const node = this.normalizer.newRelationalOffset(input, offset, ordering);\n      projectionScope.setNode(node);\n    }\n    if (select.limit) {\n      const input = projectionScope.takeNode();\n      const limit = this.buildExpression(inScope, select.limit);\n      const node = this.normalizer.newRelationalLimit(input, limit, ordering);\n      projectionScope.setNode(node);\n    }\n    return projectionScope;\n  }\n  buildSelectList(inScope, selects, orderFields, orderProjections) {\n    const outScope = inScope.push();\n    const passthrough = new Fields(orderFields);\n    const projections = [...orderProjections];\n    for (const select of selects) {\n      if (select.type === \"Identifier\") {\n        const scopeField = inScope.resolveField(select.name, select.collection);\n        if (isUndefined(scopeField))\n          continue;\n        passthrough.add(scopeField.field);\n        outScope.addField({ ...scopeField, name: select.alias ?? scopeField.name });\n      } else {\n        const expression = this.buildExpression(inScope, select);\n        assert(select.alias, \"Subqueries should have an alias\");\n        const fieldId = FieldId(this.fieldId++);\n        const fieldName = select.alias;\n        const field = new FieldMetadata(fieldId, fieldName, expression.definition, void 0);\n        const projection = new ProjectionField(expression, field);\n        projections.push(projection);\n        outScope.addField({\n          field,\n          name: fieldName\n        });\n      }\n    }\n    const input = inScope.takeNode();\n    const node = this.normalizer.newRelationalProject(input, projections, passthrough);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildFrom(inScope, from) {\n    switch (from.type) {\n      case \"Collection\":\n        return this.buildCollection(inScope, from);\n      case \"LeftJoin\":\n        return this.buildJoin(inScope, from);\n      default:\n        assertNever(from, \"Unsupported from type\");\n    }\n  }\n  buildCollection(inScope, from) {\n    const outScope = inScope.push();\n    const collectionData = getCollection(from.data, this.locale);\n    const collectionName = from.alias;\n    const collectionId = CollectionId(this.collectionId++);\n    const collection = new CollectionMetadata(collectionId, collectionName, collectionData);\n    for (const [fieldName, definition] of Object.entries(collectionData.schema)) {\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, fieldName, definition, collection);\n      outScope.addField({\n        field,\n        name: fieldName,\n        collectionName\n      });\n      collection.fields.add(field);\n    }\n    {\n      const definition = { type: \"number\" /* Number */, isNullable: false };\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, VIRTUAL_INDEX_FIELD, definition, collection);\n      outScope.addField({\n        field,\n        name: VIRTUAL_INDEX_FIELD,\n        collectionName\n      });\n      const ordering = new Ordering();\n      const orderingField = new OrderingField(field);\n      ordering.push(orderingField);\n      outScope.setOrdering(ordering);\n    }\n    for (const indexData of collectionData.indexes) {\n      const lookupNodes = [];\n      for (const expression of indexData.fields) {\n        const node2 = this.buildExpression(outScope, expression);\n        lookupNodes.push(node2);\n      }\n      let constraint;\n      if (indexData.where) {\n        constraint = this.buildExpression(outScope, indexData.where);\n      }\n      const ordering = new Ordering();\n      const indexId = IndexId(this.indexId++);\n      const index = new IndexMetadata(indexId, indexData, collection, lookupNodes, constraint, ordering);\n      collection.indexes.add(index);\n    }\n    const node = this.normalizer.newRelationalScan(collection);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildJoin(inScope, from) {\n    const leftScope = this.buildFrom(inScope, from.left);\n    const rightScope = this.buildFrom(inScope, from.right);\n    const ordering = new Ordering();\n    const leftOrdering = leftScope.getRequiredOrdering();\n    ordering.merge(leftOrdering);\n    const rightOrdering = rightScope.getRequiredOrdering();\n    ordering.merge(rightOrdering);\n    const outScope = inScope.push();\n    outScope.addFieldsFromScope(leftScope);\n    outScope.addFieldsFromScope(rightScope);\n    outScope.setOrdering(ordering);\n    const constraint = this.buildExpression(outScope, from.constraint);\n    const left = leftScope.takeNode();\n    const right = rightScope.takeNode();\n    let node;\n    switch (from.type) {\n      case \"LeftJoin\":\n        node = this.normalizer.newRelationalLeftJoin(left, right, constraint);\n        break;\n      default:\n        assertNever(from.type, \"Unsupported join type\");\n    }\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildExpression(inScope, expression) {\n    switch (expression.type) {\n      case \"Identifier\":\n        return this.buildIdentifier(inScope, expression);\n      case \"LiteralValue\":\n        return this.buildLiteralValue(expression);\n      case \"FunctionCall\":\n        return this.buildFunctionCall(inScope, expression);\n      case \"Case\":\n        return this.buildCase(inScope, expression);\n      case \"UnaryOperation\":\n        return this.buildUnaryOperation(inScope, expression);\n      case \"BinaryOperation\":\n        return this.buildBinaryOperation(inScope, expression);\n      case \"TypeCast\":\n        return this.buildTypeCast(inScope, expression);\n      case \"Select\":\n        throw new Error(\"Subqueries are only supported inside subquery function calls\");\n      default:\n        assertNever(expression, \"Unsupported expression\");\n    }\n  }\n  buildIdentifier(inScope, expression) {\n    const scopeField = inScope.resolveField(expression.name, expression.collection);\n    if (scopeField) {\n      let isOuterField = false;\n      for (const subquery of this.subqueries) {\n        if (isOuterField) {\n          subquery.referencedOuterFields.add(scopeField.field);\n        } else {\n          isOuterField = subquery.inScope.has(scopeField);\n          if (isOuterField) {\n            subquery.referencedFields.add(scopeField.field);\n          }\n        }\n      }\n      return this.normalizer.newScalarVariable(scopeField.field, isOuterField);\n    }\n    return this.normalizer.newScalarConstant(unknownDefinition, null);\n  }\n  buildLiteralValue(expression) {\n    const value = DatabaseValue.parse(expression.value);\n    return this.normalizer.newScalarConstant(unknownDefinition, value);\n  }\n  buildFunctionCall(inScope, expression) {\n    const getArgument = (index) => {\n      const argument = expression.arguments[index];\n      assert(argument, \"Missing argument\");\n      return this.buildExpression(inScope, argument);\n    };\n    switch (expression.functionName) {\n      case \"CONTAINS\" /* Contains */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarContains(source, target);\n      }\n      case \"STARTS_WITH\" /* StartsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarStartsWith(source, target);\n      }\n      case \"ENDS_WITH\" /* EndsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarEndsWith(source, target);\n      }\n      case \"LENGTH\" /* Length */: {\n        const array = getArgument(0);\n        return this.normalizer.newScalarLength(array);\n      }\n      case \"INDEX_OF\" /* IndexOf */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarIndexOf(source, target);\n      }\n      case \"ARRAY\" /* Array */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryArray(inScope, subquery);\n      }\n      case \"FLAT_ARRAY\" /* FlatArray */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryFlatArray(inScope, subquery);\n      }\n      default:\n        throw new Error(\"Unsupported function name\");\n    }\n  }\n  buildSubqueryArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const namedFields = outScope.getNamedFields();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildSubqueryFlatArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const field = outScope.getSingleField();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildCase(inScope, expression) {\n    let input;\n    if (expression.value) {\n      input = this.buildExpression(inScope, expression.value);\n    }\n    const conditions = expression.conditions.map((condition) => {\n      const when = this.buildExpression(inScope, condition.when);\n      const then = this.buildExpression(inScope, condition.then);\n      return new CaseCondition(when, then);\n    });\n    let otherwise;\n    if (expression.else) {\n      otherwise = this.buildExpression(inScope, expression.else);\n    }\n    return this.normalizer.newScalarCase(input, conditions, otherwise);\n  }\n  buildUnaryOperation(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.operator) {\n      case \"not\" /* Not */:\n        return this.normalizer.newScalarNot(input);\n      default:\n        assertNever(expression.operator, \"Unsupported unary operator\");\n    }\n  }\n  buildBinaryOperation(inScope, expression) {\n    const left = this.buildExpression(inScope, expression.left);\n    const right = this.buildExpression(inScope, expression.right);\n    switch (expression.operator) {\n      case \"and\" /* And */:\n        return this.normalizer.newScalarAnd(left, right);\n      case \"or\" /* Or */:\n        return this.normalizer.newScalarOr(left, right);\n      case \"==\" /* Equals */:\n        return this.normalizer.newScalarEquals(left, right);\n      case \"!=\" /* NotEquals */:\n        return this.normalizer.newScalarNotEquals(left, right);\n      case \"<\" /* LessThan */:\n        return this.normalizer.newScalarLessThan(left, right);\n      case \"<=\" /* LessThanOrEqual */:\n        return this.normalizer.newScalarLessThanOrEqual(left, right);\n      case \">\" /* GreaterThan */:\n        return this.normalizer.newScalarGreaterThan(left, right);\n      case \">=\" /* GreaterThanOrEqual */:\n        return this.normalizer.newScalarGreaterThanOrEqual(left, right);\n      case \"in\" /* In */:\n        return this.normalizer.newScalarIn(left, right);\n      default:\n        assertNever(expression.operator, \"Unsupported binary operator\");\n    }\n  }\n  buildTypeCast(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.dataType) {\n      case \"BOOLEAN\" /* Boolean */: {\n        const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"DATE\" /* Date */: {\n        const definition = { type: \"date\" /* Date */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"NUMBER\" /* Number */: {\n        const definition = { type: \"number\" /* Number */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"STRING\" /* String */: {\n        const definition = { type: \"string\" /* String */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      default:\n        throw new Error(\"Unsupported data type\");\n    }\n  }\n};\nfunction getCollection(data2, locale) {\n  if (isAnyLegacyCollection(data2)) {\n    return new CompatibilityDatabaseCollection(data2, locale);\n  }\n  if (isDatabaseCollection(data2)) {\n    return data2;\n  }\n  if (isLocalizedDatabaseCollection(data2)) {\n    while (locale) {\n      const collection = data2.collectionByLocaleId[locale.id];\n      if (collection)\n        return collection;\n      locale = locale.fallback;\n    }\n    return data2.collectionByLocaleId.default;\n  }\n  assertNever(data2, \"Unsupported collection type\");\n}\nvar Subquery = class {\n  constructor(inScope) {\n    this.inScope = inScope;\n    /**\n     * A list of fields that are referenced from `inScope` of the subquery.\n     *\n     * To evaluate a subquery, we need to know which fields are coming from\n     * outside the subquery and which fields are coming from inside the\n     * subquery. For example, in the following query:\n     *\n     * ```\n     * SELECT title, (\n     *     SELECT name FROM articles\n     *     WHERE id = author_id\n     * ) AS author FROM articles\n     * ```\n     *\n     * The `name` and `id` fields are coming from the inside the subquery, but\n     * the `author_id` field is coming from the parent scope. We need to resolve\n     * `author_id` before we can evaluate the subquery.\n     */\n    __publicField(this, \"referencedFields\", new Fields());\n    /**\n     * A list of fields that are referenced from the `inScope` of the parent\n     * subquery.\n     */\n    __publicField(this, \"referencedOuterFields\", new Fields());\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalFilter.ts\nvar RelationalFilter = class extends RelationalNode {\n  constructor(input, predicate) {\n    super(input.isSynchronous && predicate.isSynchronous);\n    this.input = input;\n    this.predicate = predicate;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalFilter\", this.inputGroup.id, this.predicate);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.predicate.referencedFields);\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const predicateCost = this.predicate.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, predicateCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const predicate = this.predicate.getOptimized();\n    return new RelationalFilter(input, predicate);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    const predicates = yield* evaluateArray(\n      input.tuples.map((tuple) => {\n        return this.predicate.evaluate(context, tuple);\n      })\n    );\n    return input.filter((_, index) => {\n      const predicate = predicates[index] ?? null;\n      return valueToBoolean(predicate);\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIndexLookup.ts\nvar RelationalIndexLookup = class extends RelationalNode {\n  constructor(index, query) {\n    super(false);\n    this.index = index;\n    this.query = query;\n  }\n  getHash() {\n    return calculateHash(\"RelationalIndexLookup\", this.index.id, ...this.query);\n  }\n  getOutputFields() {\n    return this.index.collection.fields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.index.ordering);\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.index.resolvedFields);\n  }\n  optimize() {\n    const isFullScan = this.query.every((lookup) => lookup.type === \"All\" /* All */);\n    return Cost.estimate(1, isFullScan ? 100 * KB : 50 * KB);\n  }\n  getOptimized() {\n    return new RelationalIndexLookup(this.index, this.query);\n  }\n  *evaluate() {\n    const index = this.index;\n    const collection = index.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield index.data.lookupItems(this.query);\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of index.resolvedFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIntersection.ts\nvar RelationalIntersection = class extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalIntersection\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new RelationalIntersection(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.intersection(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEquals.ts\nvar ScalarEquals = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLeftJoin.ts\nvar RelationalLeftJoin = class extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLeftJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new RelationalLeftJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(rightTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(leftTuple);\n      } else {\n        for (const rightTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(leftTuple);\n          joinedTuple.merge(rightTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      let hasMatch = false;\n      for (const rightTuple of right.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(leftTuple);\n        tuple.merge(rightTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(leftTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalRightJoin.ts\nvar RelationalRightJoin = class extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalRightJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new RelationalRightJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(leftTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(rightTuple);\n      } else {\n        for (const leftTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(rightTuple);\n          joinedTuple.merge(leftTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      let hasMatch = false;\n      for (const leftTuple of left.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(rightTuple);\n        tuple.merge(leftTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(rightTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalScan.ts\nvar RelationalScan = class extends RelationalNode {\n  constructor(collection) {\n    super(false);\n    this.collection = collection;\n  }\n  getHash() {\n    return calculateHash(\"RelationalScan\", this.collection.id);\n  }\n  getOutputFields() {\n    return this.collection.fields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.collection.fields);\n  }\n  optimize() {\n    return Cost.estimate(1, 200 * KB);\n  }\n  getOptimized() {\n    return new RelationalScan(this.collection);\n  }\n  *evaluate() {\n    const collection = this.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield collection.data.scanItems();\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of outputFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalUnion.ts\nvar RelationalUnion = class extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalUnion\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new RelationalUnion(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.union(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarAnd.ts\nvar ScalarAnd = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarAnd\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarAnd(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) && valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarConstant.ts\nvar ScalarConstant = class extends ScalarNode {\n  constructor(definition, value) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    super(referencedFields, referencedOuterFields, true);\n    this.definition = definition;\n    this.value = value;\n  }\n  getHash() {\n    return calculateHash(\"ScalarConstant\", this.definition, this.value);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate() {\n    return this.value;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarContains.ts\nvar collation3 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarContains = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarContains\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarContains(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.contains(source, target, collation3)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEndsWith.ts\nvar collation4 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarEndsWith = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEndsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarEndsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.endsWith(source, target, collation4)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThan.ts\nvar ScalarGreaterThan = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarGreaterThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThanOrEqual.ts\nvar ScalarGreaterThanOrEqual = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarGreaterThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThan.ts\nvar ScalarLessThan = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarLessThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThanOrEqual.ts\nvar ScalarLessThanOrEqual = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarLessThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotEquals.ts\nvar ScalarNotEquals = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarNotEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarOr.ts\nvar ScalarOr = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarOr\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarOr(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) || valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarStartsWith.ts\nvar collation5 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarStartsWith = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarStartsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarStartsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.startsWith(source, target, collation5)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Explorer.ts\nvar Explorer = class {\n  constructor(normalizer) {\n    this.normalizer = normalizer;\n    __publicField(this, \"memo\");\n    this.memo = normalizer.memo;\n  }\n  explore(before) {\n    const group = before.getGroup();\n    if (before instanceof RelationalLeftJoin) {\n      const after = new RelationalRightJoin(before.right, before.left, before.constraint);\n      this.memo.addRelational(after, group);\n    }\n    if (before instanceof RelationalFilter) {\n      if (before.predicate instanceof ScalarAnd) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalIntersection(left, right);\n        this.memo.addRelational(after, group);\n      }\n      if (before.predicate instanceof ScalarOr) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalUnion(left, right);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalScan) {\n      for (const index of before.collection.indexes) {\n        if (index.constraint)\n          continue;\n        const query = createIndexQueryAll(index.lookupNodes.length);\n        const after = new RelationalIndexLookup(index, query);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalFilter) {\n      for (const input of before.inputGroup.nodes) {\n        if (input instanceof RelationalScan) {\n          for (const index of input.collection.indexes) {\n            if (before.predicate instanceof ScalarEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Equals\" /* Equals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Equals\" /* Equals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarNotEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"NotEquals\" /* NotEquals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"NotEquals\" /* NotEquals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarContains && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Contains\" /* Contains */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Contains\" /* Contains */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarStartsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"StartsWith\" /* StartsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"StartsWith\" /* StartsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarEndsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"EndsWith\" /* EndsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"EndsWith\" /* EndsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n          }\n        }\n      }\n    }\n  }\n};\nfunction createIndexQueryAll(length) {\n  const lookup = { type: \"All\" /* All */ };\n  return new Array(length).fill(lookup);\n}\n\n// ../../library/src/modules/cms/optimizer/LogicalProps.ts\nvar RelationalProps = class {\n  constructor(outputFields) {\n    this.outputFields = outputFields;\n  }\n  /**\n   * Checks if the given relational properties are compatible with this.\n   */\n  isCompatible(other) {\n    return this.outputFields.equals(other.outputFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Memo.ts\nvar Memo = class {\n  constructor() {\n    /**\n     * A map of all nodes in the memo by their hash. This allows to easily find\n     * duplicated nodes and their groups.\n     */\n    __publicField(this, \"nodes\", /* @__PURE__ */ new Map());\n    /**\n     * A list of all groups in the memo. The id of a group is the index of the\n     * group in this list.\n     */\n    __publicField(this, \"groups\", []);\n  }\n  /**\n   * Adds a new group with the given relational props to the memo. All nodes\n   * in the group must have the same props. It's expected that the normalized\n   * node is immediately added to the group after creating it.\n   */\n  addGroup(relationalProps) {\n    const id = GroupId(this.groups.length);\n    const group = new Group(id, relationalProps);\n    this.groups.push(group);\n    return group;\n  }\n  /**\n   * Adds a relational node to the memo and the group. If the node is already\n   * in the memo, it returns the existing node. If no group is given, it\n   * creates a new group with the given relational props of the node.\n   */\n  addRelational(node, group) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing)\n      return existing;\n    this.nodes.set(hash2, node);\n    const outputFields = node.getOutputFields();\n    const relational = new RelationalProps(outputFields);\n    group ??= this.addGroup(relational);\n    group.addNode(node);\n    assert(relational.isCompatible(group.relational), \"Group has inconsistent relational props\");\n    return node;\n  }\n  /**\n   * Adds a scalar node to the memo. If the node is already in the memo, it\n   * returns the existing node.\n   */\n  addScalar(node) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing)\n      return existing;\n    this.nodes.set(hash2, node);\n    return node;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLimit.ts\nvar RelationalLimit = class extends RelationalNode {\n  constructor(input, limit, ordering) {\n    super(input.isSynchronous && limit.isSynchronous);\n    this.input = input;\n    this.limit = limit;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLimit\", this.inputGroup.id, this.limit);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.limit.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const limitCost = this.limit.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, limitCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const limit = this.limit.getOptimized();\n    return new RelationalLimit(input, limit, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, limit } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      limit: this.limit.evaluate(context, void 0)\n    });\n    const value = valueToNumber(limit) ?? Infinity;\n    if (value === Infinity)\n      return input;\n    return input.slice(0, value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalOffset.ts\nvar RelationalOffset = class extends RelationalNode {\n  constructor(input, offset, ordering) {\n    super(input.isSynchronous && offset.isSynchronous);\n    this.input = input;\n    this.offset = offset;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalOffset\", this.inputGroup.id, this.offset);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.offset.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const offsetCost = this.offset.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, offsetCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const offset = this.offset.getOptimized();\n    return new RelationalOffset(input, offset, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, offset } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      offset: this.offset.evaluate(context, void 0)\n    });\n    const value = valueToNumber(offset) ?? 0;\n    if (value === 0)\n      return input;\n    return input.slice(value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarArray.ts\nvar ScalarArray = class extends ScalarNode {\n  constructor(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.namedFields = namedFields;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    const itemDefinitions = {};\n    const namedFieldEntries = Object.entries(namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      itemDefinitions[name] = field.definition;\n    }\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: {\n        type: \"object\" /* Object */,\n        isNullable: false,\n        definitions: itemDefinitions\n      }\n    };\n  }\n  getHash() {\n    const namedFieldIds = {};\n    const namedFieldEntries = Object.entries(this.namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      namedFieldIds[name] = field.id;\n    }\n    return calculateHash(\n      \"ScalarArray\",\n      this.inputGroup.id,\n      namedFieldIds,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    const fields = Object.values(this.namedFields);\n    for (const field of fields) {\n      if (isUndefined(field.collection))\n        continue;\n      resolvedFields.add(field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new ScalarArray(\n      input,\n      this.namedFields,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context)\n      inputContext.merge(context);\n    if (tuple)\n      inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    const namedFieldEntries = Object.entries(this.namedFields);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        const value = {};\n        for (const [name, field] of namedFieldEntries) {\n          value[name] = relationTuple.getValue(field);\n        }\n        return {\n          type: \"object\" /* Object */,\n          value\n        };\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCast.ts\nvar ScalarCast = class extends ScalarNode {\n  constructor(input, definition) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.definition = definition;\n    assert(definition.isNullable, \"Unsupported non-nullable cast\");\n  }\n  getHash() {\n    return calculateHash(\"ScalarCast\", this.input, this.definition);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new ScalarCast(input, this.definition);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return DatabaseValue.cast(input, this.definition);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarFlatArray.ts\nvar ScalarFlatArray = class extends ScalarNode {\n  constructor(input, field, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.field = field;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: field.definition\n    };\n  }\n  getHash() {\n    return calculateHash(\n      \"ScalarFlatArray\",\n      this.inputGroup.id,\n      this.field.id,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    if (!isUndefined(this.field.collection)) {\n      resolvedFields.add(this.field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new ScalarFlatArray(input, this.field, this.ordering, this.referencedFields, this.referencedOuterFields);\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context)\n      inputContext.merge(context);\n    if (tuple)\n      inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        return relationTuple.getValue(this.field);\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIn.ts\nvar collation6 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarIn = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.in(left, right, collation6)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIndexOf.ts\nvar collation7 = {\n  type: 1 /* CaseSensitive */\n};\nvar ScalarIndexOf = class extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIndexOf\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new ScalarIndexOf(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.indexOf(source, target, collation7)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLength.ts\nvar ScalarLength = class extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLength\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new ScalarLength(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.length(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNot.ts\nvar ScalarNot = class extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNot\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new ScalarNot(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !valueToBoolean(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotIn.ts\nvar collation8 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNotIn = class extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new ScalarNotIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.in(left, right, collation8)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarVariable.ts\nvar ScalarVariable = class extends ScalarNode {\n  constructor(field, isOuterField) {\n    assert(field.name !== VIRTUAL_INDEX_FIELD, \"Invalid field name\");\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    if (isOuterField) {\n      referencedOuterFields.add(field);\n    } else {\n      referencedFields.add(field);\n    }\n    super(referencedFields, referencedOuterFields, true);\n    this.field = field;\n    this.isOuterField = isOuterField;\n    __publicField(this, \"definition\");\n    this.definition = field.definition;\n  }\n  getHash() {\n    return calculateHash(\"ScalarVariable\", this.field.id, this.isOuterField);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate(context, tuple) {\n    if (this.isOuterField) {\n      assert(context, \"Context must exist\");\n      return context.getValue(this.field);\n    }\n    assert(tuple, \"Tuple must exist\");\n    return tuple.getValue(this.field);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Normalizer.ts\nvar Normalizer = class {\n  constructor(memo2) {\n    this.memo = memo2;\n  }\n  finishRelational(node) {\n    return this.memo.addRelational(node);\n  }\n  newRelationalScan(collection) {\n    const node = new RelationalScan(collection);\n    return this.finishRelational(node);\n  }\n  newRelationalIndexLookup(index, query) {\n    const node = new RelationalIndexLookup(index, query);\n    return this.finishRelational(node);\n  }\n  newRelationalLeftJoin(left, right, constraint) {\n    const node = new RelationalLeftJoin(left, right, constraint);\n    return this.finishRelational(node);\n  }\n  newRelationalRightJoin(left, right, constraint) {\n    return this.newRelationalLeftJoin(right, left, constraint);\n  }\n  newRelationalFilter(input, predicate) {\n    if (input instanceof RelationalLeftJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.leftGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.left, predicate);\n      return this.newRelationalLeftJoin(pushedFilter, input.right, input.constraint);\n    }\n    if (input instanceof RelationalRightJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.rightGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.right, predicate);\n      return this.newRelationalLeftJoin(input.left, pushedFilter, input.constraint);\n    }\n    const node = new RelationalFilter(input, predicate);\n    return this.finishRelational(node);\n  }\n  newRelationalProject(input, projections, passthrough) {\n    const node = new RelationalProject(input, projections, passthrough);\n    return this.finishRelational(node);\n  }\n  newRelationalLimit(input, limit, ordering) {\n    if (input instanceof RelationalProject && // Check that the limit doesn't depend on any projected field.\n    limit.referencedFields.subsetOf(input.inputGroup.relational.outputFields) && // Check that the ordering doesn't depend on any projected field.\n    ordering.providedByFields(input.inputGroup.relational.outputFields)) {\n      const pushedLimit = this.newRelationalLimit(input.input, limit, ordering);\n      return this.newRelationalProject(pushedLimit, input.projections, input.passthrough);\n    }\n    const node = new RelationalLimit(input, limit, ordering);\n    return this.finishRelational(node);\n  }\n  newRelationalOffset(input, offset, ordering) {\n    const node = new RelationalOffset(input, offset, ordering);\n    return this.finishRelational(node);\n  }\n  finishScalar(node) {\n    const isConstant = node instanceof ScalarConstant;\n    if (!isConstant && node.isSynchronous && node.referencedFields.size === 0 && node.referencedOuterFields.size === 0) {\n      const value = node.evaluateSync();\n      return this.newScalarConstant(node.definition, value);\n    }\n    return this.memo.addScalar(node);\n  }\n  /**\n   * When we create `ScalarConstant` nodes, we always give them an unknown\n   * type definition. Before we compare them to other nodes, we need to cast\n   * them to a specific type.\n   *\n   * For example, in the following query:\n   * ```\n   * SELECT id FROM cars WHERE type = \"coupe\"\n   * ```\n   *\n   * If the `type` field is an enum, and we parse the `\"coupe\"` constant as a\n   * string, the where clause will always be false because an enum can't be\n   * equal to a string. But if we cast the string to an enum type first, the\n   * where clause will work as expected.\n   */\n  removeUnknown(node, definition) {\n    if (node.definition.type !== \"unknown\")\n      return node;\n    if (definition.type === \"unknown\")\n      return node;\n    const nullableDefinition = { ...definition, isNullable: true };\n    return this.newScalarCast(node, nullableDefinition);\n  }\n  newScalarVariable(field, isOuterField) {\n    const node = new ScalarVariable(field, isOuterField);\n    return this.finishScalar(node);\n  }\n  newScalarConstant(definition, value) {\n    const node = new ScalarConstant(definition, value);\n    return this.finishScalar(node);\n  }\n  newScalarNot(input) {\n    if (input instanceof ScalarNot) {\n      if (input.input.definition.type === \"boolean\" /* Boolean */) {\n        return input.input;\n      }\n      const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n      return this.newScalarCast(input.input, definition);\n    }\n    if (input instanceof ScalarEquals) {\n      return this.newScalarNotEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarNotEquals) {\n      return this.newScalarEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThan) {\n      return this.newScalarGreaterThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThanOrEqual) {\n      return this.newScalarGreaterThan(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThan) {\n      return this.newScalarLessThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThanOrEqual) {\n      return this.newScalarLessThan(input.left, input.right);\n    }\n    if (input instanceof ScalarAnd) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarOr(left, right);\n    }\n    if (input instanceof ScalarOr) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarAnd(left, right);\n    }\n    const node = new ScalarNot(input);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 AND true` to `$1`\n  // TODO: Normalize `true AND $1` to `$1`\n  // TODO: Normalize `$1 AND false` to `false`\n  // TODO: Normalize `false AND $1` to `false`\n  // TODO: Normalize `$1 AND ($2 AND $c)` to `($1 AND $2) AND $c`\n  newScalarAnd(left, right) {\n    const node = new ScalarAnd(left, right);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 OR true` to `$1`\n  // TODO: Normalize `true OR $1` to `$1`\n  // TODO: Normalize `$1 OR false` to `$1`\n  // TODO: Normalize `false OR $1` to `false`\n  // TODO: Normalize `$1 OR ($2 OR $c)` to `($1 OR $2) OR $c`\n  newScalarOr(left, right) {\n    const node = new ScalarOr(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarNotEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarNotEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarNotIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarCase(input, conditions, otherwise) {\n    if (input) {\n      const castConditions = [];\n      for (const { when, then } of conditions) {\n        const castWhen = this.removeUnknown(when, input.definition);\n        const castCondition = new CaseCondition(castWhen, then);\n        castConditions.push(castCondition);\n      }\n      conditions = castConditions;\n    }\n    const node = new ScalarCase(input, conditions, otherwise);\n    return this.finishScalar(node);\n  }\n  newScalarContains(source, target) {\n    const node = new ScalarContains(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarStartsWith(source, target) {\n    const node = new ScalarStartsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarEndsWith(source, target) {\n    const node = new ScalarEndsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarLength(array) {\n    const node = new ScalarLength(array);\n    return this.finishScalar(node);\n  }\n  newScalarIndexOf(source, target) {\n    const node = new ScalarIndexOf(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarCast(input, definition) {\n    if (input.definition.type === definition.type) {\n      return input;\n    }\n    const node = new ScalarCast(input, definition);\n    return this.finishScalar(node);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerNode.ts\nvar EnforcerNode = class extends RelationalNode {\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerResolve.ts\nvar EnforcerResolve = class extends EnforcerNode {\n  constructor(input, fields) {\n    super(false);\n    this.input = input;\n    this.fields = fields;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerResolve\", this.inputGroup.id, this.fields);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.fields);\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields();\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return Cost.estimate(0, 100 * KB).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new EnforcerResolve(input, this.fields);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    assert(this.fields.subsetOf(input.fields), \"Fields can't be resolved\");\n    const collections = /* @__PURE__ */ new Set();\n    for (const field of this.fields) {\n      assert(field.collection, \"Collection required to resolve field\");\n      collections.add(field.collection);\n    }\n    for (const tuple of input.tuples) {\n      for (const field of this.fields) {\n        const value = tuple.getValue(field);\n        if ((value == null ? void 0 : value.type) !== \"richtext\" /* RichText */)\n          continue;\n        assert(value.value instanceof RichText, \"Pointer must be wrapped\");\n        void value.value.resolve();\n      }\n    }\n    const collectionItems = yield Promise.all(\n      Array.from(collections).map(async (collection) => {\n        const pointers = [];\n        for (const tuple of input.tuples) {\n          const pointer = tuple.getPointer(collection);\n          if (pointer)\n            pointers.push(pointer);\n        }\n        const items = await collection.data.resolveItems(pointers);\n        assert(items.length === pointers.length, \"Invalid number of items\");\n        return [collection, items];\n      })\n    );\n    return input.map(input.fields, (tuple) => {\n      const result = new Tuple();\n      result.merge(tuple);\n      for (const [collection, items] of collectionItems) {\n        const pointer = tuple.getPointer(collection);\n        if (!pointer)\n          continue;\n        const item = items.shift();\n        assert(item, \"Item not found\");\n        assert(item.pointer === pointer, \"Pointer mismatch\");\n        for (const field of collection.fields) {\n          const value = field.getValue(item);\n          result.addValue(field, value);\n        }\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerSort.ts\nvar collation9 = {\n  type: 0 /* CaseInsensitive */\n};\nvar EnforcerSort = class extends EnforcerNode {\n  constructor(input, ordering) {\n    super(input.isSynchronous);\n    this.input = input;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerSort\", this.inputGroup.id, this.ordering);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const { field } of this.ordering.fields) {\n      if (field.name === VIRTUAL_INDEX_FIELD)\n        continue;\n      if (isUndefined(field.collection))\n        continue;\n      resolvedFields.add(field);\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new EnforcerSort(input, this.ordering);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    return input.sort((leftTuple, rightTuple) => {\n      for (const { field, direction } of this.ordering.fields) {\n        const isAscending = direction === \"asc\" /* Ascending */;\n        if (field.name === VIRTUAL_INDEX_FIELD) {\n          const collection = field.collection;\n          assert(collection, \"Collection required for sorting\");\n          const leftPointer = leftTuple.getPointer(collection);\n          assert(leftPointer, \"Pointer required for sorting\");\n          const leftItem = { pointer: leftPointer, data: {} };\n          const rightPointer = rightTuple.getPointer(collection);\n          assert(rightPointer, \"Pointer required for sorting\");\n          const rightItem = { pointer: rightPointer, data: {} };\n          const order = collection.data.compareItems(leftItem, rightItem);\n          return isAscending ? order : -order;\n        }\n        const leftValue = leftTuple.getValue(field);\n        const rightValue = rightTuple.getValue(field);\n        if (DatabaseValue.equal(leftValue, rightValue, collation9)) {\n          continue;\n        }\n        if (isNull(leftValue) || DatabaseValue.lessThan(leftValue, rightValue, collation9)) {\n          return isAscending ? -1 : 1;\n        }\n        if (isNull(rightValue) || DatabaseValue.greaterThan(leftValue, rightValue, collation9)) {\n          return isAscending ? 1 : -1;\n        }\n        throw new Error(\"Invalid comparison\");\n      }\n      return 0;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalAssert.ts\nvar collation10 = {\n  type: 1 /* CaseSensitive */\n};\n\n// ../../library/src/modules/cms/optimizer/Optimizer.ts\nvar Optimizer = class {\n  constructor(query, locale) {\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"memo\", new Memo());\n    __publicField(this, \"normalizer\", new Normalizer(this.memo));\n    __publicField(this, \"explorer\", new Explorer(this.normalizer));\n  }\n  optimize() {\n    const builder = new Builder(this.normalizer, this.query, this.locale);\n    const outScope = builder.build();\n    const root = outScope.takeNode();\n    const group = root.getGroup();\n    const required = outScope.getRequiredProps();\n    this.optimizeGroup(group, required);\n    const optimized = group.getOptimized(required);\n    const namedFields = outScope.getNamedFields();\n    return [optimized, namedFields];\n  }\n  optimizeGroup(group, required) {\n    const winner = group.getWinner(required);\n    if (winner.node)\n      return winner.cost;\n    const normalized = group.nodes[0];\n    assert(normalized, \"Normalized node not found\");\n    this.createEnforcer(winner, normalized, required);\n    for (const node of group.nodes) {\n      if (required.canProvide(node)) {\n        const cost = node.optimize(this, required);\n        winner.update(node, cost);\n      }\n      if (required.isMinimal) {\n        this.explorer.explore(node);\n      }\n    }\n    if (false) {\n      assert(winner.node, \"Group not optimized\");\n      const cache2 = /* @__PURE__ */ new Map();\n      winner.node = new RelationalAssert(winner.node, required, cache2);\n    }\n    return winner.cost;\n  }\n  createEnforcer(winner, node, required) {\n    if (required.resolvedFields.size > 0) {\n      const enforcer = new EnforcerResolve(node, required.resolvedFields);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n    if (required.ordering.length > 0) {\n      const enforcer = new EnforcerSort(node, required.ordering);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n  }\n};\n\n// ../../library/src/modules/cms/stringifyQuery.ts\nfunction stringifyIdentifier(expression) {\n  if (expression.collection) {\n    return `\"${expression.collection}\".\"${expression.name}\"`;\n  }\n  return `\"${expression.name}\"`;\n}\nfunction stringifyLiteralValue(expression) {\n  if (typeof expression.value === \"string\") {\n    return `'${expression.value}'`;\n  }\n  return expression.value;\n}\nfunction stringifyFunctionCall(expression) {\n  return `${expression.functionName}(${expression.arguments.map((argument) => stringifyExpression(argument)).join(\", \")})`;\n}\nfunction stringifyCaseExpression(expression) {\n  let caseString = \"CASE\";\n  if (expression.value) {\n    caseString += ` ${stringifyExpression(expression.value)}`;\n  }\n  for (const condition of expression.conditions) {\n    caseString += ` WHEN ${stringifyExpression(condition.when)} THEN ${stringifyExpression(condition.then)}`;\n  }\n  if (expression.else) {\n    caseString += ` ELSE ${stringifyExpression(expression.else)}`;\n  }\n  caseString += \" END\";\n  return caseString;\n}\nfunction stringifyUnaryOperation(expression) {\n  const value = stringifyExpression(expression.value);\n  const operator = expression.operator.toUpperCase();\n  return `${operator} ${value}`;\n}\nfunction stringifyBinaryOperation(expression) {\n  const left = stringifyExpression(expression.left);\n  const right = stringifyExpression(expression.right);\n  const operator = expression.operator.toUpperCase();\n  return `${left} ${operator} ${right}`;\n}\nfunction stringifyTypeCast(expression) {\n  return `CAST(${stringifyExpression(expression.value)} as ${expression.dataType})`;\n}\nfunction stringifyExpression(expression) {\n  switch (expression.type) {\n    case \"Identifier\":\n      return stringifyIdentifier(expression);\n    case \"LiteralValue\":\n      return stringifyLiteralValue(expression);\n    case \"FunctionCall\":\n      return stringifyFunctionCall(expression);\n    case \"Case\":\n      return stringifyCaseExpression(expression);\n    case \"UnaryOperation\":\n      return stringifyUnaryOperation(expression);\n    case \"BinaryOperation\":\n      return stringifyBinaryOperation(expression);\n    case \"TypeCast\":\n      return stringifyTypeCast(expression);\n    case \"Select\":\n      return `${stringifyQuery(expression)}`;\n    default: {\n      assertNever(expression);\n    }\n  }\n}\nfunction stringifyCollection(collection) {\n  if (isDatabaseCollection(collection.data)) {\n    return \"Collection\";\n  }\n  if (collection.alias) {\n    return `\"${collection.data.displayName}\" AS \"${collection.alias}\"`;\n  }\n  return `\"${collection.data.displayName}\"`;\n}\nfunction stringifyJoin(join) {\n  let result = `${stringifyFrom(join.left)} LEFT JOIN ${stringifyFrom(join.right)}`;\n  if (join.constraint) {\n    result += ` ON ${stringifyExpression(join.constraint)}`;\n  }\n  return result;\n}\nfunction stringifyFrom(from) {\n  switch (from.type) {\n    case \"Collection\":\n      return stringifyCollection(from);\n    case \"LeftJoin\":\n      return stringifyJoin(from);\n    default:\n      assertNever(from);\n  }\n}\nfunction autoIndentSql(sql) {\n  let formattedSql = \"\";\n  const tokens = sql.split(/\\s+/u);\n  tokens.forEach((token) => {\n    if (token === \"\")\n      return;\n    if ([\"SELECT\", \"FROM\", \"WHERE\", \"ORDER\", \"LIMIT\", \"OFFSET\"].includes(token)) {\n      formattedSql += `\n${token}`;\n    } else if ([\"AND\", \"OR\"].includes(token)) {\n      formattedSql += `\n\t${token}`;\n    } else {\n      formattedSql += ` ${token}`;\n    }\n  });\n  return formattedSql.trim();\n}\nfunction stringifyQuery(query) {\n  let queryString = \"\";\n  queryString += `SELECT ${query.select.map((selectExpression) => {\n    const expressionString = stringifyExpression(selectExpression);\n    if (selectExpression.alias) {\n      return `${expressionString} AS \"${selectExpression.alias}\"`;\n    }\n    return expressionString;\n  }).join(\", \")}`;\n  queryString += ` FROM ${stringifyFrom(query.from)}`;\n  if (query.where) {\n    queryString += ` WHERE ${stringifyExpression(query.where)}`;\n  }\n  if (query.orderBy) {\n    queryString += ` ORDER BY ${query.orderBy.map((orderExpression) => {\n      return `${stringifyExpression(orderExpression)} ${orderExpression.direction ?? \"asc\" /* Ascending */}`;\n    }).join(\", \")}`;\n  }\n  if (query.limit) {\n    queryString += ` LIMIT ${stringifyExpression(query.limit)}`;\n  }\n  if (query.offset) {\n    queryString += ` OFFSET ${stringifyExpression(query.offset)}`;\n  }\n  return autoIndentSql(queryString);\n}\n\n// ../../library/src/modules/cms/QueryEngine.ts\nvar log = /* @__PURE__ */ getLogger(\"query-engine\");\nvar QueryEngine = class {\n  async query(query, locale) {\n    log.debug(`Query:\n${stringifyQuery(query)}`);\n    const optimizer = new Optimizer(query, locale);\n    const [root, namedFields] = optimizer.optimize();\n    const relation = await root.evaluateAsync();\n    const namedFieldEntries = Object.entries(namedFields);\n    const result = await Promise.all(\n      relation.tuples.map(async (tuple) => {\n        const resolvedFields = await Promise.all(\n          namedFieldEntries.map(async ([name, field]) => {\n            const value = tuple.getValue(field);\n            const resolved = await this.resolveValue(value);\n            return [name, resolved];\n          })\n        );\n        return Object.fromEntries(resolvedFields);\n      })\n    );\n    return result;\n  }\n  async resolveValue(value) {\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(value.value instanceof RichText, \"Pointer must be wrapped\");\n      return value.value.resolve();\n    }\n    if ((value == null ? void 0 : value.type) === \"array\" /* Array */) {\n      return Promise.all(\n        value.value.map(async (item) => {\n          return this.resolveValue(item);\n        })\n      );\n    }\n    if ((value == null ? void 0 : value.type) === \"object\" /* Object */) {\n      const entries = Object.entries(value.value);\n      const resolvedEntries = await Promise.all(\n        entries.map(async ([key7, item]) => {\n          const resolved = await this.resolveValue(item);\n          return [key7, resolved];\n        })\n      );\n      return Object.fromEntries(resolvedEntries);\n    }\n    return (value == null ? void 0 : value.value) ?? null;\n  }\n};\n\n// ../../library/src/modules/cms/QueryCache.ts\nvar QueryCache = class {\n  constructor(queryEngine2) {\n    this.queryEngine = queryEngine2;\n    // TODO: Use an LRU cache instead.\n    __publicField(this, \"cache\", /* @__PURE__ */ new Map());\n  }\n  get(query, locale) {\n    const key7 = getCacheKey(query, locale);\n    const existing = this.cache.get(key7);\n    if (existing)\n      return existing;\n    const resolver = () => this.queryEngine.query(query, locale);\n    const value = new LazyValue(resolver);\n    this.cache.set(key7, value);\n    return value;\n  }\n};\nvar collectionIds = /* @__PURE__ */ new WeakMap();\nfunction getCollectionId(collection) {\n  const existing = collectionIds.get(collection);\n  if (existing)\n    return existing;\n  const id = Math.random().toString(16).slice(2);\n  collectionIds.set(collection, id);\n  return id;\n}\nfunction replaceCollection(_, value) {\n  if (isObject(value) && value.type === \"Collection\" && isAnyCollection(value.data)) {\n    return getCollectionId(value.data);\n  }\n  return value;\n}\nfunction getCacheKey(query, locale) {\n  const localeId = (locale == null ? void 0 : locale.id) ?? \"default\";\n  return JSON.stringify(query, replaceCollection) + localeId;\n}\n\n// ../../library/src/modules/useActiveVariantCallback.ts\nimport { useEffect as useEffect19, useRef as useRef19 } from \"react\";\nfunction rejectPending(pendingTimers, pendingPromises) {\n  pendingTimers.forEach((t) => clearTimeout(t));\n  pendingTimers.clear();\n  pendingPromises.forEach((reject) => reject == null ? void 0 : reject(\"Callback cancelled by variant change\"));\n  pendingPromises.clear();\n}\nfunction createSet() {\n  return /* @__PURE__ */ new Set();\n}\nfunction useActiveVariantCallback(baseVariant) {\n  const pendingPromises = useConstant(createSet);\n  const pendingTimers = useConstant(createSet);\n  useOnCurrentTargetChange(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  });\n  useEffect19(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  }, []);\n  useEffect19(() => {\n    rejectPending(pendingTimers, pendingPromises);\n  }, [baseVariant]);\n  return useRef19({\n    /**\n     * Create a callback that can be cancelled if the base variant changes.\n     */\n    activeVariantCallback: (callback) => async (...args) => {\n      return new Promise((resolve, reject) => {\n        pendingPromises.add(reject);\n        void callback(...args).then(resolve);\n      }).catch(() => {\n      });\n    },\n    /**\n     * Execute a callback after a defined period of time. The callback will not\n     * be called if pending events are cancelled because the timeout will be\n     * cancelled.\n     */\n    delay: async (callback, msDelay) => {\n      await new Promise((resolve) => {\n        pendingTimers.add(globalThis.setTimeout(() => resolve(true), msDelay));\n      });\n      callback();\n    }\n  }).current;\n}\nfunction useActiveTargetCallback() {\n  const value = useActiveVariantCallback(void 0);\n  return useRef19({\n    activeTargetCallback: value.activeVariantCallback,\n    delay: value.delay\n  }).current;\n}\n\n// ../../library/src/modules/useAddVariantProps.ts\nimport React67 from \"react\";\nfunction useAddVariantProps(baseVariant, gestureVariant, variantProps) {\n  return React67.useCallback(\n    (id) => {\n      var _a, _b, _c;\n      if (!variantProps)\n        return {};\n      if (!baseVariant)\n        return {};\n      if (gestureVariant) {\n        return Object.assign({}, (_a = variantProps[baseVariant]) == null ? void 0 : _a[id], (_b = variantProps[gestureVariant]) == null ? void 0 : _b[id]);\n      }\n      return ((_c = variantProps[baseVariant]) == null ? void 0 : _c[id]) || {};\n    },\n    [baseVariant, gestureVariant, variantProps]\n  );\n}\n\n// ../../library/src/modules/useBreakpointVariants.ts\nimport { startTransition as startTransition7, useCallback as useCallback14, useContext as useContext23, useEffect as useEffect20, useRef as useRef20 } from \"react\";\nfunction createMediaQueriesFromBreakpoints(breakpoints) {\n  const mediaQueries = {};\n  for (const [variant, query] of Object.entries(breakpoints)) {\n    const { min = 0, max } = query;\n    const mediaQuery = [];\n    if (min)\n      mediaQuery.push(`(min-width: ${min}px)`);\n    if (max)\n      mediaQuery.push(`(max-width: ${max}px)`);\n    if (mediaQuery.length)\n      mediaQueries[variant] = mediaQuery.join(\" and \");\n  }\n  return mediaQueries;\n}\nfunction activeMediaQueryFromWindow(mediaQueries) {\n  for (const [variant, query] of Object.entries(mediaQueries)) {\n    const mql = safeWindow.matchMedia(query);\n    if (mql.matches)\n      return variant;\n  }\n}\nfunction activeBreakpointHashesFromWindow(breakpoints) {\n  var _a;\n  const matches = [];\n  for (const { hash: hash2, mediaQuery } of breakpoints) {\n    if (!mediaQuery)\n      continue;\n    const mql = safeWindow.matchMedia(mediaQuery);\n    if (mql.matches)\n      matches.push(hash2);\n  }\n  if (matches.length > 0)\n    return matches;\n  const defaultHash = (_a = breakpoints[0]) == null ? void 0 : _a.hash;\n  if (!defaultHash)\n    return void 0;\n  return [defaultHash];\n}\nfunction useHydratedBreakpointVariants(initial, mediaQueries, hydratedWithInitial = true) {\n  const isInitialNavigation = useContext23(IsInitialNavigationContext);\n  const isStaticRenderer2 = useIsStaticRenderer();\n  const usesMediaQueries = !isStaticRenderer2 && isBrowser2();\n  const baseVariant = useRef20(usesMediaQueries ? activeMediaQueryFromWindow(mediaQueries) ?? initial : initial);\n  const basePropsVariant = useRef20(hydratedWithInitial && isInitialNavigation ? initial : baseVariant.current);\n  const forceUpdate = useForceUpdate2();\n  const instantTransition = useInstantTransition();\n  const setActiveVariantInstant = useCallback14(\n    (variant) => {\n      if (variant !== baseVariant.current || variant !== basePropsVariant.current) {\n        let updateStateAndRerender2 = function() {\n          baseVariant.current = basePropsVariant.current = variant;\n          startTransition7(() => {\n            forceUpdate();\n          });\n        };\n        var updateStateAndRerender = updateStateAndRerender2;\n        if (isStaticRenderer2) {\n          updateStateAndRerender2();\n        } else {\n          instantTransition(() => {\n            updateStateAndRerender2();\n          });\n        }\n      }\n    },\n    [instantTransition, forceUpdate, isStaticRenderer2]\n  );\n  useIsomorphicLayoutEffect2(() => {\n    if (!isStaticRenderer2)\n      return;\n    setActiveVariantInstant(initial);\n  }, [initial, isStaticRenderer2, setActiveVariantInstant]);\n  useIsomorphicLayoutEffect2(() => {\n    if (!hydratedWithInitial || isInitialNavigation !== true)\n      return;\n    setActiveVariantInstant(baseVariant.current);\n  }, []);\n  useEffect20(() => {\n    const callbacks = [];\n    for (const [variant, query] of Object.entries(mediaQueries)) {\n      const mql = safeWindow.matchMedia(query);\n      const callback = (event) => {\n        if (event.matches)\n          setActiveVariantInstant(variant);\n      };\n      addMQLCallback(mql, callback);\n      callbacks.push([mql, callback]);\n    }\n    return () => callbacks.forEach(([mql, callback]) => removeMQLCallback(mql, callback));\n  }, [mediaQueries, setActiveVariantInstant]);\n  return [baseVariant.current, basePropsVariant.current];\n}\nfunction addMQLCallback(mql, callback) {\n  if (mql.addEventListener) {\n    mql.addEventListener(\"change\", callback);\n  } else {\n    mql.addListener(callback);\n  }\n}\nfunction removeMQLCallback(mql, callback) {\n  if (mql.removeEventListener) {\n    mql.removeEventListener(\"change\", callback);\n  } else {\n    mql.removeListener(callback);\n  }\n}\nfunction useBreakpointVariants(initial, _width, breakpoints) {\n  const mediaQueries = useConstant(() => createMediaQueriesFromBreakpoints(breakpoints));\n  const [initialVariant] = useHydratedBreakpointVariants(initial, mediaQueries, true);\n  return initialVariant;\n}\nfunction removeHiddenBreakpointLayers(_initial, _mediaQueries, _variantClassNames) {\n}\nvar framerBreakpointCSSSelector = \"style[data-framer-breakpoint-css]\";\nfunction requestIdleCallbackFallback(callback) {\n  setTimeout(callback, 1);\n}\nfunction removeHiddenBreakpointLayersV2(breakpoints) {\n  var _a, _b, _c, _d;\n  const suspenseBoundaries = /* @__PURE__ */ new Set();\n  const activeBreakpointHashes = activeBreakpointHashesFromWindow(breakpoints);\n  if (activeBreakpointHashes) {\n    for (const hash2 of activeBreakpointHashes) {\n      for (const hiddenLayer of document.querySelectorAll(\".hidden-\" + hash2)) {\n        if (isSuspenseBoundaryStart(hiddenLayer.previousSibling)) {\n          suspenseBoundaries.add(hiddenLayer.previousSibling);\n        }\n        (_a = hiddenLayer.parentNode) == null ? void 0 : _a.removeChild(hiddenLayer);\n      }\n    }\n  }\n  const requestIdleCallback2 = safeWindow.requestIdleCallback ?? requestIdleCallbackFallback;\n  requestIdleCallback2(() => {\n    var _a2;\n    (_a2 = document.querySelector(framerBreakpointCSSSelector)) == null ? void 0 : _a2.remove();\n  });\n  for (const ssrVariant of document.querySelectorAll(\".ssr-variant:empty\")) {\n    if (isSuspenseBoundaryStart(ssrVariant.previousSibling)) {\n      suspenseBoundaries.add(ssrVariant.previousSibling);\n    }\n    (_b = ssrVariant.parentNode) == null ? void 0 : _b.removeChild(ssrVariant);\n  }\n  for (const suspenseBoundary of suspenseBoundaries) {\n    if (isSuspenseBoundaryEnd(suspenseBoundary.nextSibling)) {\n      (_c = suspenseBoundary.parentNode) == null ? void 0 : _c.removeChild(suspenseBoundary.nextSibling);\n      (_d = suspenseBoundary.parentNode) == null ? void 0 : _d.removeChild(suspenseBoundary);\n    }\n  }\n}\nfunction isSuspenseBoundaryStart(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"$\";\n}\nfunction isSuspenseBoundaryEnd(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"/$\";\n}\n\n// ../../library/src/modules/useDataRecord.ts\nimport { useMemo as useMemo13 } from \"react\";\nfunction useDataRecord(collection, variables) {\n  return useMemo13(() => {\n    if (!Array.isArray(collection)) {\n      return null;\n    }\n    if (!variables) {\n      return null;\n    }\n    const pageRecord = collection.find((record) => {\n      return Object.entries(variables).every(([key7, value]) => {\n        const recordValue = record[key7];\n        if (value === void 0 || recordValue === void 0 || isObject(value) || isObject(recordValue)) {\n          return false;\n        }\n        return String(value) === String(recordValue);\n      });\n    });\n    return pageRecord ?? null;\n  }, [collection, variables]);\n}\n\n// ../../library/src/modules/useDynamicRefs.ts\nimport React68, { createRef, useMemo as useMemo14 } from \"react\";\nfunction useDynamicRefs() {\n  const map2 = useConstant(() => /* @__PURE__ */ new Map());\n  return React68.useCallback((key7) => {\n    const existing = map2.get(key7);\n    if (existing)\n      return existing;\n    const ref = createRef();\n    map2.set(key7, ref);\n    return ref;\n  }, []);\n}\nvar map = /* @__PURE__ */ new Map();\nfunction useSiteRefs() {\n  const route = useCurrentRoute();\n  const path = useMemo14(() => {\n    return getPathForRoute(route, {\n      currentRoutePath: route == null ? void 0 : route.path,\n      currentPathVariables: route == null ? void 0 : route.pathVariables,\n      preserveQueryParams: false,\n      relative: false,\n      siteCanonicalURL: void 0\n    });\n  }, [route]);\n  return React68.useCallback(\n    (key7) => {\n      if (!key7)\n        return;\n      const computedKey = `${path}-${key7}`;\n      const existing = map.get(computedKey);\n      if (existing)\n        return existing;\n      const ref = createRef();\n      map.set(computedKey, ref);\n      return ref;\n    },\n    [path]\n  );\n}\n\n// ../../library/src/modules/useGamepad.ts\nimport React69 from \"react\";\nfunction isFramerGamepadKeydownData(value) {\n  return isObject(value) && value.mapping !== void 0;\n}\nfunction gamepadInputsHaveChanged(previous, current) {\n  if (previous.length !== current.length)\n    return true;\n  if (!previous.every((item, i) => current[i] === item))\n    return true;\n  return false;\n}\nfunction createGamepadPoller() {\n  const handlers = /* @__PURE__ */ new Set();\n  let isConnected = false;\n  let isPolling = null;\n  let lastKeys = [];\n  const startPolling = () => {\n    const input = getGamepadInputs();\n    if (!input)\n      return;\n    const { gamepad, inputs } = input;\n    const { mapping, id } = gamepad;\n    if (gamepadInputsHaveChanged(lastKeys, inputs))\n      handlers.forEach((handler) => handler({ inputs, mapping, id }));\n    lastKeys = inputs;\n    isPolling = safeWindow.requestAnimationFrame(startPolling);\n  };\n  const handleConnection = () => {\n    if (isConnected || isPolling)\n      return;\n    startPolling();\n    isConnected = true;\n  };\n  const stopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.cancelAnimationFrame(isPolling);\n    isPolling = null;\n  };\n  const handleDisconnection = () => {\n    if (!isConnected)\n      return;\n    stopPolling();\n    isConnected = false;\n  };\n  const setupAndStartPolling = () => {\n    if (isPolling)\n      return;\n    const gamepad = getGamepadInputs();\n    if (!gamepad) {\n      safeWindow.addEventListener(\"gamepadconnected\", handleConnection);\n      return;\n    }\n    safeWindow.addEventListener(\"gamepaddisconnected\", handleDisconnection);\n    isConnected = true;\n    startPolling();\n  };\n  const cleanupAndStopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.removeEventListener(\"gamepadconnected\", handleConnection);\n    safeWindow.removeEventListener(\"gamepaddisconnected\", handleDisconnection);\n    stopPolling();\n  };\n  return {\n    register(callback) {\n      if (handlers.size === 0)\n        setupAndStartPolling();\n      handlers.add(callback);\n    },\n    unregister(callback) {\n      handlers.delete(callback);\n      if (handlers.size === 0)\n        cleanupAndStopPolling();\n    }\n  };\n}\nvar gamepadPoller = /* @__PURE__ */ createGamepadPoller();\nvar GamepadContext = /* @__PURE__ */ React69.createContext(gamepadPoller);\nfunction getGamepadInputs() {\n  let firstConnectedGamepad = null;\n  const gamepads = navigator.getGamepads();\n  for (const gamepad of gamepads) {\n    if (!gamepad)\n      continue;\n    if (!firstConnectedGamepad)\n      firstConnectedGamepad = gamepad;\n    const inputs = [...scanPressedAxis(gamepad), ...scanPressedButtons(gamepad)];\n    if (inputs.length > 0)\n      return { gamepad, inputs };\n  }\n  if (firstConnectedGamepad)\n    return { gamepad: firstConnectedGamepad, inputs: [] };\n  return null;\n}\nfunction scanPressedAxis(gamepad) {\n  const axes = [];\n  for (const [idx, axis] of gamepad.axes.entries()) {\n    if (idx > 3)\n      continue;\n    if (axis <= -0.5)\n      axes.push(`Axis ${idx}-`);\n    if (axis > 0.5)\n      axes.push(`Axis ${idx}+`);\n  }\n  return axes;\n}\nfunction scanPressedButtons(gamepad) {\n  const buttons = [];\n  for (const [idx, button] of gamepad.buttons.entries()) {\n    if (isButtonPressed(button))\n      buttons.push(`Button ${idx}`);\n  }\n  return buttons;\n}\nfunction isButtonPressed(button) {\n  return button.pressed === true || button.value > 0;\n}\nfunction useGamepad(input, callback, { mapping, on } = {}) {\n  const context = React69.useContext(GamepadContext);\n  const settings = useConstant(() => ({\n    mapping: mapping ?? \"standard\",\n    on: on ?? \"keydown\"\n  }));\n  const stateRef = React69.useRef({\n    pressed: false,\n    handler: callback\n  });\n  const cb = React69.useCallback(\n    (gamepad) => {\n      const { pressed, handler } = stateRef.current;\n      if (gamepad.inputs.includes(input) && settings.mapping === gamepad.mapping) {\n        settings.on === \"keydown\" && handler();\n        stateRef.current.pressed = true;\n      } else if (pressed) {\n        settings.on === \"keyup\" && handler();\n        stateRef.current.pressed = false;\n      }\n    },\n    [input, settings]\n  );\n  useOnCurrentTargetChange((isInTarget, isOverlayed) => {\n    const isActive = isInTarget && !isOverlayed;\n    if (isActive) {\n      context.register(cb);\n    } else {\n      context.unregister(cb);\n    }\n    return () => context.unregister(cb);\n  }, []);\n  React69.useEffect(() => {\n    return () => context.unregister(cb);\n  }, [cb, context]);\n  React69.useEffect(() => {\n    stateRef.current.handler = callback;\n  }, [callback]);\n}\n\n// ../../library/src/modules/useHotkey.ts\nimport React70 from \"react\";\nvar modifierDefaults = {\n  altKey: false,\n  ctrlKey: false,\n  metaKey: false,\n  shiftKey: false\n};\nfunction createShortcutDefinition(shortcut) {\n  const keys3 = shortcut.split(\"+\");\n  const key7 = keys3.pop();\n  if (!key7)\n    return void 0;\n  const modifiers = {};\n  for (const modifier of keys3) {\n    modifiers[`${modifier}Key`] = true;\n  }\n  return {\n    ...modifierDefaults,\n    ...modifiers,\n    key: key7\n  };\n}\nfunction useHotkey(shortcut, callback) {\n  const inTarget = React70.useRef(true);\n  const shortcutDefinition = useConstant(() => createShortcutDefinition(shortcut));\n  useOnCurrentTargetChange((isCurrentTarget, isOverlayed) => {\n    inTarget.current = isCurrentTarget && !isOverlayed;\n    return () => inTarget.current = false;\n  });\n  const eventHandler = React70.useCallback(\n    (event) => {\n      if (!shortcutDefinition)\n        return;\n      if (!inTarget.current)\n        return;\n      if (!Object.keys(shortcutDefinition).every((key7) => shortcutDefinition[key7] === asRecord(event)[key7]))\n        return;\n      event.preventDefault();\n      callback();\n    },\n    [shortcutDefinition, callback]\n  );\n  React70.useEffect(() => {\n    document.addEventListener(\"keydown\", eventHandler);\n    return () => document.removeEventListener(\"keydown\", eventHandler);\n  }, [eventHandler]);\n}\n\n// ../../library/src/modules/useNavigate.tsx\nfunction useNavigate() {\n  const { navigate } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  if (!navigate)\n    return () => {\n    };\n  return (target) => {\n    if (onCanvas)\n      return;\n    navigate(target);\n    return false;\n  };\n}\n\n// ../../library/src/modules/useOnVariantChange.ts\nimport React71 from \"react\";\nfunction callbackForVariant(map2, variant) {\n  if (map2[variant])\n    return map2[variant];\n  if (variant in map2)\n    return void 0;\n  return map2.default;\n}\nfunction useOnVariantChange(variant, callbackMap) {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (isRenderingStaticContent)\n    return;\n  const isActiveScreenRef = React71.useRef(true);\n  const callbackMapRef = React71.useRef(callbackMap);\n  useOnCurrentTargetChange((isCurrent, isOverlayed) => {\n    const isActiveScreen = isCurrent && !isOverlayed;\n    if (!isActiveScreenRef.current && isActiveScreen) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n    isActiveScreenRef.current = isActiveScreen;\n  }, []);\n  React71.useEffect(() => {\n    if (isActiveScreenRef.current) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n  }, [variant]);\n}\nfunction useOnAppear(callback) {\n  useOnVariantChange(\"default\", { default: callback });\n}\n\n// ../../library/src/modules/useOverlayState.tsx\nimport React72 from \"react\";\nasync function setOverflow(blockDocumentScrolling, show, yieldBefore2 = true) {\n  if (blockDocumentScrolling === false)\n    return;\n  if (yieldBefore2)\n    await interactionResponse();\n  frame.render(() => {\n    const htmlStyle = document.documentElement.style;\n    if (show) {\n      htmlStyle.setProperty(\"overflow\", \"hidden\");\n    } else {\n      htmlStyle.removeProperty(\"overflow\");\n    }\n  });\n}\nfunction useOverlayState({ blockDocumentScrolling = true } = {}) {\n  const [showOverlay, setShowOverlay] = React72.useState(false);\n  const callback = React72.useCallback(\n    (show) => {\n      setShowOverlay(show);\n      void setOverflow(blockDocumentScrolling, show);\n    },\n    [blockDocumentScrolling]\n  );\n  React72.useEffect(\n    () => () => {\n      void setOverflow(blockDocumentScrolling, false, false);\n    },\n    [blockDocumentScrolling]\n  );\n  return [showOverlay, callback];\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nimport React73 from \"react\";\n\n// ../../library/src/router/isRoute.ts\nvar key4 = \"page\";\nfunction isRoute(route) {\n  return isObject(route) && key4 in route && route.page !== void 0;\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nasync function componentForRoute(route) {\n  if (!isRoute(route))\n    return;\n  const { page: routeComponent } = route;\n  if (!routeComponent)\n    return;\n  if (React73.isValidElement(routeComponent))\n    return routeComponent;\n  if (withPreload(routeComponent))\n    await routeComponent.preload();\n  return React73.createElement(routeComponent, { key: route.path });\n}\nvar preloadKey2 = \"preload\";\nfunction withPreload(component) {\n  return !!component && isObject(component) && preloadKey2 in component;\n}\nfunction usePrototypeNavigate({ preload } = {}) {\n  const navigation = useNavigation();\n  const { getRoute } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  React73.useEffect(() => {\n    if (!navigation || onCanvas)\n      return;\n    preload == null ? void 0 : preload.forEach((componentOrRoute) => {\n      let component;\n      if (isString(componentOrRoute)) {\n        const route = getRoute == null ? void 0 : getRoute(componentOrRoute);\n        if (isRoute(route)) {\n          component = route.page;\n        }\n      } else {\n        component = componentOrRoute;\n      }\n      if (component && withPreload(component))\n        void component.preload();\n    });\n  }, []);\n  if (!navigation)\n    return () => {\n    };\n  return async (target, options = {}) => {\n    if (onCanvas)\n      return;\n    if (target === \"previous\") {\n      navigation.goBack();\n      return false;\n    }\n    const Component18 = typeof target === \"string\" ? await componentForRoute(getRoute == null ? void 0 : getRoute(target)).catch(() => {\n    }) : React73.isValidElement(target) ? target : null;\n    if (!Component18)\n      return;\n    const { appearsFrom, backdropColor, animation } = options;\n    const transitionType = options.transition || \"instant\";\n    switch (transitionType) {\n      case \"instant\":\n        navigation.instant(Component18);\n        break;\n      case \"fade\":\n        navigation.fade(Component18, { animation });\n        break;\n      case \"push\":\n        navigation.push(Component18, { appearsFrom, animation });\n        break;\n      case \"flip\":\n        navigation.flip(Component18, { appearsFrom, animation });\n        break;\n      case \"magicMotion\":\n        navigation.magicMotion(Component18, { animation });\n        break;\n      case \"modal\":\n        navigation.modal(Component18, { backdropColor, animation });\n        break;\n      case \"overlay\":\n        navigation.overlay(Component18, { appearsFrom, backdropColor, animation });\n        break;\n    }\n    return false;\n  };\n}\n\n// ../../library/src/modules/useQueryData.ts\nimport { useCallback as useCallback15 } from \"react\";\nfunction use(promise) {\n  throw promise;\n}\nvar queryEngine = /* @__PURE__ */ new QueryEngine();\nvar queryCache = /* @__PURE__ */ new QueryCache(queryEngine);\nfunction useQueryData(query) {\n  const { activeLocale } = useLocaleInfo();\n  const cached = queryCache.get(query, activeLocale);\n  const promise = cached.preload();\n  if (promise)\n    use(promise);\n  return cached.read();\n}\nfunction useQueryCount(query) {\n  const countQuery = { ...query, select: [] };\n  const collection = useQueryData(countQuery);\n  return collection.length;\n}\nfunction usePreloadQuery() {\n  const { activeLocale } = useLocaleInfo();\n  return useCallback15(\n    async (query) => {\n      return queryCache.get(query, activeLocale).readAsync();\n    },\n    [activeLocale]\n  );\n}\nfunction getWhereExpressionFromPathVariables(pathVariables, collection) {\n  const entries = Object.entries(pathVariables ?? {}).filter(([, value]) => {\n    if (isUndefined(value))\n      return false;\n    if (isObject(value))\n      return false;\n    return true;\n  });\n  const expressions = entries.map(\n    ([name, value]) => ({\n      type: \"BinaryOperation\",\n      operator: \"==\" /* Equals */,\n      left: {\n        type: \"TypeCast\",\n        value: {\n          type: \"Identifier\",\n          name,\n          collection\n        },\n        dataType: \"STRING\" /* String */\n      },\n      right: {\n        type: \"LiteralValue\",\n        value: String(value)\n      }\n    })\n  );\n  if (expressions.length === 0) {\n    return {\n      type: \"LiteralValue\",\n      value: false\n    };\n  }\n  return expressions.reduce(\n    (result, expression) => ({\n      type: \"BinaryOperation\",\n      operator: \"and\" /* And */,\n      left: result,\n      right: expression\n    })\n  );\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nimport { useMemo as useMemo15 } from \"react\";\n\n// ../../library/src/components/utils/useLoadMorePagination.tsx\nimport { startTransition as startTransition8, useCallback as useCallback16, useEffect as useEffect21, useState as useState7 } from \"react\";\nfunction useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspendedLoadingState = false) {\n  const totalPages = Math.ceil(totalSize / pageSize);\n  const [paginationInfo, setPaginationInfo] = useState7(() => {\n    var _a, _b, _c, _d;\n    const currentPage = ((_d = (_c = (_b = (_a = globalThis == null ? void 0 : globalThis.history) == null ? void 0 : _a.state) == null ? void 0 : _b.paginationInfo) == null ? void 0 : _c[hash2]) == null ? void 0 : _d.currentPage) ?? 1;\n    return { currentPage, totalPages, isLoading: false };\n  });\n  useEffect21(() => {\n    startTransition8(() => {\n      setPaginationInfo((current) => {\n        if (current.totalPages === totalPages)\n          return current;\n        return { ...current, totalPages };\n      });\n    });\n  }, [totalPages]);\n  useEffect21(() => {\n    pushLoadMoreHistory(hash2, paginationInfo);\n  }, [hash2, paginationInfo]);\n  const onCanvas = useIsOnFramerCanvas();\n  const loadMore = useCallback16(() => {\n    if (onCanvas)\n      return;\n    if (paginationInfo.currentPage >= paginationInfo.totalPages)\n      return;\n    if (!paginateWithSuspendedLoadingState) {\n      startTransition8(() => {\n        setPaginationInfo((info) => ({\n          ...info,\n          currentPage: Math.min(info.currentPage + 1, info.totalPages),\n          isLoading: false\n        }));\n      });\n      return;\n    }\n    setPaginationInfo((info) => ({\n      ...info,\n      isLoading: true\n    }));\n    requestAnimationFrame(() => {\n      setPaginationInfo((info) => ({\n        ...info,\n        currentPage: Math.min(info.currentPage + 1, info.totalPages),\n        isLoading: false\n      }));\n    });\n  }, [onCanvas, paginationInfo.currentPage, paginationInfo.totalPages, paginateWithSuspendedLoadingState]);\n  return { paginationInfo, loadMore };\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nfunction useLoadMorePaginatedQuery(query, pageSize, hash2) {\n  const count = useQueryCount(query);\n  const { paginationInfo, loadMore } = useLoadMorePagination(count, pageSize, hash2, true);\n  const paginatedQuery = useMemo15(() => {\n    let limit = pageSize * paginationInfo.currentPage;\n    if (query.limit) {\n      if (query.limit.type !== \"LiteralValue\" || typeof query.limit.value !== \"number\") {\n        throw new Error(\"Unexpected type for query limit\");\n      }\n      limit = Math.min(limit, query.limit.value);\n    }\n    return { ...query, limit: { type: \"LiteralValue\", value: limit } };\n  }, [query, pageSize, paginationInfo]);\n  return { paginatedQuery, paginationInfo, loadMore };\n}\n\n// ../../library/src/modules/useVariantState.ts\nimport { startTransition as startTransition9, useCallback as useCallback17, useEffect as useEffect22, useMemo as useMemo16, useRef as useRef21 } from \"react\";\nfunction createGestureVariant(variant, type) {\n  return `${variant}-${type}`;\n}\nfunction nextVariant(allVariants, currentVariant) {\n  const index = allVariants.indexOf(currentVariant);\n  let nextIndex = index + 1;\n  if (nextIndex >= allVariants.length) {\n    nextIndex = 0;\n  }\n  const nextVariant2 = allVariants[nextIndex];\n  assert(nextVariant2 !== void 0, \"nextVariant should be defined\");\n  return nextVariant2;\n}\nfunction activeTransition(transitions, variant) {\n  if (!transitions)\n    return void 0;\n  if (variant) {\n    const variantTransition = transitions[variant];\n    if (variantTransition)\n      return variantTransition;\n  }\n  return transitions.default;\n}\nvar VariantSelector = /* @__PURE__ */ ((VariantSelector2) => {\n  VariantSelector2[\"Variant\"] = \"v\";\n  return VariantSelector2;\n})(VariantSelector || {});\nfunction getGesture(enabledGestures, isHovered, isPressed, isLoading, isError) {\n  const { hover, pressed, loading, error } = enabledGestures || {};\n  if (error && isError)\n    return \"error\";\n  if (loading && isLoading)\n    return \"loading\";\n  if (pressed && isPressed)\n    return \"pressed\";\n  if (hover && isHovered)\n    return \"hover\";\n}\nfunction createVariantClassName(baseVariant, variantClassNames) {\n  const mappedClassName = variantClassNames[baseVariant];\n  if (mappedClassName)\n    return mappedClassName;\n  return `framer-${\"v\" /* Variant */}-${baseVariant}`;\n}\nfunction safeBaseVariant(targetVariant, fallbackVariant, validBaseVariants) {\n  if (!targetVariant)\n    return fallbackVariant;\n  if (validBaseVariants.has(targetVariant))\n    return targetVariant;\n  return fallbackVariant;\n}\nvar CycleVariantState = /* @__PURE__ */ Symbol(\"cycle\");\nfunction useRunCallbackIfPageIsVisible() {\n  const listenerRef = useRef21();\n  const callbackRef = useRef21();\n  const clean = useCallback17(() => {\n    if (!listenerRef.current)\n      return;\n    document.removeEventListener(\"visibilitychange\", listenerRef.current);\n    listenerRef.current = void 0;\n    callbackRef.current = void 0;\n  }, []);\n  useEffect22(() => {\n    return () => {\n      clean();\n    };\n  }, [clean]);\n  return useCallback17(\n    (callback) => {\n      if (!document.hidden) {\n        callback();\n        clean();\n        return;\n      }\n      callbackRef.current = callback;\n      if (listenerRef.current)\n        return;\n      const listenerFn = () => {\n        var _a;\n        if (document.hidden)\n          return;\n        (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n        clean();\n      };\n      listenerRef.current = listenerFn;\n      document.addEventListener(\"visibilitychange\", listenerFn);\n    },\n    [clean]\n  );\n}\nfunction useRunCallbackIfElementIsInView() {\n  const observerRef = useRef21(null);\n  const isInViewRef = useRef21(false);\n  const callbackRef = useRef21();\n  useEffect22(() => {\n    return () => {\n      var _a;\n      (_a = observerRef.current) == null ? void 0 : _a.disconnect();\n      callbackRef.current = void 0;\n      observerRef.current = null;\n    };\n  }, []);\n  return useCallback17((callback, ref) => {\n    if (!(ref == null ? void 0 : ref.current) || isInViewRef.current) {\n      callback();\n      return;\n    }\n    callbackRef.current = callback;\n    if (observerRef.current)\n      return;\n    const observer = new IntersectionObserver((entries) => {\n      var _a;\n      let isIntersecting = false;\n      for (let i = 0; i < entries.length; ++i) {\n        const entry = entries[i];\n        isIntersecting = entry.isIntersecting;\n      }\n      isInViewRef.current = isIntersecting;\n      if (!isIntersecting)\n        return;\n      (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n    });\n    observerRef.current = observer;\n    observer.observe(ref.current);\n  }, []);\n}\nfunction useUpdateIfVisible(ref) {\n  const runUpdateIfPageIsVisible = useRunCallbackIfPageIsVisible();\n  const runUpdateIfElementIsInView = useRunCallbackIfElementIsInView();\n  return useCallback17(\n    (callback, checkViewport = false) => {\n      if (isBot) {\n        callback();\n        return;\n      }\n      const runUpdate = checkViewport && ref ? () => runUpdateIfElementIsInView(callback, ref) : callback;\n      runUpdateIfPageIsVisible(runUpdate);\n    },\n    [runUpdateIfPageIsVisible, runUpdateIfElementIsInView, ref]\n  );\n}\nfunction useVariantState({\n  variant,\n  defaultVariant: externalDefaultVariant,\n  transitions: externalTransitions,\n  enabledGestures: externalEnabledGestures,\n  cycleOrder: externalCycleOrder = [],\n  variantProps = {},\n  variantClassNames = {},\n  ref\n}) {\n  const forceUpdate = useForceUpdate2();\n  const isCanvas = useIsOnFramerCanvas();\n  const validBaseVariants = useConstant(() => new Set(externalCycleOrder));\n  const { wrapUpdatesInTransitions, pauseOffscreen: pauseOffscreenFeatureOn } = useLibraryFeatures();\n  const update = useCallback17(\n    (useTransition) => {\n      if (useTransition) {\n        startTransition9(() => void forceUpdate());\n        return;\n      }\n      forceUpdate();\n    },\n    [forceUpdate]\n  );\n  const runUpdateIfVisible = useUpdateIfVisible(ref);\n  const internalState = useRef21({\n    isHovered: false,\n    isPressed: false,\n    isError: false,\n    hasPressedVariants: true,\n    baseVariant: safeBaseVariant(variant, externalDefaultVariant, validBaseVariants),\n    lastVariant: variant,\n    gestureVariant: void 0,\n    loadedBaseVariant: {},\n    // When used in generated components, these are static values defined\n    // outside of the component function that also need to not result in\n    // memoized values being recalculated, so we dump them into the ref.\n    defaultVariant: externalDefaultVariant,\n    enabledGestures: externalEnabledGestures,\n    cycleOrder: externalCycleOrder,\n    transitions: externalTransitions\n  });\n  const resolveNextVariant = useCallback17((targetBaseVariant) => {\n    const { isHovered: isHovered2, isPressed: isPressed2, isError: isError2, enabledGestures: enabledGestures2, defaultVariant: defaultVariant2 } = internalState.current;\n    const nextBaseVariant = safeBaseVariant(targetBaseVariant, defaultVariant2, validBaseVariants);\n    const gesture = getGesture(enabledGestures2 == null ? void 0 : enabledGestures2[nextBaseVariant], isHovered2, isPressed2, false, isError2);\n    const nextGestureVariant = gesture ? createGestureVariant(nextBaseVariant, gesture) : void 0;\n    return [nextBaseVariant, nextGestureVariant];\n  }, []);\n  const updateIfNeeded = useCallback17(\n    (baseVariant2, gestureVariant2, defaultVariant2, nextBaseVariant, isError2 = false, checkViewport = false, highPriority = false, clearError = false) => {\n      const [nextBase, nextGesture] = resolveNextVariant(nextBaseVariant);\n      if (nextBase === baseVariant2 && nextGesture === gestureVariant2)\n        return;\n      if (clearError)\n        internalState.current.isError = false;\n      internalState.current.baseVariant = nextBase || defaultVariant2;\n      internalState.current.gestureVariant = nextGesture;\n      runUpdateIfVisible(\n        () => update(wrapUpdatesInTransitions && !highPriority || isError2),\n        pauseOffscreenFeatureOn && checkViewport\n      );\n    },\n    [resolveNextVariant, wrapUpdatesInTransitions, update, runUpdateIfVisible, pauseOffscreenFeatureOn]\n  );\n  const setGestureState = useCallback17(\n    ({ isHovered: isHovered2, isPressed: isPressed2, isError: isError2 }) => {\n      if (isHovered2 !== void 0)\n        internalState.current.isHovered = isHovered2;\n      if (isPressed2 !== void 0)\n        internalState.current.isPressed = isPressed2;\n      if (isError2 !== void 0)\n        internalState.current.isError = isError2;\n      const { baseVariant: baseVariant2, gestureVariant: gestureVariant2, defaultVariant: defaultVariant2 } = internalState.current;\n      const visibleUserInteraction = isPressed2 || isHovered2;\n      updateIfNeeded(\n        baseVariant2,\n        gestureVariant2,\n        defaultVariant2,\n        baseVariant2,\n        isError2,\n        !visibleUserInteraction,\n        isHovered2\n        // a hover needs instant response for a smooth UX; while we optimize for INP for clicks\n      );\n    },\n    [updateIfNeeded]\n  );\n  const setVariant = useCallback17(\n    (proposedVariant, pauseOffscreen = false) => {\n      const { defaultVariant: defaultVariant2, cycleOrder, baseVariant: baseVariant2, gestureVariant: gestureVariant2 } = internalState.current;\n      const nextBaseVariant = proposedVariant === CycleVariantState ? nextVariant(cycleOrder || [], baseVariant2 || defaultVariant2) : proposedVariant;\n      updateIfNeeded(\n        baseVariant2,\n        gestureVariant2,\n        defaultVariant2,\n        nextBaseVariant,\n        false,\n        pauseOffscreen,\n        false,\n        true\n      );\n    },\n    [updateIfNeeded]\n  );\n  const clearLoadingGesture = useCallback17(() => {\n    const { baseVariant: baseVariant2 } = internalState.current;\n    internalState.current.loadedBaseVariant[baseVariant2] = true;\n    runUpdateIfVisible(() => update(true), true);\n  }, [update, runUpdateIfVisible]);\n  if (variant !== internalState.current.lastVariant) {\n    const [nextBase, nextGesture] = resolveNextVariant(variant);\n    internalState.current.lastVariant = nextBase;\n    if (nextBase !== internalState.current.baseVariant || nextGesture !== internalState.current.gestureVariant) {\n      internalState.current.baseVariant = nextBase;\n      internalState.current.gestureVariant = nextGesture;\n    }\n  }\n  const {\n    baseVariant,\n    gestureVariant,\n    defaultVariant,\n    enabledGestures,\n    isHovered,\n    isPressed,\n    isError,\n    loadedBaseVariant\n  } = internalState.current;\n  const addVariantProps = useAddVariantProps(\n    internalState.current.baseVariant,\n    internalState.current.gestureVariant,\n    variantProps\n  );\n  return useMemo16(() => {\n    var _a;\n    const variants = [];\n    if (baseVariant !== defaultVariant)\n      variants.push(baseVariant);\n    const hasLoadingVariant = (_a = enabledGestures == null ? void 0 : enabledGestures[baseVariant]) == null ? void 0 : _a.loading;\n    const isLoading = !isError && !isCanvas && !!hasLoadingVariant && !loadedBaseVariant[baseVariant];\n    const gesture = isLoading ? createGestureVariant(baseVariant, \"loading\") : gestureVariant;\n    if (gesture)\n      variants.push(gesture);\n    const gestures = enabledGestures == null ? void 0 : enabledGestures[baseVariant];\n    const gestureHandlers = {\n      onMouseEnter: () => setGestureState({ isHovered: true }),\n      onMouseLeave: () => setGestureState({ isHovered: false })\n    };\n    if (gestures == null ? void 0 : gestures.pressed) {\n      Object.assign(gestureHandlers, {\n        onTapStart: () => setGestureState({ isPressed: true }),\n        onTapCancel: () => setGestureState({ isPressed: false }),\n        onTap: () => setGestureState({ isPressed: false })\n      });\n    }\n    return {\n      variants,\n      baseVariant,\n      gestureVariant: gesture,\n      isLoading,\n      transition: activeTransition(internalState.current.transitions, baseVariant),\n      setVariant,\n      setGestureState,\n      clearLoadingGesture,\n      addVariantProps,\n      gestureHandlers,\n      classNames: cx(\n        createVariantClassName(baseVariant, variantClassNames),\n        getGesture(gestures, isHovered, isPressed, isLoading, isError)\n      )\n    };\n  }, [\n    baseVariant,\n    gestureVariant,\n    isHovered,\n    isPressed,\n    loadedBaseVariant,\n    addVariantProps,\n    setVariant,\n    defaultVariant,\n    enabledGestures,\n    setGestureState,\n    clearLoadingGesture,\n    variantClassNames\n  ]);\n}\n\n// ../../library/src/modules/safeCSSValue.ts\nvar reUnsafeCharacters = /[}{<>&;]/u;\nfunction safeCSSValue(value) {\n  if (!isString(value))\n    return \"none\";\n  if (reUnsafeCharacters.test(value))\n    return \"none\";\n  return value;\n}\n\n// ../../library/src/modules/code-boundary/withCodeBoundaryForOverrides.tsx\nimport React74 from \"react\";\nimport { jsx as jsx62 } from \"react/jsx-runtime\";\nfunction withCodeBoundaryForOverrides(Component18, { scopeId, nodeId, override, inComponentSlot }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return override(Component18);\n  }\n  const appliedOverride = tryToApplyOverride(Component18, override);\n  let hasErrorBeenLogged = false;\n  function CodeBoundaryForOverrides(props, ref) {\n    const nearestExternalComponent = useNearestExternalComponent();\n    const shouldWrapWithBoundary = shouldWrapOverrideWithBoundary(\n      scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n      inComponentSlot ?? false\n    );\n    if (shouldWrapWithBoundary) {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx62(\n          CodeComponentBoundary,\n          {\n            errorMessage: getErrorMessageForOverride(scopeId, nodeId),\n            fallback: /* @__PURE__ */ jsx62(Component18, { ...props, ref }),\n            children: /* @__PURE__ */ jsx62(appliedOverride.Component, { ...props, ref })\n          }\n        );\n      } else {\n        if (!hasErrorBeenLogged) {\n          logError(appliedOverride.error);\n          logError(getErrorMessageForOverride(scopeId, nodeId));\n          collectErrorToAnalytics(appliedOverride.error);\n          hasErrorBeenLogged = true;\n        }\n        return /* @__PURE__ */ jsx62(Component18, { ...props, ref });\n      }\n    } else {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx62(appliedOverride.Component, { ...props, ref });\n      } else {\n        throw appliedOverride.error;\n      }\n    }\n  }\n  return React74.forwardRef(CodeBoundaryForOverrides);\n}\nfunction tryToApplyOverride(Component18, override) {\n  try {\n    const ComponentWithOverrides = override(Component18);\n    return { status: \"success\", Component: ComponentWithOverrides };\n  } catch (error) {\n    return { status: \"error\", error };\n  }\n}\n\n// ../../library/src/modules/withMappedReactProps.tsx\nimport { jsx as jsx63 } from \"react/jsx-runtime\";\nfunction extractMappingFromInfo(info) {\n  var _a;\n  const json = (_a = info.__FramerMetadata__.exports.default.annotations) == null ? void 0 : _a.framerVariables;\n  if (!json)\n    return void 0;\n  try {\n    return JSON.parse(json);\n  } catch {\n    return void 0;\n  }\n}\nfunction withMappedReactProps(Component18, info) {\n  return (rawProps) => {\n    const props = {};\n    const mapping = extractMappingFromInfo(info);\n    for (const key7 in rawProps) {\n      asRecord(props)[(mapping == null ? void 0 : mapping[key7]) ?? key7] = rawProps[key7];\n    }\n    return /* @__PURE__ */ jsx63(Component18, { ...props });\n  };\n}\n\n// ../../library/src/modules/withVariantAppearEffect.tsx\nimport React75 from \"react\";\nimport { jsx as jsx64 } from \"react/jsx-runtime\";\nvar keys = /* @__PURE__ */ new Set([\n  \"visibleVariantId\",\n  \"obscuredVariantId\",\n  \"threshold\",\n  \"animateOnce\",\n  \"variantAppearEffectEnabled\",\n  \"targets\",\n  \"exitTarget\",\n  \"scrollDirection\"\n]);\nvar defaultRanges3 = { inputRange: [], outputRange: [] };\nfunction createInputOutputRanges2(transformTargets, threshold, exitTarget) {\n  const outputRange = [];\n  const inputRange = createTransformInputRange(\n    transformTargets,\n    threshold,\n    (index) => outputRange.unshift(index, index)\n  );\n  if (exitTarget) {\n    const lastInputRange = inputRange[inputRange.length - 1];\n    if (!isNumber(lastInputRange))\n      return defaultRanges3;\n    inputRange.push(lastInputRange + 1);\n    outputRange.push(-1);\n  }\n  const firstItem = inputRange[0];\n  if (!isNumber(firstItem))\n    return defaultRanges3;\n  if (firstItem <= 1)\n    return { inputRange, outputRange };\n  return { inputRange: [0, Math.max(firstItem - 1, 0), ...inputRange], outputRange: [-1, -1, ...outputRange] };\n}\nvar withVariantAppearEffect = (Component18) => React75.forwardRef(\n  (props, forwardedRef) => {\n    if (RenderTarget.current() === RenderTarget.canvas)\n      return /* @__PURE__ */ jsx64(Component18, { ...props, ref: forwardedRef });\n    const { wrapUpdatesInTransitions } = useLibraryFeatures();\n    const [options, rest] = extractPrefixedProps(props, keys);\n    const {\n      visibleVariantId,\n      obscuredVariantId,\n      animateOnce,\n      threshold,\n      variantAppearEffectEnabled,\n      targets,\n      exitTarget,\n      scrollDirection\n    } = options;\n    const [activeVariant, setVariant] = React75.useState(obscuredVariantId);\n    const animateState = React75.useRef(false);\n    const observerRef = useObserverRef(forwardedRef);\n    useAppearEffect(\n      observerRef,\n      (appears) => {\n        if (options.targets)\n          return;\n        if (options.scrollDirection)\n          return;\n        if (animateOnce && animateState.current === true)\n          return;\n        if (animateState.current === appears)\n          return;\n        animateState.current = appears;\n        if (appears) {\n          if (wrapUpdatesInTransitions) {\n            React75.startTransition(() => {\n              setVariant(visibleVariantId);\n            });\n          } else {\n            setVariant(visibleVariantId);\n          }\n        } else {\n          if (wrapUpdatesInTransitions) {\n            React75.startTransition(() => {\n              setVariant(obscuredVariantId);\n            });\n          } else {\n            setVariant(obscuredVariantId);\n          }\n        }\n      },\n      {\n        enabled: variantAppearEffectEnabled,\n        animateOnce,\n        threshold: {\n          y: threshold\n        }\n      }\n    );\n    React75.useEffect(() => {\n      if (scrollDirection)\n        return;\n      if (!targets)\n        return;\n      const playedState = {};\n      let currentVariant = void 0;\n      return scrollInfo(({ y: scrollY }) => {\n        var _a;\n        if (!targets[0] || targets[0].ref && !targets[0].ref.current)\n          return;\n        const { inputRange, outputRange } = createInputOutputRanges2(\n          targets,\n          (threshold ?? 0) * scrollY.containerLength,\n          exitTarget\n        );\n        if (inputRange.length === 0 || inputRange.length !== outputRange.length)\n          return;\n        const index = Math.floor(transform(scrollY.current, inputRange, outputRange));\n        if (animateOnce && playedState[index])\n          return;\n        playedState[index] = true;\n        const variant = ((_a = targets[index]) == null ? void 0 : _a.target) ?? void 0;\n        if (variant === currentVariant)\n          return;\n        currentVariant = variant;\n        if (wrapUpdatesInTransitions) {\n          React75.startTransition(() => {\n            setVariant(variant);\n          });\n        } else {\n          setVariant(variant);\n        }\n      });\n    }, [animateOnce, threshold, targets, props.variant, scrollDirection, exitTarget, wrapUpdatesInTransitions]);\n    useScrollDirectionChange(scrollDirection, setVariant, {\n      enabled: variantAppearEffectEnabled,\n      repeat: !animateOnce\n    });\n    useOnRouteChange(() => {\n      if (!variantAppearEffectEnabled)\n        return;\n      const useObscuredVariant = !options.targets && !options.scrollDirection;\n      const target = useObscuredVariant ? options.obscuredVariantId : void 0;\n      if (wrapUpdatesInTransitions) {\n        React75.startTransition(() => setVariant(target));\n        return;\n      }\n      setVariant(target);\n    });\n    if (!(\"variantAppearEffectEnabled\" in options) || variantAppearEffectEnabled === true) {\n      return /* @__PURE__ */ jsx64(Component18, { ...rest, variant: activeVariant ?? props.variant, ref: observerRef });\n    } else {\n      return /* @__PURE__ */ jsx64(Component18, { ...rest });\n    }\n  }\n);\n\n// ../../library/src/modules/withVariantFX.tsx\nimport React76 from \"react\";\nimport { jsx as jsx65 } from \"react/jsx-runtime\";\nvar withVariantFX = (Component18) => React76.forwardRef(\n  ({ initial, animate: animate3, exit, ...props }, forwardedRef) => {\n    const observerRef = useObserverRef(forwardedRef);\n    const effect = usePresenceAnimation(\n      {\n        initial,\n        animate: animate3,\n        exit\n      },\n      observerRef,\n      true\n    );\n    return /* @__PURE__ */ jsx65(Component18, { ...props, style: { ...props == null ? void 0 : props.style, ...effect.values }, ref: observerRef });\n  }\n);\n\n// ../../library/src/render/WindowContext.ts\nimport React77 from \"react\";\nvar WindowContext = /* @__PURE__ */ React77.createContext(\n  void 0\n);\nvar useProvidedWindow = () => React77.useContext(WindowContext);\n\n// ../../library/src/render/componentLoader/definition.ts\nfunction isDesignDefinition(d) {\n  return d.type === \"master\";\n}\nfunction isOverride(d) {\n  return d.type === \"override\";\n}\nfunction isReactDefinition(d) {\n  return d.type !== \"master\";\n}\n\n// ../../library/src/render/componentLoader/package.ts\nvar localPackageFallbackIdentifier = \"|local|\";\n\n// ../../library/src/render/fonts/fonts.ts\nvar safeFonts = {\n  Arial: {\n    Regular: { selector: \"Arial\", weight: void 0 },\n    Black: { selector: \"Arial-Black\", weight: void 0 },\n    Narrow: { selector: \"Arial Narrow\", weight: void 0 },\n    \"Rounded Bold\": { selector: \"Arial Rounded MT Bold\", weight: void 0 }\n  },\n  Avenir: {\n    Book: { selector: \"Avenir\", weight: void 0 },\n    Light: { selector: \"Avenir-Light\", weight: void 0 },\n    Medium: { selector: \"Avenir-Medium\", weight: void 0 },\n    Heavy: { selector: \"Avenir-Heavy\", weight: void 0 },\n    Black: { selector: \"Avenir-Black\", weight: void 0 }\n  },\n  \"Avenir Next\": {\n    Regular: { selector: \"Avenir Next\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNext-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNext-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNext-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNext-Heavy\", weight: void 0 }\n  },\n  \"Avenir Next Condensed\": {\n    Regular: { selector: \"Avenir Next Condensed\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNextCondensed-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNextCondensed-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNextCondensed-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNextCondensed-Heavy\", weight: void 0 }\n  },\n  Baskerville: {\n    Regular: { selector: \"Baskerville\", weight: void 0 },\n    \"Semi Bold\": { selector: \"Baskerville-SemiBold\", weight: void 0 }\n  },\n  \"Bodoni 72\": {\n    Book: { selector: \"Bodoni 72\", weight: void 0 },\n    Oldstyle: { selector: \"Bodoni 72 Oldstyle\", weight: void 0 },\n    Smallcaps: { selector: \"Bodoni 72 Smallcaps\", weight: void 0 }\n  },\n  Courier: { Regular: { selector: \"Courier\", weight: void 0 } },\n  \"Courier New\": { Regular: { selector: \"Courier New\", weight: void 0 } },\n  Futura: {\n    Medium: { selector: \"Futura\", weight: void 0 },\n    Condensed: { selector: \"Futura-CondensedMedium\", weight: void 0 },\n    \"Condensed ExtraBold\": { selector: \"Futura-CondensedExtraBold\", weight: void 0 }\n  },\n  Georgia: { Regular: { selector: \"Georgia\", weight: void 0 } },\n  \"Gill Sans\": {\n    Regular: { selector: \"Gill Sans\", weight: void 0 },\n    Light: { selector: \"GillSans-Light\", weight: void 0 },\n    SemiBold: { selector: \"GillSans-SemiBold\", weight: void 0 },\n    UltraBold: { selector: \"GillSans-UltraBold\", weight: void 0 }\n  },\n  Helvetica: {\n    Regular: { selector: \"Helvetica\", weight: void 0 },\n    Light: { selector: \"Helvetica-Light\", weight: void 0 },\n    Bold: { selector: \"Helvetica-Bold\", weight: void 0 },\n    Oblique: { selector: \"Helvetica-Oblique\", weight: void 0 },\n    \"Light Oblique\": { selector: \"Helvetica-LightOblique\", weight: void 0 },\n    \"Bold Oblique\": { selector: \"Helvetica-BoldOblique\", weight: void 0 }\n  },\n  \"Helvetica Neue\": {\n    Regular: { selector: \"Helvetica Neue\", weight: void 0 },\n    UltraLight: { selector: \"HelveticaNeue-UltraLight\", weight: void 0 },\n    Thin: { selector: \"HelveticaNeue-Thin\", weight: void 0 },\n    Light: { selector: \"HelveticaNeue-Light\", weight: void 0 },\n    Medium: { selector: \"HelveticaNeue-Medium\", weight: void 0 },\n    Bold: { selector: \"HelveticaNeue-Bold\", weight: void 0 },\n    Italic: { selector: \"HelveticaNeue-Italic\", weight: void 0 },\n    \"UltraLight Italic\": { selector: \"HelveticaNeue-UltraLightItalic\", weight: void 0 },\n    \"Thin Italic\": { selector: \"HelveticaNeue-ThinItalic\", weight: void 0 },\n    \"Light Italic\": { selector: \"HelveticaNeue-LightItalic\", weight: void 0 },\n    \"Medium Italic\": { selector: \"HelveticaNeue-MediumItalic\", weight: void 0 },\n    \"Bold Italic\": { selector: \"HelveticaNeue-BoldItalic\", weight: void 0 },\n    \"Condensed Bold\": { selector: \"HelveticaNeue-CondensedBold\", weight: void 0 },\n    \"Condensed Black\": { selector: \"HelveticaNeue-CondensedBlack\", weight: void 0 }\n  },\n  \"Hoefler Text\": { Regular: { selector: \"Hoefler Text\", weight: void 0 } },\n  Impact: { Regular: { selector: \"Impact\", weight: void 0 } },\n  \"Lucida Grande\": { Regular: { selector: \"Lucida Grande\", weight: void 0 } },\n  Menlo: { Regular: { selector: \"Menlo\", weight: void 0 } },\n  Monaco: { Regular: { selector: \"Monaco\", weight: void 0 } },\n  Optima: {\n    Regular: { selector: \"Optima\", weight: void 0 },\n    ExtraBlack: { selector: \"Optima-ExtraBlack\", weight: void 0 }\n  },\n  Palatino: { Regular: { selector: \"Palatino\", weight: void 0 } },\n  \"SF Pro Display\": {\n    Regular: { selector: \"__SF-UI-Display-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Black__\", weight: 900 },\n    Italic: { selector: \"__SF-UI-Display-Italic__\", weight: 400 },\n    \"Ultralight Italic\": { selector: \"__SF-UI-Display-Ultralight-Italic__\", weight: 100 },\n    \"Thin Italic\": { selector: \"__SF-UI-Display-Thin-Italic__\", weight: 200 },\n    \"Light Italic\": { selector: \"__SF-UI-Display-Light-Italic__\", weight: 300 },\n    \"Medium Italic\": { selector: \"__SF-UI-Display-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Display-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Display-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Display-Heavy-Italic__\", weight: 800 },\n    \"Black Italic\": { selector: \"__SF-UI-Display-Black-Italic__\", weight: 900 }\n  },\n  \"SF Pro Display Condensed\": {\n    Regular: { selector: \"__SF-UI-Display-Condensed-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Condensed-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Condensed-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Condensed-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Condensed-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Condensed-Black__\", weight: 900 }\n  },\n  \"SF Pro Text\": {\n    Regular: { selector: \"__SF-UI-Text-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Heavy__\", weight: 800 },\n    Italic: { selector: \"__SF-UI-Text-Italic__\", weight: 400 },\n    \"Light Italic\": { selector: \"__SF-UI-Text-Light-Italic__\", weight: 200 },\n    \"Medium Italic\": { selector: \"__SF-UI-Text-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Text-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Text-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Text-Heavy-Italic__\", weight: 800 }\n  },\n  \"SF Pro Text Condensed\": {\n    Regular: { selector: \"__SF-UI-Text-Condensed-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Condensed-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Condensed-Heavy__\", weight: 800 }\n  },\n  Tahoma: { Regular: { selector: \"Tahoma\", weight: void 0 } },\n  Times: { Regular: { selector: \"Times\", weight: void 0 } },\n  \"Times New Roman\": { Regular: { selector: \"Times New Roman\", weight: void 0 } },\n  Trebuchet: { Regular: { selector: \"Trebuchet MS\", weight: void 0 } },\n  Verdana: { Regular: { selector: \"Verdana\", weight: void 0 } }\n};\nvar fontAliases = {\n  \"__SF-Compact-Display-Regular__\": \"SFCompactDisplay-Regular|.SFCompactDisplay-Regular\",\n  \"__SF-Compact-Display-Ultralight__\": \"SFCompactDisplay-Ultralight|.SFCompactDisplay-Ultralight\",\n  \"__SF-Compact-Display-Thin__\": \"SFCompactDisplay-Thin|.SFCompactDisplay-Thin\",\n  \"__SF-Compact-Display-Light__\": \"SFCompactDisplay-Light|.SFCompactDisplay-Light\",\n  \"__SF-Compact-Display-Medium__\": \"SFCompactDisplay-Medium|.SFCompactDisplay-Medium\",\n  \"__SF-Compact-Display-Semibold__\": \"SFCompactDisplay-Semibold|.SFCompactDisplay-Semibold\",\n  \"__SF-Compact-Display-Heavy__\": \"SFCompactDisplay-Heavy|.SFCompactDisplay-Heavy\",\n  \"__SF-Compact-Display-Black__\": \"SFCompactDisplay-Black|.SFCompactDisplay-Black\",\n  \"__SF-Compact-Display-Bold__\": \"SFCompactDisplay-Bold|.SFCompactDisplay-Bold\",\n  \"__SF-UI-Text-Regular__\": \".SFNSText|SFProText-Regular|SFUIText-Regular|.SFUIText\",\n  \"__SF-UI-Text-Light__\": \".SFNSText-Light|SFProText-Light|SFUIText-Light|.SFUIText-Light\",\n  \"__SF-UI-Text-Medium__\": \".SFNSText-Medium|SFProText-Medium|SFUIText-Medium|.SFUIText-Medium\",\n  \"__SF-UI-Text-Semibold__\": \".SFNSText-Semibold|SFProText-Semibold|SFUIText-Semibold|.SFUIText-Semibold\",\n  \"__SF-UI-Text-Bold__\": \".SFNSText-Bold|SFProText-Bold|SFUIText-Bold|.SFUIText-Bold\",\n  \"__SF-UI-Text-Heavy__\": \".SFNSText-Heavy|SFProText-Heavy|.SFUIText-Heavy\",\n  \"__SF-UI-Text-Italic__\": \".SFNSText-Italic|SFProText-Italic|SFUIText-Italic|.SFUIText-Italic\",\n  \"__SF-UI-Text-Light-Italic__\": \".SFNSText-LightItalic|SFProText-LightItalic|SFUIText-LightItalic|.SFUIText-LightItalic\",\n  \"__SF-UI-Text-Medium-Italic__\": \".SFNSText-MediumItalic|SFProText-MediumItalic|SFUIText-MediumItalic|.SFUIText-MediumItalic\",\n  \"__SF-UI-Text-Semibold-Italic__\": \".SFNSText-SemiboldItalic|SFProText-SemiboldItalic|SFUIText-SemiboldItalic|.SFUIText-SemiboldItalic\",\n  \"__SF-UI-Text-Bold-Italic__\": \".SFNSText-BoldItalic|SFProText-BoldItalic|SFUIText-BoldItalic|.SFUIText-BoldItalic\",\n  \"__SF-UI-Text-Heavy-Italic__\": \".SFNSText-HeavyItalic|SFProText-HeavyItalic|.SFUIText-HeavyItalic\",\n  \"__SF-Compact-Text-Regular__\": \"SFCompactText-Regular|.SFCompactText-Regular\",\n  \"__SF-Compact-Text-Light__\": \"SFCompactText-Light|.SFCompactText-Light\",\n  \"__SF-Compact-Text-Medium__\": \"SFCompactText-Medium|.SFCompactText-Medium\",\n  \"__SF-Compact-Text-Semibold__\": \"SFCompactText-Semibold|.SFCompactText-Semibold\",\n  \"__SF-Compact-Text-Bold__\": \"SFCompactText-Bold|.SFCompactText-Bold\",\n  \"__SF-Compact-Text-Heavy__\": \"SFCompactText-Heavy|.SFCompactText-Heavy\",\n  \"__SF-Compact-Text-Italic__\": \"SFCompactText-Italic|.SFCompactText-Italic\",\n  \"__SF-Compact-Text-Light-Italic__\": \"SFCompactText-LightItalic|.SFCompactText-LightItalic\",\n  \"__SF-Compact-Text-Medium-Italic__\": \"SFCompactText-MediumItalic|.SFCompactText-MediumItalic\",\n  \"__SF-Compact-Text-Semibold-Italic__\": \"SFCompactText-SemiboldItalic|.SFCompactText-SemiboldItalic\",\n  \"__SF-Compact-Text-Bold-Italic__\": \"SFCompactText-BoldItalic|.SFCompactText-BoldItalic\",\n  \"__SF-Compact-Text-Heavy-Italic__\": \"SFCompactText-HeavyItalic|.SFCompactText-HeavyItalic\",\n  \"__SF-UI-Display-Condensed-Regular__\": \".SFNSDisplayCondensed-Regular|SFUIDisplayCondensed-Regular|.SFUIDisplayCondensed-Regular\",\n  \"__SF-UI-Display-Condensed-Ultralight__\": \".SFNSDisplayCondensed-Ultralight|SFUIDisplayCondensed-Ultralight|.SFUIDisplayCondensed-Ultralight\",\n  \"__SF-UI-Display-Condensed-Thin__\": \".SFNSDisplayCondensed-Thin|SFUIDisplayCondensed-Thin|.SFUIDisplayCondensed-Thin\",\n  \"__SF-UI-Display-Condensed-Light__\": \".SFNSDisplayCondensed-Light|SFUIDisplayCondensed-Light|.SFUIDisplayCondensed-Light\",\n  \"__SF-UI-Display-Condensed-Medium__\": \".SFNSDisplayCondensed-Medium|SFUIDisplayCondensed-Medium|.SFUIDisplayCondensed-Medium\",\n  \"__SF-UI-Display-Condensed-Semibold__\": \".SFNSDisplayCondensed-Semibold|SFUIDisplayCondensed-Semibold|.SFUIDisplayCondensed-Semibold\",\n  \"__SF-UI-Display-Condensed-Bold__\": \".SFNSDisplayCondensed-Bold|SFUIDisplayCondensed-Bold|.SFUIDisplayCondensed-Bold\",\n  \"__SF-UI-Display-Condensed-Heavy__\": \".SFNSDisplayCondensed-Heavy|SFUIDisplayCondensed-Heavy|.SFUIDisplayCondensed-Heavy\",\n  \"__SF-UI-Display-Condensed-Black__\": \".SFNSDisplayCondensed-Black|.SFUIDisplayCondensed-Black\",\n  \"__SF-UI-Display-Regular__\": \".SFNSDisplay|SFProDisplay-Regular|SFUIDisplay-Regular|.SFUIDisplay\",\n  \"__SF-UI-Display-Ultralight__\": \".SFNSDisplay-Ultralight|SFProDisplay-Ultralight|SFUIDisplay-Ultralight|.SFUIDisplay-Ultralight\",\n  \"__SF-UI-Display-Thin__\": \".SFNSDisplay-Thin|SFProDisplay-Thin|SFUIDisplay-Thin|.SFUIDisplay-Thin\",\n  \"__SF-UI-Display-Light__\": \".SFNSDisplay-Light|SFProDisplay-Light|SFUIDisplay-Light|.SFUIDisplay-Light\",\n  \"__SF-UI-Display-Medium__\": \".SFNSDisplay-Medium|SFProDisplay-Medium|SFUIDisplay-Medium|.SFUIDisplay-Medium\",\n  \"__SF-UI-Display-Semibold__\": \".SFNSDisplay-Semibold|SFProDisplay-Semibold|SFUIDisplay-Semibold|.SFUIDisplay-Semibold\",\n  \"__SF-UI-Display-Bold__\": \".SFNSDisplay-Bold|SFProDisplay-Bold|SFUIDisplay-Bold|.SFUIDisplay-Bold\",\n  \"__SF-UI-Display-Heavy__\": \".SFNSDisplay-Heavy|SFProDisplay-Heavy|SFUIDisplay-Heavy|.SFUIDisplay-Heavy\",\n  \"__SF-UI-Display-Black__\": \".SFNSDisplay-Black|SFProDisplay-Black|.SFUIDisplay-Black\",\n  \"__SF-UI-Display-Italic__\": \".SFNSDisplay-Italic|SFProDisplay-Italic|SFUIDisplay-Italic\",\n  \"__SF-UI-Display-Ultralight-Italic__\": \".SFNSDisplay-UltralightItalic|SFProDisplay-UltralightItalic|SFUIDisplay-UltralightItalic|.SFUIDisplay-UltralightItalic\",\n  \"__SF-UI-Display-Thin-Italic__\": \".SFNSDisplay-ThinItalic|SFProDisplay-ThinItalic|SFUIDisplay-ThinItalic|.SFUIDisplay-ThinItalic\",\n  \"__SF-UI-Display-Light-Italic__\": \".SFNSDisplay-LightItalic|SFProDisplay-LightItalic|SFUIDisplay-LightItalic|.SFUIDisplay-LightItalic\",\n  \"__SF-UI-Display-Medium-Italic__\": \".SFNSDisplay-MediumItalic|SFProDisplay-MediumItalic|SFUIDisplay-MediumItalic|.SFUIDisplay-MediumItalic\",\n  \"__SF-UI-Display-Semibold-Italic__\": \".SFNSDisplay-SemiboldItalic|SFProDisplay-SemiboldItalic|SFUIDisplay-SemiboldItalic|.SFUIDisplay-SemiboldItalic\",\n  \"__SF-UI-Display-Bold-Italic__\": \".SFNSDisplay-BoldItalic|SFProDisplay-BoldItalic|SFUIDisplay-BoldItalic|.SFUIDisplay-BoldItalic\",\n  \"__SF-UI-Display-Heavy-Italic__\": \".SFNSDisplay-HeavyItalic|SFProDisplay-HeavyItalic|SFUIDisplay-HeavyItalic|.SFUIDisplay-HeavyItalic\",\n  \"__SF-UI-Display-Black-Italic__\": \".SFNSDisplay-BlackItalic|SFProDisplay-BlackItalic|.SFUIDisplay-BlackItalic\",\n  \"__SF-UI-Text-Condensed-Regular__\": \".SFNSTextCondensed-Regular|SFUITextCondensed-Regular|.SFUITextCondensed-Regular\",\n  \"__SF-UI-Text-Condensed-Light__\": \".SFNSTextCondensed-Light|SFUITextCondensed-Light|.SFUITextCondensed-Light\",\n  \"__SF-UI-Text-Condensed-Medium__\": \".SFNSTextCondensed-Medium|SFUITextCondensed-Medium|.SFUITextCondensed-Medium\",\n  \"__SF-UI-Text-Condensed-Semibold__\": \".SFNSTextCondensed-Semibold|SFUITextCondensed-Semibold|.SFUITextCondensed-Semibold\",\n  \"__SF-UI-Text-Condensed-Bold__\": \".SFNSTextCondensed-Bold|SFUITextCondensed-Bold|.SFUITextCondensed-Bold\",\n  \"__SF-UI-Text-Condensed-Heavy__\": \".SFNSTextCondensed-Heavy|.SFUITextCondensed-Heavy\",\n  \"__SF-Compact-Rounded-Regular__\": \"SFCompactRounded-Regular|.SFCompactRounded-Regular\",\n  \"__SF-Compact-Rounded-Ultralight__\": \"SFCompactRounded-Ultralight|.SFCompactRounded-Ultralight\",\n  \"__SF-Compact-Rounded-Thin__\": \"SFCompactRounded-Thin|.SFCompactRounded-Thin\",\n  \"__SF-Compact-Rounded-Light__\": \"SFCompactRounded-Light|.SFCompactRounded-Light\",\n  \"__SF-Compact-Rounded-Medium__\": \"SFCompactRounded-Medium|.SFCompactRounded-Medium\",\n  \"__SF-Compact-Rounded-Semibold__\": \"SFCompactRounded-Semibold|.SFCompactRounded-Semibold\",\n  \"__SF-Compact-Rounded-Bold__\": \"SFCompactRounded-Bold|.SFCompactRounded-Bold\",\n  \"__SF-Compact-Rounded-Heavy__\": \"SFCompactRounded-Heavy|.SFCompactRounded-Heavy\",\n  \"__SF-Compact-Rounded-Black__\": \"SFCompactRounded-Black|.SFCompactRounded-Black\"\n};\nvar fontFamilies = safeFonts;\n\n// ../../library/src/render/fonts/types.ts\nvar FontSourceNames = /* @__PURE__ */ ((FontSourceNames2) => {\n  FontSourceNames2[\"Google\"] = \"google\";\n  FontSourceNames2[\"Fontshare\"] = \"fontshare\";\n  FontSourceNames2[\"Framer\"] = \"framer\";\n  FontSourceNames2[\"Local\"] = \"local\";\n  FontSourceNames2[\"Custom\"] = \"custom\";\n  FontSourceNames2[\"BuiltIn\"] = \"builtIn\";\n  return FontSourceNames2;\n})(FontSourceNames || {});\nfunction isSuccessfullyParsedFontVariant(variant) {\n  return variant.weight !== void 0 && variant.style !== void 0;\n}\n\n// ../../library/src/render/fonts/LocalFontSource.ts\nvar systemFontFamilyName = \"System Default\";\nvar LocalFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"local\" /* Local */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliasBySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliases\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  // end of duplication\n  importFonts() {\n    const fonts = [];\n    for (const family of Object.keys(fontFamilies)) {\n      const members = fontFamilies[family];\n      if (!members)\n        continue;\n      const fontFamily = this.createFontFamily(family);\n      for (const variant of Object.keys(members)) {\n        const member = members[variant];\n        if (!member)\n          continue;\n        const { selector, weight } = member;\n        const font = {\n          variant,\n          selector,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n      }\n      fonts.push(...fontFamily.fonts);\n    }\n    for (const [key7, value] of Object.entries(fontAliases)) {\n      this.addFontAlias(key7, value);\n    }\n    const { fontFamily: systemFontFamily, aliases } = this.getSystemFontFamily();\n    this.addFontFamily(systemFontFamily);\n    for (const [key7, value] of aliases) {\n      this.addFontAlias(key7, value);\n    }\n    fonts.push(...systemFontFamily.fonts);\n    return fonts;\n  }\n  addFontAlias(key7, value) {\n    this.fontAliases.set(key7, value);\n    this.fontAliasBySelector.set(value, key7);\n  }\n  getSystemFontFamily() {\n    const fontFamilies2 = (\n      // System fonts - Taken from https://furbo.org/stuff/systemfonts-new.html - \"All Platforms\" section\n      \"system-ui|-apple-system|BlinkMacSystemFont|Segoe UI|Roboto|Oxygen|Ubuntu|Cantarell|Fira Sans|Droid Sans|Helvetica Neue|sans-serif\"\n    );\n    const fontFamily = { name: systemFontFamilyName, fonts: [], source: this.name };\n    const aliases = /* @__PURE__ */ new Map();\n    const weights = [400, 100, 200, 300, 500, 600, 700, 800, 900];\n    const styles4 = [\"normal\", \"italic\"];\n    for (const style of styles4) {\n      for (const weight of weights) {\n        const variant = createVariantName(weight, style);\n        const alias = `__SystemDefault-${weight}-${style}__`;\n        const font = {\n          variant,\n          selector: alias,\n          style,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n        aliases.set(alias, fontFamilies2);\n      }\n    }\n    return { fontFamily, aliases };\n  }\n  getFontAliasBySelector(selector) {\n    return this.fontAliasBySelector.get(selector) || null;\n  }\n  getFontSelectorByAlias(alias) {\n    return this.fontAliases.get(alias) || null;\n  }\n  /** Font family aliases are in the format of `__Alias-Name__` */\n  isFontFamilyAlias(value) {\n    if (value && /^__.*__$/u.exec(value))\n      return true;\n    return false;\n  }\n};\nvar fontWeightNames = {\n  \"100\": \"Thin\",\n  \"200\": \"Extra Light\",\n  \"300\": \"Light\",\n  \"400\": \"Normal\",\n  \"500\": \"Medium\",\n  \"600\": \"Semi Bold\",\n  \"700\": \"Bold\",\n  \"800\": \"Extra Bold\",\n  \"900\": \"Black\"\n};\nfunction createVariantName(weight, style) {\n  const friendlyStyle = style === \"normal\" ? \"Regular\" : \"Italic\";\n  if (weight === 400) {\n    return friendlyStyle;\n  }\n  if (style !== \"normal\") {\n    return `${fontWeightNames[weight]} ${friendlyStyle}`;\n  }\n  return `${fontWeightNames[weight]}`;\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar import_process3 = __toESM(require_browser(), 1);\n\n// ../../library/src/utils/variableFont.ts\nfunction isVariableFont(font) {\n  return Boolean(font.variationAxes);\n}\nfunction createFontFamilyName(font) {\n  if (isVariableFont(font) && font.family.source !== \"custom\") {\n    return createVariableFontFamilyName(font.family.name);\n  }\n  return font.family.name;\n}\nfunction createVariableFontFamilyName(familyName) {\n  return `${familyName} Variable`;\n}\n\n// ../../library/src/render/fonts/fontUtils.ts\nfunction supportsOpenType(openTypeData) {\n  return Boolean(openTypeData && Array.isArray(openTypeData));\n}\nfunction validateVariationAxes(variationAxesData) {\n  if (!variationAxesData)\n    return;\n  if (!Array.isArray(variationAxesData))\n    return;\n  const variationAxes = [];\n  for (const axis of variationAxesData) {\n    if (!isVariationAxis(axis))\n      continue;\n    variationAxes.push({\n      tag: axis.tag,\n      name: axis.name,\n      minValue: axis.minValue,\n      maxValue: axis.maxValue,\n      defaultValue: axis.defaultValue\n    });\n  }\n  return variationAxes;\n}\nfunction isOpenTypeFeature(feature) {\n  if (typeof feature !== \"object\" || feature === null)\n    return false;\n  if (!(\"tag\" in feature) || typeof feature.tag !== \"string\")\n    return false;\n  if (\"coverage\" in feature && typeof feature.coverage !== \"undefined\" && !Array.isArray(feature.coverage)) {\n    return false;\n  }\n  return true;\n}\nfunction isVariationAxis(axis) {\n  if (typeof axis !== \"object\" || axis === null)\n    return false;\n  if (!(\"tag\" in axis) || typeof axis.tag !== \"string\")\n    return false;\n  if (\"name\" in axis && typeof axis.name !== \"string\")\n    return false;\n  if (!(\"minValue\" in axis) || typeof axis.minValue !== \"number\")\n    return false;\n  if (!(\"maxValue\" in axis) || typeof axis.maxValue !== \"number\")\n    return false;\n  if (!(\"defaultValue\" in axis) || typeof axis.defaultValue !== \"number\") {\n    return false;\n  }\n  return true;\n}\n\n// ../../library/src/render/fonts/BuiltInFontSource.ts\nvar builtInFontSelectorPrefix = \"BI;\";\nvar BuiltInFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"builtIn\" /* BuiltIn */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidBuiltInFont(asset))\n        continue;\n      const { properties } = asset;\n      const fontName = properties.font.preferredFamily || properties.font.fontFamily;\n      const fontFamily = this.createFontFamily(\n        fontName,\n        properties.font.foundryName,\n        properties.font.fontVersion\n      );\n      const openTypeData = properties.font.openTypeData;\n      const variationAxesData = properties.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const variant = isVariableFont2 ? \"variable\" : properties.font.preferredSubFamily || properties.font.fontSubFamily || \"regular\";\n      const font = {\n        family: fontFamily,\n        selector: this.createSelector(fontName, variant, properties.font.fontVersion),\n        variant,\n        file: asset.url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData),\n        category: properties.font.fontCategory,\n        weight: variantNameToWeight(variant),\n        style: getFontStyle(variant)\n      };\n      fontFamily.fonts.push(font);\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(font);\n    }\n    for (const fontFamily of this.fontFamilies) {\n      fontFamily.fonts.sort((a, b) => {\n        const weightA = variantNameToWeight(a.variant);\n        const weightB = variantNameToWeight(b.variant);\n        if (!weightA || !weightB)\n          return 1;\n        return weightA - weightB;\n      });\n    }\n    return fonts;\n  }\n  static parseVariant(variant) {\n    const kebabCaseVariant = variantToKebabCase(variant);\n    const weight = variantsNameToWeight[kebabCaseVariant];\n    const style = getFontStyle(variant);\n    return { weight, style };\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator)\n      return;\n    if (!createFont && !this.byFamilyName.get(locator.name))\n      return;\n    const fontFamily = this.getFontFamilyByName(locator.name);\n    if (!fontFamily)\n      return;\n    return fontFamily.fonts.find((f) => f.selector === selector);\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  createFontFamily(family, foundryName, version2) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily && existingFontFamily.version === version2)\n      return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: [],\n      foundryName,\n      version: version2\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData))\n      return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature))\n        return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  isValidBuiltInFont(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\"))\n      return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\")\n      return false;\n    if (!asset.properties.font)\n      return false;\n    if (!asset.properties.font.fontVersion)\n      return false;\n    if (!asset.properties.font.fontFamily)\n      return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  createSelector(family, variant, version2) {\n    return `${builtInFontSelectorPrefix}${family}/${variant}/${version2}`;\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(builtInFontSelectorPrefix))\n      return null;\n    const [_, selectorWithoutPrefix] = selector.split(builtInFontSelectorPrefix);\n    if (selectorWithoutPrefix === void 0)\n      return null;\n    const [name, variant, version2] = selectorWithoutPrefix.split(\"/\");\n    if (!name || !variant || !version2)\n      return null;\n    return {\n      name,\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n};\nvar variantsNameToWeight = {\n  ultralight: 100,\n  \"ultralight-italic\": 100,\n  thin: 200,\n  \"thin-italic\": 200,\n  demi: 200,\n  light: 300,\n  \"light-italic\": 300,\n  normal: 350,\n  base: 400,\n  regular: 400,\n  classic: 400,\n  \"regular-slanted\": 400,\n  italic: 400,\n  oblique: 400,\n  dense: 400,\n  brukt: 300,\n  book: 400,\n  \"book-italic\": 400,\n  text: 400,\n  \"text-italic\": 400,\n  medium: 500,\n  solid: 500,\n  \"medium-oblique\": 500,\n  \"medium-italic\": 500,\n  mittel: 500,\n  semibold: 600,\n  \"semibold-italic\": 600,\n  bold: 700,\n  \"bold-italic\": 700,\n  \"bold-oblique\": 700,\n  fett: 700,\n  ultrabold: 800,\n  \"ultrabold-italic\": 800,\n  extrabold: 800,\n  \"extrabold-italic\": 800,\n  black: 900,\n  \"black-italic\": 900,\n  \"extra-italic\": 900,\n  \"extra-italic-bold\": 900,\n  satt: 900,\n  heavy: 900,\n  \"heavy-italic\": 900,\n  // The following variants are only used in the FT88 font. These are not really weights, but more font styles (gothique, cursive, etc.).\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  serif: 100,\n  school: 200,\n  expanded: 300,\n  gothique: 500,\n  // The following variants are only used in the ARK_ES font.\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  // The order is important because we want to group all the light together and solid together.\n  \"dense-light\": 200,\n  \"dense-regular\": 300,\n  \"dense-medium\": 400,\n  \"dense-bold\": 500,\n  \"solid-light\": 600,\n  \"solid-regular\": 700,\n  \"solid-medium\": 800,\n  \"solid-bold\": 900,\n  // we want to put variable fonts last\n  variable: 1e3,\n  \"variable-italic\": 1e3\n};\nfunction variantNameToWeight(variant) {\n  const kebabCaseVariant = variantToKebabCase(variant);\n  return variantsNameToWeight[kebabCaseVariant];\n}\nfunction variantToKebabCase(variant) {\n  return variant.toLowerCase().replace(/\\s+/gu, \"-\");\n}\nfunction getFontStyle(variant) {\n  variant = variant.toLowerCase();\n  if (variant.includes(\"italic\") || variant.includes(\"oblique\") || variant.includes(\"slanted\"))\n    return \"italic\";\n  return \"normal\";\n}\n\n// ../../library/src/render/fonts/CustomFontSource.ts\nvar customFontSelectorPrefix = \"CUSTOM;\";\nfunction getCustomFontName(fileName, properties) {\n  if (!properties)\n    return fileName.substring(0, fileName.lastIndexOf(\".\"));\n  const { font } = properties;\n  const fontFamily = font.preferredFamily || font.fontFamily;\n  const isAssetVariableFont = Array.isArray(font.variationAxes);\n  if (isAssetVariableFont && fontFamily.toLowerCase().includes(\"variable\"))\n    return fontFamily;\n  const variant = isAssetVariableFont ? \"Variable\" : (font.preferredSubFamily || font.fontSubFamily).trim();\n  if (variant === \"\")\n    return fontFamily;\n  return `${fontFamily} ${variant}`;\n}\nvar CustomFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"custom\" /* Custom */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    var _a, _b, _c;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidCustomFontAsset(asset)) {\n        continue;\n      }\n      const variationAxesData = (_a = asset.properties) == null ? void 0 : _a.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const fontName = getCustomFontName(asset.name, asset.properties);\n      const fontFamily = this.createFontFamily(fontName);\n      const openTypeData = (_b = asset.properties) == null ? void 0 : _b.font.openTypeData;\n      const variant = isVariableFont2 ? \"variable\" : this.inferVariantName(fontName);\n      const font = {\n        family: fontFamily,\n        selector: `${customFontSelectorPrefix}${fontName}`,\n        variant,\n        postscriptName: (_c = asset.properties) == null ? void 0 : _c.font.postscriptName,\n        file: asset.url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData)\n      };\n      fontFamily.fonts.push(font);\n      fontFamily.owner = asset.ownerType === \"team\" ? \"team\" : \"project\";\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(...fontFamily.fonts);\n    }\n    return fonts;\n  }\n  isValidCustomFontAsset(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\"))\n      return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\")\n      return false;\n    if (!asset.properties.font)\n      return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData))\n      return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature))\n        return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  inferVariantName(family) {\n    const possibleValues = [\n      \"thin\",\n      \"ultra light\",\n      \"extra light\",\n      \"light\",\n      \"normal\",\n      \"medium\",\n      \"semi bold\",\n      \"bold\",\n      \"extra bold\",\n      \"black\"\n    ];\n    const possibleValuesWithItalics = [...possibleValues.map((value) => `${value} italic`), ...possibleValues];\n    const lowerCaseFamily = family.toLowerCase();\n    const tokens = [...lowerCaseFamily.split(\" \"), ...lowerCaseFamily.split(\"-\"), ...lowerCaseFamily.split(\"_\")];\n    const foundToken = possibleValuesWithItalics.find(\n      (value) => tokens.includes(value) || tokens.includes(value.replace(/\\s+/gu, \"\"))\n    );\n    if (foundToken)\n      return foundToken.replace(/^\\w|\\s\\w/gu, (char) => char.toUpperCase());\n    return \"Regular\";\n  }\n  createFontFamily(family) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily)\n      return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: []\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(customFontSelectorPrefix))\n      return null;\n    const tokens = selector.split(customFontSelectorPrefix);\n    if (tokens[1] === void 0)\n      return null;\n    const locator = { source: \"custom\", name: tokens[1] };\n    return locator;\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator)\n      return;\n    if (!createFont && !this.byFamilyName.get(locator.name))\n      return;\n    const fonts = this.getFontFamilyByName(locator.name).fonts;\n    const woff2Font = fonts.find((font) => {\n      var _a;\n      return (_a = font.file) == null ? void 0 : _a.endsWith(\".woff2\");\n    });\n    return woff2Font || fonts[0];\n  }\n  getFontFamilyByName(family) {\n    const foundFontFamily = this.byFamilyName.get(family);\n    if (foundFontFamily)\n      return foundFontFamily;\n    const fontFamily = {\n      source: \"custom\",\n      name: family,\n      fonts: []\n    };\n    fontFamily.fonts.push({\n      selector: `${customFontSelectorPrefix}${family}`,\n      variant: this.inferVariantName(family),\n      family: fontFamily\n    });\n    return fontFamily;\n  }\n};\n\n// ../../library/src/render/fonts/getRelatedFontVariants.ts\nfunction getRelatedFontVariants(currentVariant, availableVariants) {\n  return {\n    ...pickBoldItalicVariants(currentVariant, availableVariants),\n    ...pickVariableVariants(currentVariant, availableVariants)\n  };\n}\nfunction pickBoldItalicVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0) {\n    return {\n      variantBold: void 0,\n      variantBoldItalic: void 0,\n      variantItalic: void 0\n    };\n  }\n  const { weight: currentWeight, style: currentStyle } = currentVariant;\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  const boldVariantByStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (variant.isVariable !== currentVariant.isVariable)\n      continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n    if (variant.weight <= currentWeight)\n      continue;\n    if (!boldVariantByStyle.has(variant.style)) {\n      boldVariantByStyle.set(variant.style, variant);\n    }\n  }\n  let variantBold = boldVariantByStyle.get(currentStyle);\n  let variantBoldItalic = boldVariantByStyle.get(\"italic\");\n  const currentVariantWeight = currentVariant.weight;\n  if (currentVariantWeight <= 300) {\n    variantBold = variantByWeightAndStyle.get(`400-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"400-italic\") ?? variantBoldItalic;\n  } else if (currentVariantWeight <= 500) {\n    variantBold = variantByWeightAndStyle.get(`700-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"700-italic\") ?? variantBoldItalic;\n  } else {\n    variantBold = variantByWeightAndStyle.get(`900-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"900-italic\") ?? variantBoldItalic;\n  }\n  const variantItalic = variantByWeightAndStyle.get(`${currentWeight}-italic`);\n  return { variantBold, variantItalic, variantBoldItalic };\n}\nfunction pickVariableVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0)\n    return { variantVariable: void 0, variantVariableItalic: void 0 };\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (!variant.isVariable)\n      continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n  }\n  return {\n    variantVariable: variantByWeightAndStyle.get(`${currentVariant.weight}-normal`) ?? variantByWeightAndStyle.get(`400-normal`) ?? void 0,\n    variantVariableItalic: variantByWeightAndStyle.get(`${currentVariant.weight}-italic`) ?? variantByWeightAndStyle.get(`400-italic`) ?? void 0\n  };\n}\n\n// ../../library/src/render/fonts/loadOpenType.ts\nasync function loadFontsWithOpenType(source) {\n  switch (source) {\n    case \"google\": {\n      const supportedFonts = await import(\"./google-AYKKG2SQ.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    case \"fontshare\": {\n      const supportedFonts = await import(\"./fontshare-26R7ZKFH.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\nasync function loadFontToOpenTypeFeatures(source) {\n  switch (source) {\n    case \"google\": {\n      const features = await import(\"./google-SWLQ2TQI.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"fontshare\": {\n      const features = await import(\"./fontshare-TJDTFQF5.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"framer\": {\n      const features = await import(\"./framer-font-O4FG2JPU.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\n\n// ../../library/src/render/fonts/parseFontshareCategories.ts\nvar knownFontshareCategories = [\"display\", \"sans\", \"serif\", \"slab\", \"handwritten\", \"script\"];\nfunction parseFontshareCategories(categoriesField) {\n  return categoriesField.split(\",\").map((category) => category.trim().toLowerCase()).filter(isKnownFontshareCategory);\n}\nfunction isKnownFontshareCategory(category) {\n  return knownFontshareCategories.includes(category);\n}\n\n// ../../library/src/render/fonts/FontshareSource.ts\nvar fontsharePrefix = \"FS;\";\nvar weightNameToNumber = {\n  thin: 100,\n  hairline: 100,\n  // Alternative name for \"thin\".\n  extralight: 200,\n  light: 300,\n  regular: 400,\n  medium: 500,\n  semibold: 600,\n  bold: 700,\n  extrabold: 800,\n  ultra: 800,\n  // Alternative name for \"extrabold\".\n  black: 900,\n  heavy: 900\n  // Alternative name for \"black\".\n};\nvar weightNames = /* @__PURE__ */ Object.keys(weightNameToNumber);\nvar allowedVariantsRegex = /* @__PURE__ */ (() => new RegExp(`^(?:${[...weightNames, \"italic\", \"variable\"].join(\"|\")})`, \"u\"))();\nvar FontshareSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"fontshare\" /* Fontshare */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  /**\n   * Parses variant a string into a weight number and style, defaulting to a\n   * weight of `400` and/or a style of `\"normal\"` depending on what isn't\n   * present in the variant string.\n   *\n   * E.g:\n   *   - `\"Bold\"` becomes `{ weight: 700, style: \"normal\" }`\n   *   - `\"Bold Italic\"` becomes `{ weight: 700, style: \"italic\" }`\n   *   - `\"Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   *   - `\"Variable Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   */\n  static parseVariant(variant) {\n    const variantSplit = variant.toLowerCase().split(\" \");\n    const weightName = weightNames.find((weightName2) => {\n      return variantSplit.includes(weightName2);\n    });\n    const styleName = variant.toLowerCase().includes(\"italic\") ? \"italic\" : \"normal\";\n    const weight = weightName && weightNameToNumber[weightName] || 400;\n    const style = styleName === \"italic\" ? styleName : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(fontsharePrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return {\n      name: family.replace(fontsharePrefix, \"\"),\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  static createSelector(family, variant) {\n    return `${fontsharePrefix}${family}-${variant.toLowerCase()}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/fontShare.ts\n   */\n  static createMetadataSelector(family) {\n    return `${fontsharePrefix}${family}`;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  async importFonts(fontshareFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"fontshare\" /* Fontshare */);\n    const fonts = [];\n    for (const fontshareFont of fontshareFonts) {\n      const fontStyles = fontshareFont.font_styles.filter((fontStyle) => {\n        const variant = fontStyle.name.toLowerCase();\n        const allowedVariantMatch = allowedVariantsRegex.exec(variant);\n        if (!allowedVariantMatch || variant.split(\" \").includes(\"wide\")) {\n          return false;\n        }\n        return true;\n      });\n      const fontVariants = fontStyles.map((fontStyle) => {\n        const variantInfo = FontshareSource.parseVariant(fontStyle.name);\n        return {\n          ...variantInfo,\n          selector: FontshareSource.createSelector(fontshareFont.name, fontStyle.name),\n          isVariable: fontStyle.is_variable,\n          fontshareVariantName: fontStyle.name,\n          file: fontStyle.file\n        };\n      });\n      const key7 = FontshareSource.createMetadataSelector(fontshareFont.name);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      const familyName = fontshareFont.name;\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = { name: familyName, fonts: [], source: this.name };\n        this.addFontFamily(fontFamily);\n      }\n      const fontMetadataSelector = FontshareSource.createMetadataSelector(fontshareFont.name);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const fontVariant of fontVariants) {\n        const { variantBold, variantBoldItalic, variantItalic, variantVariable, variantVariableItalic } = getRelatedFontVariants(fontVariant, fontVariants);\n        const font = {\n          family: fontFamily,\n          variant: fontVariant.fontshareVariantName.toLowerCase(),\n          selector: fontVariant.selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight: fontVariant.weight,\n          style: fontVariant.style,\n          file: fontVariant.file,\n          category: mapToKnownCategory(fontshareFont.category),\n          hasOpenTypeFeatures,\n          variationAxes: fontVariant.isVariable ? variationAxes : void 0\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"fontshare\" /* Fontshare */);\n    const selector = FontshareSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory(categoryString) {\n  const categoryMapping = {\n    serif: \"serif\",\n    sans: \"sans-serif\",\n    slab: \"slab\",\n    display: \"display\",\n    // As of Nov 2023, these two look similar enough \u2013 so we can map them into the same category.\n    handwritten: \"handwriting\",\n    script: \"handwriting\"\n  };\n  const category = parseFontshareCategories(categoryString)[0];\n  return category && categoryMapping[category];\n}\n\n// ../../library/src/render/fonts/FramerFontSource.ts\nvar framerInterFontPrefix = \"Inter\";\nvar framerFontPrefix = \"FR;\";\nvar weightNameToNumber2 = {\n  Thin: 100,\n  ExtraLight: 200,\n  Light: 300,\n  \"\": 400,\n  // Regular weights have a selector like \"Inter\" or \"Inter-Italic\", with no mention of weight.\n  Medium: 500,\n  SemiBold: 600,\n  Bold: 700,\n  ExtraBold: 800,\n  Black: 900\n};\nvar FramerFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"framer\" /* Framer */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  addFontFamily(familyName) {\n    const fontFamily = { name: familyName, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  static getDraftFontPropertiesBySelector(selector) {\n    if (!selector.startsWith(framerFontPrefix) && !selector.startsWith(framerInterFontPrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    const [family, weightAndStyleInfo = \"\"] = tokens;\n    if (!family)\n      return null;\n    const style = weightAndStyleInfo.includes(\"Italic\") ? \"italic\" : \"normal\";\n    const weightName = weightAndStyleInfo.replace(\"Italic\", \"\");\n    const weight = weightName && weightNameToNumber2[weightName] || 400;\n    return {\n      family,\n      style,\n      weight,\n      source: \"framer\" /* Framer */,\n      variant: void 0,\n      category: \"sans-serif\"\n    };\n  }\n  static createMetadataSelector(family) {\n    return `${framerFontPrefix}${family}`;\n  }\n  importFonts(framerFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fonts = [];\n    framerFonts.forEach((framerFont) => {\n      const { familyName, ...rest } = framerFont;\n      const key7 = FramerFontSource.createMetadataSelector(framerFont.familyName);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(familyName);\n      }\n      const isVariable = framerFont.selector === framerFont.selectorVariable || framerFont.selector === framerFont.selectorVariableItalic;\n      const font = {\n        ...rest,\n        family: fontFamily,\n        variationAxes: isVariable ? variationAxes : void 0\n      };\n      fontFamily.fonts.push(font);\n      fonts.push(font);\n    });\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"framer\" /* Framer */);\n    const selector = FramerFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\n\n// ../../library/src/render/fonts/GoogleFontSource.ts\nvar googleFontSelectorPrefix = \"GF;\";\nvar GoogleFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"google\" /* Google */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  static parseVariant(variant) {\n    if (variant === \"regular\")\n      return { style: \"normal\", weight: 400 };\n    const match = /(\\d*)(normal|italic)?/u.exec(variant);\n    if (!match)\n      return {};\n    const weight = parseInt(match[1] || \"400\");\n    const style = match[2] === \"italic\" ? \"italic\" : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(googleFontSelectorPrefix))\n      return null;\n    const isVariable = selector.includes(\"-variable-\");\n    const tokens = isVariable ? selector.split(\"-variable-\") : selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return { name: family.replace(googleFontSelectorPrefix, \"\"), variant, source: this.name, isVariable };\n  }\n  static createSelector(family, variant, isVariableFont2) {\n    return `${googleFontSelectorPrefix}${family}-${isVariableFont2 ? \"variable-\" : \"\"}${variant}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/googleFonts.ts\n   */\n  static createMetadataSelector(family) {\n    return `${googleFontSelectorPrefix}${family}`;\n  }\n  addFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  async importFonts(webFonts, webFontsWithAxes, fontsToVariationAxes) {\n    var _a;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"google\" /* Google */);\n    const fonts = [];\n    const webFontsMap = mapBy(webFonts, (webFont) => webFont.family);\n    const webFontsWithAxesMap = mapBy(webFontsWithAxes, (webFont) => webFont.family);\n    for (const webFontName in webFontsMap) {\n      const webFont = webFontsMap[webFontName];\n      if (!webFont)\n        continue;\n      let fontFamily = this.getFontFamilyByName(webFont.family);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(webFont.family);\n      }\n      const rawStaticVariants = webFont.variants;\n      const staticVariants = rawStaticVariants.map((variantName) => {\n        const parsedVariant = GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: GoogleFontSource.createSelector(webFontName, variantName, false),\n          isVariable: false,\n          file: webFont.files[variantName]\n        };\n      });\n      const variableFont = webFontsWithAxesMap[webFontName];\n      const variableVariants = (variableFont == null ? void 0 : variableFont.axes) ? variableFont.variants.map((variantName) => {\n        const parsedVariant = GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: GoogleFontSource.createSelector(webFontName, variantName, true),\n          isVariable: true,\n          file: variableFont.files[variantName]\n        };\n      }) : [];\n      const key7 = GoogleFontSource.createMetadataSelector(webFont.family);\n      const variationAxes = fontsToVariationAxes == null ? void 0 : fontsToVariationAxes[key7];\n      const allVariants = [...staticVariants, ...variableVariants];\n      const allSuccessfullyParsedVariants = allVariants.filter(isSuccessfullyParsedFontVariant);\n      const fontMetadataSelector = GoogleFontSource.createMetadataSelector(webFontName);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const variant of allVariants) {\n        const { weight, style, selector, googleFontsVariantName } = variant;\n        const linkedVariants = isSuccessfullyParsedFontVariant(variant) ? getRelatedFontVariants(variant, allSuccessfullyParsedVariants) : void 0;\n        const { variantBold, variantItalic, variantBoldItalic, variantVariable, variantVariableItalic } = linkedVariants ?? {};\n        const font = {\n          family: fontFamily,\n          variant: googleFontsVariantName,\n          selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight,\n          style,\n          category: mapToKnownCategory2(webFont.category),\n          file: (_a = variant.file) == null ? void 0 : _a.replace(\"http://\", \"https://\"),\n          variationAxes: variant.isVariable ? variationAxes : void 0,\n          hasOpenTypeFeatures\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"google\" /* Google */);\n    const selector = GoogleFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory2(category) {\n  const categoryMapping = {\n    serif: \"serif\",\n    \"sans-serif\": \"sans-serif\",\n    display: \"display\",\n    handwriting: \"handwriting\",\n    monospace: \"monospace\"\n  };\n  if (!category)\n    return void 0;\n  return categoryMapping[category];\n}\nfunction mapBy(array, keyFn) {\n  return array.reduce(\n    (acc, item) => {\n      acc[keyFn(item)] = item;\n      return acc;\n    },\n    {}\n  );\n}\n\n// ../../library/src/render/fonts/loadFont.ts\nvar import_fontfaceobserver = __toESM(require_fontfaceobserver_standalone(), 1);\nvar FONT_LOADING_TIMEOUT = 5e3;\nvar MAX_RETRIES = 3;\nvar FontLoadingError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"FontLoadingError\";\n  }\n};\nvar fontRequests = /* @__PURE__ */ new Map();\nvar fontReadyPromises = /* @__PURE__ */ new Map();\nvar loadFont = (data2, doc) => loadFontWithRetries(data2, doc);\nasync function loadFontWithRetries(data2, doc, attempt = 0) {\n  const { family, url, stretch, unicodeRange, isVariableFont: isVariableFont2 } = data2;\n  const weight = isVariableFont2 ? data2.weight : data2.weight || 500;\n  const style = data2.style || \"normal\";\n  const requestId = `${family}-${style}-${weight}-${url}`;\n  if (!fontRequests.has(requestId) || attempt > 0) {\n    const fontFace = new FontFace(family, `url(${url})`, {\n      weight: isString(weight) ? weight : weight == null ? void 0 : weight.toString(),\n      style,\n      stretch,\n      unicodeRange\n    });\n    const readyPromise = fontFace.load().then(() => {\n      doc.fonts.add(fontFace);\n      return isFontReady(family, style, weight);\n    }).catch((e) => {\n      if (e.name !== \"NetworkError\") {\n        throw e;\n      }\n      if (attempt < MAX_RETRIES) {\n        return loadFontWithRetries(data2, doc, attempt + 1);\n      }\n      throw new FontLoadingError(\n        `Font loading failed after ${attempt} retries due to network error: ${JSON.stringify({\n          family,\n          style,\n          weight,\n          url,\n          stretch,\n          unicodeRange\n        })}`\n      );\n    });\n    fontRequests.set(requestId, readyPromise);\n  }\n  await fontRequests.get(requestId);\n}\nasync function isFontReady(family, style, weight) {\n  const readyPromiseId = `${family}-${style}-${weight}`;\n  if (!fontReadyPromises.has(readyPromiseId)) {\n    const observer = new import_fontfaceobserver.default(family, {\n      style,\n      weight\n    });\n    const readyPromise = observer.load(null, FONT_LOADING_TIMEOUT);\n    fontReadyPromises.set(readyPromiseId, readyPromise);\n  }\n  try {\n    await fontReadyPromises.get(readyPromiseId);\n  } catch (e) {\n    throw new FontLoadingError(\n      `Failed to check if font is ready (${FONT_LOADING_TIMEOUT}ms timeout exceeded): ${JSON.stringify({\n        family,\n        style,\n        weight\n      })}`\n    );\n  }\n}\n\n// ../../library/src/render/fonts/static/variable-fonts/framer.json\nvar framer_default = { \"FR;Inter\": [{ tag: \"opsz\", minValue: 14, maxValue: 32, defaultValue: 14, name: \"Optical size\" }, { tag: \"wght\", minValue: 100, maxValue: 900, defaultValue: 400, name: \"Weight\" }] };\n\n// ../../library/src/render/fonts/loadVariationAxes.ts\nfunction loadVariationAxes(source) {\n  try {\n    if (source === \"framer\" /* Framer */) {\n      if (!isValidVariationAxesData(framer_default))\n        return void 0;\n      return framer_default;\n    } else {\n      const axes = (async () => {\n        switch (source) {\n          case \"google\" /* Google */: {\n            return (await import(\"./google-UJB733SC.mjs\")).default;\n          }\n          case \"fontshare\" /* Fontshare */: {\n            return (await import(\"./fontshare-5ADQGVKG.mjs\")).default;\n          }\n          default:\n            assertNever(source);\n        }\n      })();\n      if (!isValidVariationAxesData(axes))\n        return void 0;\n      return axes;\n    }\n  } catch (error) {\n    console.error(error);\n    return void 0;\n  }\n}\nfunction isValidVariationAxesData(data2) {\n  return isObject(data2) && Object.values(data2).every(isValidVariationAxes);\n}\nfunction isVariationAxis2(data2) {\n  return isObject(data2) && isString(data2.tag);\n}\nfunction isValidVariationAxes(data2) {\n  return Array.isArray(data2) && data2.every(isVariationAxis2);\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar FontStore = class {\n  constructor() {\n    /**\n     * Enabling the `FontStore` will make Text components automatically load\n     * their fonts on render. Otherwise font loading is the responsibility of\n     * the environment.\n     */\n    __publicField(this, \"enabled\", false);\n    __publicField(this, \"bySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"getGoogleFontsListPromise\");\n    __publicField(this, \"getFontshareFontsListPromise\");\n    __publicField(this, \"getBuiltInFontsListPromise\");\n    __publicField(this, \"loadedSelectors\", /* @__PURE__ */ new Set());\n    __publicField(this, \"local\");\n    __publicField(this, \"google\");\n    __publicField(this, \"fontshare\");\n    __publicField(this, \"builtIn\");\n    __publicField(this, \"framer\");\n    __publicField(this, \"custom\");\n    this.local = new LocalFontSource();\n    this.google = new GoogleFontSource();\n    this.fontshare = new FontshareSource();\n    this.framer = new FramerFontSource();\n    this.custom = new CustomFontSource();\n    this.builtIn = new BuiltInFontSource();\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.importLocalFonts();\n  }\n  addFont(font) {\n    this.bySelector.set(font.selector, font);\n  }\n  getAvailableFonts() {\n    return Array.from(this.bySelector.values());\n  }\n  importLocalFonts() {\n    for (const font of this.local.importFonts()) {\n      this.addFont(font);\n      this.loadFont(font);\n    }\n  }\n  async importGoogleFonts() {\n    if (!this.getGoogleFontsListPromise) {\n      this.getGoogleFontsListPromise = Promise.resolve().then(async () => {\n        const { staticFonts, variableFonts } = await runtime.fetchGoogleFontsList();\n        const axesData = await loadVariationAxes(\"google\" /* Google */);\n        for (const font of await this.google.importFonts(staticFonts, variableFonts, axesData)) {\n          this.addFont(font);\n        }\n        return { staticFonts, variableFonts };\n      });\n    }\n    return this.getGoogleFontsListPromise;\n  }\n  async importFontshareFonts() {\n    if (!this.getFontshareFontsListPromise) {\n      this.getFontshareFontsListPromise = runtime.fetchFontshareFontsList();\n      const fontshareFonts = await this.getFontshareFontsListPromise;\n      const axesData = await loadVariationAxes(\"fontshare\" /* Fontshare */);\n      for (const font of await this.fontshare.importFonts(fontshareFonts, axesData)) {\n        this.addFont(font);\n      }\n    }\n    return this.getFontshareFontsListPromise;\n  }\n  async importBuiltInFonts() {\n    if (!this.getBuiltInFontsListPromise) {\n      this.getBuiltInFontsListPromise = runtime.fetchBuiltInFontsList();\n      const builtInFonts = await this.getBuiltInFontsListPromise;\n      for (const font of await this.builtIn.importFonts(builtInFonts)) {\n        this.addFont(font);\n      }\n    }\n    return this.getBuiltInFontsListPromise;\n  }\n  importFramerFonts(fonts) {\n    const axesData = loadVariationAxes(\"framer\" /* Framer */);\n    this.framer.importFonts(fonts, axesData).forEach((font) => {\n      this.addFont(font);\n    });\n  }\n  importCustomFonts(assets) {\n    this.bySelector.forEach((_, key7) => {\n      if (key7.startsWith(customFontSelectorPrefix)) {\n        this.bySelector.delete(key7);\n      }\n    });\n    for (const font of this.custom.importFonts(assets)) {\n      this.addFont(font);\n    }\n  }\n  getFontFamily(info) {\n    const fontFamily = this[info.source].getFontFamilyByName(info.name);\n    return fontFamily;\n  }\n  getFontBySelector(selector, createFont = true) {\n    if (!selector)\n      return void 0;\n    if (selector.startsWith(customFontSelectorPrefix)) {\n      return this.custom.getFontBySelector(selector, createFont);\n    }\n    return this.bySelector.get(selector);\n  }\n  // Function called by draft to get font properties for a selector, before the (google) font is available in the store\n  // It replaces a previous function that created Font instances and added them to the store\n  // on the fly while rendering drafts, which caused issues (overriding real google font info with fake instances with partial data).\n  // Ideally this should not happen, but that's a fix for another day\n  getDraftPropertiesBySelector(selector) {\n    const font = this.getFontBySelector(selector);\n    if (font) {\n      return {\n        style: font.style,\n        weight: font.weight,\n        variant: font.variant,\n        family: createFontFamilyName(font),\n        source: font.family.source,\n        category: font.category\n      };\n    }\n    const googleLocator = this.google.parseSelector(selector);\n    if (googleLocator) {\n      const fontVariant = GoogleFontSource.parseVariant(googleLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = googleLocator.isVariable ? createVariableFontFamilyName(googleLocator.name) : googleLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: googleLocator.variant,\n          family,\n          source: \"google\" /* Google */,\n          category: void 0\n        };\n      }\n    }\n    const fontshareLocator = this.fontshare.parseSelector(selector);\n    if (fontshareLocator) {\n      const fontVariant = FontshareSource.parseVariant(fontshareLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = fontshareLocator.isVariable ? createVariableFontFamilyName(fontshareLocator.name) : fontshareLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: fontshareLocator.variant,\n          family,\n          source: \"fontshare\" /* Fontshare */,\n          category: void 0\n        };\n      }\n    }\n    const builtInFontLocator = this.builtIn.parseSelector(selector);\n    if (builtInFontLocator) {\n      const fontVariant = BuiltInFontSource.parseVariant(builtInFontLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: builtInFontLocator.variant,\n          family: builtInFontLocator.name,\n          source: \"builtIn\" /* BuiltIn */,\n          category: void 0\n        };\n      }\n    }\n    const framerFontDraftProperties = FramerFontSource.getDraftFontPropertiesBySelector(selector);\n    if (framerFontDraftProperties) {\n      return framerFontDraftProperties;\n    }\n    return null;\n  }\n  isSelectorLoaded(selector) {\n    return this.loadedSelectors.has(selector);\n  }\n  /**\n   * Load a single font\n   * */\n  async loadFont(font) {\n    if (this.isSelectorLoaded(font.selector)) {\n      return 0 /* AlreadyLoaded */;\n    }\n    const source = font.family.source;\n    const fontIsVariable = isVariableFont(font);\n    switch (source) {\n      case \"local\" /* Local */:\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"framer\" /* Framer */:\n        if (import_process3.default.env.NODE_ENV !== \"test\") {\n          await isFontReady(font.family.name, font.style, font.weight);\n        }\n        if (fontIsVariable) {\n          if (!font.file) {\n            return Promise.reject(`Unable to load font: ${font.selector}`);\n          }\n          await loadFont(\n            {\n              family: createFontFamilyName(font),\n              url: font.file,\n              weight: font.weight,\n              style: font.style,\n              isVariableFont: fontIsVariable\n            },\n            document\n          );\n        }\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"google\" /* Google */:\n      case \"fontshare\" /* Fontshare */:\n      case \"builtIn\" /* BuiltIn */:\n      case \"custom\" /* Custom */:\n        if (!font.file) {\n          return Promise.reject(`Unable to load font: ${font.selector}`);\n        }\n        await loadFont(\n          {\n            family: createFontFamilyName(font),\n            url: font.file,\n            weight: font.weight,\n            style: font.style,\n            isVariableFont: fontIsVariable\n          },\n          document\n        );\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      default:\n        assertNever(source);\n    }\n  }\n  async loadFontsFromSelectors(selectors) {\n    if (!this.enabled)\n      return [];\n    const googleFontsRequested = selectors.some((selector) => selector.startsWith(googleFontSelectorPrefix));\n    const fontshareFontsRequested = selectors.some((selector) => selector.startsWith(fontsharePrefix));\n    const builtInFontsRequested = selectors.some((selector) => selector.startsWith(builtInFontSelectorPrefix));\n    if (googleFontsRequested || fontshareFontsRequested || builtInFontsRequested) {\n      try {\n        await this.importFontshareFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load Fontshare fonts:\", error);\n      }\n      try {\n        await this.importGoogleFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load Google fonts:\", error);\n      }\n      try {\n        await this.importBuiltInFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load built=in fonts:\", error);\n      }\n    }\n    const fonts = selectors.map((s) => this.bySelector.get(s)).filter((f) => !!f);\n    return Promise.allSettled(fonts.map((f) => this.loadFont(f)));\n  }\n  async loadFonts(fontSelectors) {\n    const results = await this.loadFontsFromSelectors(fontSelectors);\n    const newlyLoadedFontCount = results.filter(\n      (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n    ).length;\n    return { newlyLoadedFontCount };\n  }\n  // Deprecated methods that are kept for backwards compatibility with any compiled code that might still be using them\n  /**\n   * @deprecated This method\u2019s API is confusing as 1) it works for all fonts,\n   * not just missing ones, 2) it supports both async/await and a callback,\n   * but the callback is called only if *all* fonts have been loaded. Use\n   * `loadFonts` instead.\n   */\n  async loadMissingFonts(fontSelectors, fontsLoadedCallback) {\n    const selectors = fontSelectors.filter((selector) => {\n      return !fontStore.isSelectorLoaded(selector);\n    });\n    if (selectors.length === 0)\n      return;\n    await fontStore.loadWebFontsFromSelectors(selectors);\n    const isEachFontLoaded = selectors.every((selector) => {\n      return fontStore.isSelectorLoaded(selector);\n    });\n    if (isEachFontLoaded && fontsLoadedCallback)\n      fontsLoadedCallback();\n  }\n  /**\n   * @deprecated This method is misleading as it works with all fonts, not\n   * just web fonts. Use `loadFonts` instead. (In Framer, \u201Cweb fonts\u201D has a\n   * specific meaning: it refers to Google/Fontshare fonts and exludes custom\n   * and local fonts. See e.g. `WebFontStore` and the \u201CWeb\u201D/\u201CCustom\u201D toggle in\n   * the font picker in the UI. More context: https://github.com/framer/FramerStudio/pull/15778#discussion_r1395120760)\n   */\n  async loadWebFontsFromSelectors(selectors) {\n    return this.loadFontsFromSelectors(selectors);\n  }\n  // defaultFont doesn\u2019t seem to be used anywhere in our code (except tests),\n  // but keeping it for backwards compatibility with any compiled code.\n  /** @deprecated This will be removed in the future. Don\u2019t use it. */\n  get defaultFont() {\n    const defaultFont = this.getFontBySelector(\"Inter\");\n    assert(defaultFont, \"Can\\u2019t find Inter font\");\n    return defaultFont;\n  }\n};\nvar fontStore = /* @__PURE__ */ new FontStore();\n\n// ../../library/src/render/presentation/CustomProperties.tsx\nimport { jsx as jsx66 } from \"react/jsx-runtime\";\nfunction CustomProperties({\n  children,\n  customProperties\n}) {\n  return /* @__PURE__ */ jsx66(\"div\", { style: customProperties, children });\n}\n\n// ../../library/src/render/presentation/DeprecatedComponentContainer.tsx\nimport React78 from \"react\";\nimport { jsx as jsx67 } from \"react/jsx-runtime\";\nvar DeprecatedComponentContainer = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"state\", {});\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n    }\n    componentDidCatch(error, info) {\n      var _a2;\n      let stack = (_a2 = info.componentStack) == null ? void 0 : _a2.split(\"\\n\").filter((line) => line.length !== 0);\n      let currentIndex = 0;\n      if (stack) {\n        for (const line of stack) {\n          if (line.startsWith(`    in ${this.constructor.name}`)) {\n            break;\n          }\n          currentIndex++;\n        }\n        stack = stack.slice(0, currentIndex);\n      }\n      this.setState({\n        lastError: {\n          children: this.props.children,\n          name: error.name,\n          message: error.message,\n          componentStack: stack\n        }\n      });\n    }\n    renderErrorPlaceholder(error) {\n      const { RenderPlaceholder } = runtime;\n      return /* @__PURE__ */ jsx67(FrameWithMotion, { ...this.props, background: null, children: /* @__PURE__ */ jsx67(RenderPlaceholder, { error }) });\n    }\n    render() {\n      var _a2, _b;\n      countNodeRender();\n      let { children } = this.props;\n      const { componentIdentifier } = this.props;\n      const { lastError: error } = this.state;\n      const noChildren = !children || Array.isArray(children) && children.filter((c) => c).length === 0;\n      if (noChildren) {\n        const errorComponent = runtime.componentLoader.errorForIdentifier(componentIdentifier);\n        if (errorComponent) {\n          const title = `Error in ${errorComponent.file}`;\n          const message = errorComponent.error;\n          return this.renderErrorPlaceholder({ title, message });\n        }\n      }\n      if (error && error.children === children) {\n        const component = runtime.componentLoader.componentForIdentifier(componentIdentifier);\n        const file = component ? component.file : \"???\";\n        const title = `Error in ${file}`;\n        const message = error.message;\n        return this.renderErrorPlaceholder({ title, message });\n      }\n      ;\n      (_b = (_a2 = asRecord(safeWindow))[\"__checkComponentBudget__\"]) == null ? void 0 : _b.call(_a2);\n      let frameProps = this.props;\n      if (RenderTarget.current() !== RenderTarget.canvas) {\n        const {\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          opacity: _opacity,\n          visible,\n          _constraints,\n          _initialStyle,\n          name,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft,\n          // Remove the children and the componentIdentifier from the props passed into the component\n          componentIdentifier: originalComponentIdentifier,\n          children: originalChildren,\n          style,\n          duplicatedFrom,\n          widthType,\n          heightType,\n          ...childProps\n        } = frameProps;\n        children = React78.Children.map(originalChildren, (child) => {\n          if (!isReactChild(child) || !isReactElement(child)) {\n            return child;\n          }\n          if (!isPageOrScroll(originalComponentIdentifier)) {\n            return /* @__PURE__ */ jsx67(LayoutGroup, { inherit: false, id: this.props.__layoutId, children: /* @__PURE__ */ jsx67(AutomaticLayoutIds, { enabled: false, children: React78.cloneElement(child, childProps) }) });\n          }\n          return React78.cloneElement(child, childProps);\n        });\n        frameProps = {\n          style,\n          _constraints,\n          _initialStyle,\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          visible,\n          name,\n          duplicatedFrom,\n          id: frameProps.id,\n          layoutId: this.props.__layoutId,\n          widthType,\n          heightType,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft\n        };\n      }\n      return (\n        /* The background should come before the frameProps. It looks like there never should be a background in frameProps,\n         * but published design components can contain an old version of the presentation tree that expects the background\n         * that is passed to be rendered here\n         * See the stackBackgroundTest.tsx integration test for an example of such a case\n         */\n        /* @__PURE__ */ jsx67(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx67(\n          FrameWithMotion,\n          {\n            \"data-framer-component-container\": true,\n            background: null,\n            overflow: \"visible\",\n            ref: this.setElement,\n            ...frameProps,\n            children\n          }\n        ) })\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultComponentContainerProps\", {\n    style: {},\n    visible: true,\n    componentIdentifier: \"\"\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultComponentContainerProps\n  }), __publicField(_a, \"contextType\", ComponentContainerContext), _a;\n})();\nfunction isPageOrScroll(identifier) {\n  if (!identifier)\n    return false;\n  if (identifier === \"framer/Page\")\n    return true;\n  if (identifier === \"framer/Scroll\")\n    return true;\n  return false;\n}\n\n// ../../library/src/render/presentation/Forms/FormPlainTextInput.tsx\nimport { forwardRef as forwardRef7, startTransition as startTransition10, useCallback as useCallback18, useState as useState8 } from \"react\";\n\n// ../../library/src/render/presentation/Forms/shared.ts\nimport React79 from \"react\";\nvar FormInputStyleVariableNames = /* @__PURE__ */ ((FormInputStyleVariableNames2) => {\n  FormInputStyleVariableNames2[\"Padding\"] = \"--framer-input-padding\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopLeft\"] = \"--framer-input-border-radius-top-left\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopRight\"] = \"--framer-input-border-radius-top-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomRight\"] = \"--framer-input-border-radius-bottom-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomLeft\"] = \"--framer-input-border-radius-bottom-left\";\n  FormInputStyleVariableNames2[\"BorderColor\"] = \"--framer-input-border-color\";\n  FormInputStyleVariableNames2[\"BorderTopWidth\"] = \"--framer-input-border-top-width\";\n  FormInputStyleVariableNames2[\"BorderRightWidth\"] = \"--framer-input-border-right-width\";\n  FormInputStyleVariableNames2[\"BorderBottomWidth\"] = \"--framer-input-border-bottom-width\";\n  FormInputStyleVariableNames2[\"BorderLeftWidth\"] = \"--framer-input-border-left-width\";\n  FormInputStyleVariableNames2[\"BorderStyle\"] = \"--framer-input-border-style\";\n  FormInputStyleVariableNames2[\"Background\"] = \"--framer-input-background\";\n  FormInputStyleVariableNames2[\"FontFamily\"] = \"--framer-input-font-family\";\n  FormInputStyleVariableNames2[\"FontWeight\"] = \"--framer-input-font-weight\";\n  FormInputStyleVariableNames2[\"FontSize\"] = \"--framer-input-font-size\";\n  FormInputStyleVariableNames2[\"FontColor\"] = \"--framer-input-font-color\";\n  FormInputStyleVariableNames2[\"FontStyle\"] = \"--framer-input-font-style\";\n  FormInputStyleVariableNames2[\"FontLetterSpacing\"] = \"--framer-input-font-letter-spacing\";\n  FormInputStyleVariableNames2[\"FontTextAlignment\"] = \"--framer-input-font-text-alignment\";\n  FormInputStyleVariableNames2[\"FontLineHeight\"] = \"--framer-input-font-line-height\";\n  FormInputStyleVariableNames2[\"FontOpenType\"] = \"--framer-input-font-open-type-features\";\n  FormInputStyleVariableNames2[\"PlaceholderColor\"] = \"--framer-input-placeholder-color\";\n  FormInputStyleVariableNames2[\"BoxShadow\"] = \"--framer-input-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedBorderColor\"] = \"--framer-input-focused-border-color\";\n  FormInputStyleVariableNames2[\"FocusedBorderWidth\"] = \"--framer-input-focused-border-width\";\n  FormInputStyleVariableNames2[\"FocusedBorderStyle\"] = \"--framer-input-focused-border-style\";\n  FormInputStyleVariableNames2[\"FocusedBackground\"] = \"--framer-input-focused-background\";\n  FormInputStyleVariableNames2[\"FocusedBoxShadow\"] = \"--framer-input-focused-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedTransition\"] = \"--framer-input-focused-transition\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBackground\"] = \"--framer-input-boolean-checked-background\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderColor\"] = \"--framer-input-boolean-checked-border-color\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderWidth\"] = \"--framer-input-boolean-checked-border-width\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderStyle\"] = \"--framer-input-boolean-checked-border-style\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBoxShadow\"] = \"--framer-input-boolean-checked-box-shadow\";\n  FormInputStyleVariableNames2[\"BooleanCheckedTransition\"] = \"--framer-input-boolean-checked-transition\";\n  FormInputStyleVariableNames2[\"InvalidTextColor\"] = \"--framer-input-invalid-text-color\";\n  FormInputStyleVariableNames2[\"IconBackgroundImage\"] = \"--framer-input-icon-image\";\n  FormInputStyleVariableNames2[\"IconMaskImage\"] = \"--framer-input-icon-mask-image\";\n  FormInputStyleVariableNames2[\"IconColor\"] = \"--framer-input-icon-color\";\n  FormInputStyleVariableNames2[\"WrapperHeight\"] = \"--framer-input-wrapper-height\";\n  return FormInputStyleVariableNames2;\n})(FormInputStyleVariableNames || {});\nvar Var = FormInputStyleVariableNames;\nvar inputClassName = \"framer-form-input\";\nvar inputWrapperClassName = \"framer-form-input-wrapper\";\nvar emptyValueClassName = \"framer-form-input-empty\";\nvar forcedFocusClassName = \"framer-form-input-forced-focus\";\nvar forcedCheckedClassName = \"framer-form-input-forced-checked\";\nfunction cssValue(value) {\n  if (typeof value === \"number\")\n    return value;\n  if (value.startsWith(\"--\"))\n    return css.variable(value);\n  if (value === \"\")\n    return '\"\"';\n  return value;\n}\nfunction css(selector, declaration) {\n  let output = \" \";\n  for (const key7 in declaration) {\n    const value = declaration[key7];\n    output += `${key7.replace(/([A-Z])/gu, \"-$1\").toLowerCase()}: ${cssValue(value)}; `;\n  }\n  return selector + \" {\" + output + \"}\";\n}\n((css2) => {\n  function variable(...variables) {\n    const lastItem = variables[variables.length - 1];\n    let value = lastItem.startsWith(\"--\") ? `var(${lastItem})` : lastItem;\n    for (let index = variables.length - 2; index >= 0; index--) {\n      const element = variables[index];\n      value = `var(${element}, ${value})`;\n    }\n    return value;\n  }\n  css2.variable = variable;\n})(css || (css = {}));\nvar sharedInputCSS = [\n  css(`.${inputClassName}`, {\n    padding: css.variable(Var.Padding),\n    background: \"transparent\",\n    fontFamily: css.variable(Var.FontFamily),\n    fontWeight: css.variable(Var.FontWeight),\n    fontSize: css.variable(Var.FontSize),\n    fontStyle: css.variable(Var.FontStyle),\n    color: css.variable(Var.FontColor),\n    fontFeatureSettings: css.variable(Var.FontOpenType),\n    border: \"none\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    width: \"100%\",\n    height: css.variable(Var.WrapperHeight, \"100%\"),\n    letterSpacing: css.variable(Var.FontLetterSpacing),\n    textAlign: css.variable(Var.FontTextAlignment),\n    lineHeight: css.variable(Var.FontLineHeight)\n  }),\n  css(`.${inputClassName}:focus-visible`, { outline: \"none\" })\n];\nvar inputWrapperCSS = /* @__PURE__ */ (() => [css(`.${inputWrapperClassName}`, { overflow: \"hidden\" })])();\nvar inputBorderAllSides = `var(${Var.BorderTopWidth}) var(${Var.BorderRightWidth}) var(${Var.BorderBottomWidth}) var(${Var.BorderLeftWidth})`;\nvar inputBorderCSS = [\n  `.${inputWrapperClassName}:after {\n        content: \"\";\n        pointer-events: none;\n        box-sizing: border-box;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        border-top-left-radius: var(${Var.BorderRadiusTopLeft});\n        border-top-right-radius: var(${Var.BorderRadiusTopRight});\n        border-bottom-right-radius: var(${Var.BorderRadiusBottomRight});\n        border-bottom-left-radius: var(${Var.BorderRadiusBottomLeft});\n        border-color: var(${Var.BorderColor});\n        border-top-width: var(${Var.BorderTopWidth});\n        border-right-width: var(${Var.BorderRightWidth});\n        border-bottom-width: var(${Var.BorderBottomWidth});\n        border-left-width: var(${Var.BorderLeftWidth});\n        border-style: var(${Var.BorderStyle});\n        transition: var(${Var.FocusedTransition});\n        transition-property: border-color, border-width, border-style, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius;\n    }`\n];\nvar customValidityKey = \"customError\";\nvar validKey = \"valid\";\nfunction isRelevantValidityStateKey(key7) {\n  return key7 !== customValidityKey && key7 !== validKey;\n}\nfunction isInvalid(validity) {\n  for (const key7 in validity) {\n    if (!isRelevantValidityStateKey(key7))\n      continue;\n    if ((validity == null ? void 0 : validity[key7]) === true)\n      return true;\n  }\n  return false;\n}\nfunction useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus) {\n  const isValidRef = React79.useRef(null);\n  const handleInvalid = React79.useCallback(\n    (e) => {\n      if (!onInvalid)\n        return;\n      if (isValidRef.current === false)\n        return;\n      isValidRef.current = false;\n      e.currentTarget.setCustomValidity(\" \");\n      e.currentTarget.reportValidity();\n      onInvalid(e);\n    },\n    [onInvalid]\n  );\n  const handleChange = React79.useCallback(\n    (e) => {\n      onChange == null ? void 0 : onChange(e);\n      if (!onInvalid && !onValid)\n        return;\n      const validity = e.target.validity;\n      if (isValidRef.current === false && !isInvalid(validity)) {\n        e.currentTarget.setCustomValidity(\"\");\n        e.target.reportValidity();\n        isValidRef.current = true;\n        onValid == null ? void 0 : onValid();\n      }\n    },\n    [onInvalid, onValid, onChange]\n  );\n  const handleBlur = React79.useCallback(\n    (e) => {\n      if (!onInvalid) {\n        onBlur == null ? void 0 : onBlur(e);\n        return;\n      }\n      if (isValidRef.current === false)\n        return;\n      const validity = e.currentTarget.validity;\n      if (isInvalid(validity)) {\n        handleInvalid(e);\n        return;\n      }\n      onBlur == null ? void 0 : onBlur(e);\n    },\n    [handleInvalid, onBlur, onInvalid]\n  );\n  return React79.useMemo(() => {\n    return {\n      onInvalid: handleInvalid,\n      onChange: handleChange,\n      onBlur: handleBlur,\n      onFocus\n    };\n  }, [handleInvalid, handleChange, handleBlur, onFocus]);\n}\nvar iconSpacing = 10;\nvar iconSize = 16;\nvar inputIconCSSDeclaration = {\n  content: \"\",\n  display: \"block\",\n  position: \"absolute\",\n  right: 0,\n  top: 0,\n  bottom: 0,\n  width: `${iconSize}px`,\n  boxSizing: \"content-box\",\n  padding: css.variable(Var.Padding),\n  border: \"none\",\n  pointerEvents: \"none\",\n  backgroundRepeat: \"no-repeat\",\n  backgroundSize: `${iconSize}px`,\n  maskRepeat: \"no-repeat\",\n  maskSize: `${iconSize}px`,\n  backgroundColor: css.variable(Var.IconColor)\n};\n\n// ../../library/src/render/presentation/Forms/FormPlainTextInput.tsx\nimport { jsx as jsx68 } from \"react/jsx-runtime\";\nimport { createElement as createElement2 } from \"react\";\nvar passwordManagerIgnoreDataProps = {\n  // 1Password\n  \"data-1p-ignore\": true,\n  // LastPass\n  \"data-lpignore\": true,\n  // Dashlane\n  // https://support.dashlane.com/hc/en-us/articles/4420122792594-Optimize-your-web-forms-for-Dashlane-Autofill\n  \"data-form-type\": \"other\",\n  // autocomplete=\"off\" is a generic property that disables autofilling. It\n  // is not always respected by some browsers or password managers.\n  autocomplete: \"off\"\n};\nvar PlainTextInput = /* @__PURE__ */ forwardRef7(function FormPlainTextInput(props, ref) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    max,\n    min,\n    placeholder,\n    required,\n    step: step2,\n    style,\n    type,\n    maxLength,\n    // We use a defaultValue instead of a value so that the input remains\n    // uncontrolled by React. This is important because we want the user\n    // to be able to provide an initial value in the property panel, and for\n    // the value to be editable by the user in the preview.\n    defaultValue,\n    autofillEnabled,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    onValid,\n    ...rest\n  } = props;\n  const [hasValue, setHasValue] = useState8(!!defaultValue);\n  const [prevDefaultValue, setPrevDefaultValue] = useState8();\n  if (defaultValue !== prevDefaultValue) {\n    setHasValue(!!defaultValue);\n    setPrevDefaultValue(defaultValue);\n  }\n  const handleChange = useCallback18(\n    async (e) => {\n      await interactionResponse();\n      const newValue = e.target.value;\n      onChange == null ? void 0 : onChange(e);\n      startTransition10(() => setHasValue(!!newValue));\n    },\n    [onChange]\n  );\n  const eventHandlers = useCustomValidity(onValid, onInvalid, handleChange, onBlur, onFocus);\n  if (type === \"hidden\") {\n    return /* @__PURE__ */ jsx68(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  const dataProps = autofillEnabled === false ? passwordManagerIgnoreDataProps : void 0;\n  return /* @__PURE__ */ jsx68(\n    motion.div,\n    {\n      ref,\n      style,\n      className: cx(textInputWrapperClassName, inputWrapperClassName, className2),\n      ...rest,\n      children: type === \"textarea\" ? /* @__PURE__ */ createElement2(\n        motion.textarea,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          key: defaultValue,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: inputClassName,\n          defaultValue,\n          maxLength\n        }\n      ) : /* @__PURE__ */ createElement2(\n        motion.input,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          key: defaultValue,\n          type,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: cx(inputClassName, !hasValue && emptyValueClassName),\n          defaultValue,\n          min,\n          max,\n          step: step2,\n          maxLength\n        }\n      )\n    }\n  );\n});\nvar iconSize2 = 16;\nvar textInputWrapperClassName = \"framer-form-text-input\";\nvar defaultTextareaResizerIcon = 'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\"><path d=\"m1.5 8 7-7M9 5.5l-3 3\" stroke=\"%23999\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path></svg>';\nvar defaultDateIconMaskImage = 'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"rgb(153, 153, 153)\" d=\"M3 5a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2H3Z\" opacity=\".3\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M3.25 5.25a2 2 0 0 1 2-2h5.5a2 2 0 0 1 2 2v5.5a2 2 0 0 1-2 2h-5.5a2 2 0 0 1-2-2ZM3 6.75h9.5\"/></svg>';\nvar defaultTimeIconMaskImage = 'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M2.5 8a5.5 5.5 0 1 1 11 0 5.5 5.5 0 1 1-11 0Z\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M7.75 8.25v-3m0 3h2\"/></svg>';\nvar styles = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${inputWrapperClassName}`, {\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::placeholder`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */)\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"], .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]`,\n    {\n      \"-webkit-appearance\": \"none\",\n      appearance: \"none\"\n    }\n  ),\n  // iOS only fix for centered date & time inputs: https://github.com/tailwindlabs/tailwindcss-forms/pull/144\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-date-and-time-value`, {\n    textAlign: \"start\"\n  }),\n  css(`.${textInputWrapperClassName} textarea`, {\n    display: \"flex\",\n    resize: css.variable(\"--framer-textarea-resize\" /* Resize */),\n    overflowY: \"auto\",\n    minHeight: \"inherit\",\n    maxHeight: \"inherit\",\n    whiteSpace: \"break-spaces\"\n  }),\n  // This targets the resize handle in WebKit browsers. Unfortunately, it is not\n  // possible in CSS to target the resize handle in Firefox, so FF will always\n  // show the native resize handle.\n  css(`.${textInputWrapperClassName} textarea::-webkit-resizer`, {\n    background: `no-repeat url('${defaultTextareaResizerIcon}')`\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar`, {\n    cursor: \"pointer\",\n    background: \"transparent\"\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-thumb:window-inactive`, {\n    opacity: 0\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-corner`, {\n    background: \"none\",\n    backgroundColor: \"transparent\",\n    outline: \"none\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-datetime-edit`, {\n    // Prevent browsers from improvising the date/time placeholder height.\n    height: css.variable(\"--framer-input-font-line-height\" /* FontLineHeight */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}.${emptyValueClassName}::-webkit-datetime-edit`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    // This tells safari to use the color for the shadow dom elements.\n    \"-webkit-text-fill-color\": css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    overflow: \"visible\"\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before, .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`,\n    {\n      ...inputIconCSSDeclaration,\n      paddingLeft: `${iconSpacing}px`,\n      maskPosition: `${iconSpacing}px center`,\n      backgroundPosition: `${iconSpacing}px center`\n    }\n  ),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultDateIconMaskImage}')`),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultTimeIconMaskImage}')`),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  // Hide the native date picker icon, but still align it with the custom icon, allowing user to click it to show the\n  // date/time picker.\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-calendar-picker-indicator`, {\n    opacity: 0,\n    position: \"absolute\",\n    right: 0,\n    top: 0,\n    bottom: 0,\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    width: `${iconSize2}px`,\n    // Makes sure the icon hit target covers the entire height of the input.\n    height: \"100%\"\n  }),\n  css(`.${textInputWrapperClassName}:focus-within, .${textInputWrapperClassName}.${forcedFocusClassName}`, {\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */),\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */)\n  }),\n  css(\n    `.${textInputWrapperClassName}:focus-within::after, .${textInputWrapperClassName}.${forcedFocusClassName}::after`,\n    {\n      borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n      borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n      borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n    }\n  )\n])();\nvar FormPlainTextInput2 = /* @__PURE__ */ withCSS(PlainTextInput, styles, \"framer-lib-form-plain-text-input\");\n\n// ../../library/src/render/presentation/Forms/FormBooleanInput.tsx\nimport React80 from \"react\";\nimport { jsx as jsx69 } from \"react/jsx-runtime\";\nvar className = \"framer-form-boolean-input\";\nvar BooleanInput = /* @__PURE__ */ React80.forwardRef(function FormPlainTextInput3(props, ref) {\n  const { inputName, type = \"checkbox\", defaultChecked, onValid, ...rest } = props;\n  const isCanvas = useIsOnFramerCanvas();\n  const attributes = isCanvas ? { checked: defaultChecked } : { defaultChecked };\n  const eventHandlers = useCustomValidity(onValid, props.onInvalid, props.onChange, props.onBlur, props.onFocus);\n  return /* @__PURE__ */ jsx69(\n    motion.input,\n    {\n      ...rest,\n      ...attributes,\n      ...eventHandlers,\n      readOnly: isCanvas,\n      ref,\n      type,\n      name: inputName,\n      className: cx(className, props.className)\n    }\n  );\n});\nvar defaultCheckedIcon = 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 4 8 L 6.5 10.5 L 11.5 5.5\" fill=\"transparent\" stroke-width=\"2\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>';\nvar borderRadius = `var(${\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */}) var(${\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */}) var(${\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */}) var(${\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */})`;\nvar styles2 = /* @__PURE__ */ (() => [\n  css(`.${className}`, {\n    \"-webkit-appearance\": \"none\",\n    // background-color: #fff; fixes a bug on iOS where the checkbox shows\n    // through the appearance: none;\n    alignItems: \"center\",\n    appearance: \"none\",\n    backgroundColor: \"#fff\",\n    background: \"--framer-input-background\" /* Background */,\n    borderRadius,\n    boxShadow: \"--framer-input-box-shadow\" /* BoxShadow */,\n    display: \"flex\",\n    justifyContent: \"center\",\n    margin: 0,\n    overflow: \"hidden\",\n    position: \"relative\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"box-shadow, background\"\n  }),\n  // The after element styles the border of the checkbox to conform to\n  // framer's inset border model.\n  css(`.${className}::after`, {\n    background: \"transparent\",\n    borderColor: css.variable(\"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderRadius,\n    borderStyle: \"--framer-input-border-style\" /* BorderStyle */,\n    borderWidth: inputBorderAllSides,\n    boxSizing: \"border-box\",\n    content: \"\",\n    display: \"block\",\n    inset: 0,\n    position: \"absolute\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"border-color, border-width, border-style\"\n  }),\n  // The before element is used to display the check mark icon. It is\n  // faded in when the input is checked.\n  css(`.${className}::before`, {\n    ...inputIconCSSDeclaration,\n    backgroundPosition: \"center\",\n    backgroundSize: \"contain\",\n    maskPosition: \"center\",\n    maskSize: \"contain\",\n    height: \"100%\",\n    opacity: 0,\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"opacity\",\n    width: \"100%\"\n  }),\n  // The BooleanInput component shows an svg check mark icon whenever an\n  // image url isn't provided. That's not an intuitive system for radios\n  // however, where we never want to show the default check mark.\n  css(`.${className}[type=\"checkbox\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultCheckedIcon}')`)\n  }),\n  css(`.${className}[type=\"radio\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */)\n  }),\n  css(`.${className}:checked, .${className}.${forcedCheckedClassName}`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    backgroundColor: css.variable(\"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:checked::before, .${className}.${forcedCheckedClassName}::before`, {\n    opacity: 1\n  }),\n  css(`.${className}:checked::after, .${className}.${forcedCheckedClassName}::after`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    borderColor: css.variable(\"--framer-input-boolean-checked-border-color\" /* BooleanCheckedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus, .${className}.${forcedFocusClassName}`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus-visible`, { outline: \"none\" }),\n  css(`.${className}:focus::after, .${className}.${forcedFocusClassName}::after`, {\n    // When not set, the styles when focused shouldn't clear the checked\n    // styles.\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus:checked`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus:checked::after`, {\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, \"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  })\n])();\nvar FormBooleanInput = /* @__PURE__ */ withCSS(BooleanInput, styles2, \"framer-lib-form-boolean-input\");\n\n// ../../library/src/render/presentation/Forms/FormSelect.tsx\nimport React81 from \"react\";\nimport { jsx as jsx70 } from \"react/jsx-runtime\";\nvar Select = /* @__PURE__ */ React81.forwardRef(function Select2(props, measureRef) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    required,\n    hidden,\n    defaultValue,\n    selectOptions,\n    style,\n    onValid,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    ...rest\n  } = props;\n  const eventHandlers = useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus);\n  const key7 = Array.isArray(defaultValue) ? defaultValue[0] : defaultValue;\n  if (hidden) {\n    return /* @__PURE__ */ jsx70(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  return /* @__PURE__ */ jsx70(\n    motion.div,\n    {\n      ref: measureRef,\n      style,\n      className: cx(inputWrapperClassName, selectWrapperClassName, className2),\n      ...rest,\n      children: /* @__PURE__ */ jsx70(\n        motion.select,\n        {\n          name: inputName,\n          autoFocus,\n          required,\n          className: inputClassName,\n          defaultValue,\n          ...eventHandlers,\n          children: selectOptions == null ? void 0 : selectOptions.map((option, index) => {\n            switch (option.type) {\n              case \"divider\":\n                return /* @__PURE__ */ jsx70(\"hr\", {}, index);\n              case \"option\":\n                return (\n                  // biome-ignore lint/suspicious/noArrayIndexKey: Values can be duplicated, so we could only use UUIDs here (but that isn't really better)\n                  /* @__PURE__ */ jsx70(\"option\", { value: option.value ?? option.title, disabled: option.disabled, children: option.title ?? option.value }, index)\n                );\n            }\n          })\n        },\n        key7\n      )\n    }\n  );\n});\nvar selectWrapperClassName = \"framer-form-select-wrapper\";\nvar selectArrowSize = 16;\nvar defaultSelectCaretMaskImage = /* @__PURE__ */ (() => `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${selectArrowSize}\" height=\"${selectArrowSize}\"><path d=\"M 3.5 6 L 8 10.5 L 12.5 6\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>`)();\nvar styles3 = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${selectWrapperClassName}`, {\n    // First we use the complete padding string, which may be any valid\n    // padding string (10px, 10px 10px, 10px 10px 10px, or 10px 10px\n    // 10px 10px), and use it to set only the right padding. This pushes\n    // the actual select away from the arrow by 1x.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    paddingLeft: 0,\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${selectWrapperClassName} select`, {\n    appearance: \"none\",\n    \"-webkit-appearance\": \"none\",\n    // Then we use the complete padding string again as the margin for\n    // the select. This moves the select 2x the padding right away from\n    // the arrow.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    // Overwrite the values inherited from .${inputClassName}. On a\n    // select, these values are on the wrapper.\n    background: \"transparent\"\n  }),\n  css(`.${selectWrapperClassName}::before`, {\n    ...inputIconCSSDeclaration,\n    paddingLeft: `${iconSpacing}px`,\n    backgroundPosition: `${iconSpacing}px center`,\n    maskPosition: `${iconSpacing}px center`,\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultSelectCaretMaskImage}')`)\n  }),\n  css(`.${selectWrapperClassName} select:required:invalid`, {\n    color: css.variable(\"--framer-input-invalid-text-color\" /* InvalidTextColor */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within, .${selectWrapperClassName}.${forcedFocusClassName}`, {\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within::after, .${selectWrapperClassName}.${forcedFocusClassName}::after`, {\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  // Enforcing a color on the native select options. On windows, browsers select options\n  // inherit some style properties like color but not others so they might end up in a weird\n  // state in which we can't read the options until we hover.\n  // These are ignored on mac\n  css(`.${selectWrapperClassName} select option`, {\n    color: \"#000\"\n  }),\n  css(`.${selectWrapperClassName} select option:disabled`, {\n    color: \"rgba(0, 0, 0, 0.4)\"\n  })\n])();\nvar FormSelect = /* @__PURE__ */ withCSS(Select, styles3, \"framer-lib-form-select\");\n\n// ../../library/src/render/presentation/Image.tsx\nimport React82 from \"react\";\nimport { jsx as jsx71, jsxs as jsxs16 } from \"react/jsx-runtime\";\nvar Image2 = /* @__PURE__ */ React82.forwardRef(function Image3(props, ref) {\n  const { background, children, alt, draggable, ...rest } = props;\n  const style = { ...rest.style };\n  if (background) {\n    delete style.background;\n  }\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  return /* @__PURE__ */ jsxs16(MotionComponent, { ...rest, style, ref, children: [\n    background && /* @__PURE__ */ jsx71(BackgroundImageComponent, { image: background, alt, draggable }),\n    children\n  ] });\n});\n\n// ../../library/src/render/utils/isShallowEqualArray.ts\nfunction isShallowEqualArray(a, b) {\n  return a.length === b.length && a.every((v, i) => v === b[i]);\n}\n\n// ../../library/src/render/presentation/PresentationTree.ts\nfunction convertPresentationTree(node, converter, componentDefinitionProvider, getCachedNode, skipCodeComponentPropsCache = false) {\n  const cachedNode = getCachedNode && getCachedNode(node);\n  if (cachedNode)\n    return cachedNode;\n  let children;\n  if (isCodeComponentContainerPresentation(node)) {\n    children = convertCodeComponentContainer(\n      componentDefinitionProvider,\n      node,\n      converter,\n      getCachedNode,\n      skipCodeComponentPropsCache\n    );\n  } else if (node.children) {\n    children = node.children.map(\n      (n) => convertPresentationTree(\n        n,\n        converter,\n        componentDefinitionProvider,\n        getCachedNode,\n        skipCodeComponentPropsCache\n      )\n    );\n  }\n  return converter(node, children);\n}\nfunction isCodeComponentContainerPresentation(value) {\n  return !!value.codeComponentIdentifier;\n}\nfunction convertCodeComponentContainer(componentDefinitionProvider, node, converter, getCachedNode, skipCodeComponentPropsCache = false) {\n  var _a;\n  const codeComponentChildren = node.getComponentChildren ? node.getComponentChildren(componentDefinitionProvider) : [];\n  const codeComponentSlots = node.getComponentSlotChildren ? node.getComponentSlotChildren(componentDefinitionProvider) : {};\n  let codeComponentPresentation;\n  const props = node.getCodeComponentProps ? node.getCodeComponentProps(componentDefinitionProvider, { skipCache: skipCodeComponentPropsCache }) : void 0;\n  if (node.cache.codeComponentPresentation) {\n    codeComponentPresentation = node.cache.codeComponentPresentation;\n    if (!isShallowEqualArray(codeComponentPresentation.children, codeComponentChildren)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.children = codeComponentChildren;\n    }\n    if (!isEqual(codeComponentPresentation.props, props)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.cache.props = null;\n      codeComponentPresentation.props = props;\n    }\n  } else {\n    const { id: containerId, codeComponentIdentifier: identifier, codeComponentPackageVersion } = node;\n    node.cache.codeComponentPresentation = codeComponentPresentation = new CodeComponentPresentation(\n      containerId + identifier,\n      identifier,\n      codeComponentPackageVersion,\n      props,\n      codeComponentChildren\n    );\n  }\n  codeComponentPresentation.props.placeholders = node.cache.placeholders;\n  const slotKeys = Object.keys(codeComponentSlots);\n  if (slotKeys.length) {\n    codeComponentPresentation.props = { ...codeComponentPresentation.props };\n    codeComponentPresentation.props.__slotKeys = slotKeys;\n    for (const slotKey of slotKeys) {\n      const slotChildren = (_a = codeComponentSlots[slotKey]) == null ? void 0 : _a.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      );\n      codeComponentPresentation.props[slotKey] = slotChildren;\n    }\n  }\n  return [\n    converter(\n      codeComponentPresentation,\n      codeComponentPresentation.children.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      )\n    )\n  ];\n}\nvar CodeComponentPresentation = class {\n  constructor(id, componentIdentifier, packageVersion, props, children, codeOverrideIdentifier) {\n    this.id = id;\n    this.componentIdentifier = componentIdentifier;\n    this.packageVersion = packageVersion;\n    this.props = props;\n    this.children = children;\n    this.codeOverrideIdentifier = codeOverrideIdentifier;\n    __publicField(this, \"cache\", {});\n  }\n  getProps() {\n    return {\n      ...this.props,\n      id: this.id,\n      key: this.id\n    };\n  }\n  rect(_parentSizeInfo) {\n    return { x: 0, y: 0, width: 0, height: 0 };\n  }\n};\n\n// ../../library/src/render/presentation/RichText.tsx\nimport {\n  Children as Children4,\n  Fragment as Fragment11,\n  cloneElement as cloneElement3,\n  forwardRef as forwardRef9,\n  isValidElement as isValidElement5,\n  useContext as useContext25,\n  useInsertionEffect as useInsertionEffect6,\n  useMemo as useMemo19,\n  useRef as useRef24\n} from \"react\";\n\n// ../../library/src/utils/slugify.ts\nvar nonSlugCharactersRegExp = /[^\\p{Letter}\\p{Number}()]+/gu;\nvar trimSlugRegExp = /^-+|-+$/gu;\nfunction slugify(value) {\n  return value.toLowerCase().replace(nonSlugCharactersRegExp, \"-\").replace(trimSlugRegExp, \"\");\n}\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport * as React83 from \"react\";\nimport { useRef as useRef22 } from \"react\";\n\n// ../../library/src/modules/replaceFramerPageLinks.ts\nvar htmlRegExp = /[&<>'\"]/gu;\nvar escapeHTML = (str) => str.replace(\n  htmlRegExp,\n  (tag) => ({\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    \"'\": \"&#39;\",\n    '\"': \"&quot;\"\n  })[tag] || tag\n);\nvar regex = /(<([a-z]+)(?:\\s+(?!href[\\s=])[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*)(?:(\\s+href\\s*=)(?:'([^']*)'|\"([^\"]*)\"))?((?:\\s+[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*>)/gi;\nfunction replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {\n  return rawHTML.replace(\n    regex,\n    (original, pre1, tag, pre2, value1, value2, post) => {\n      var _a, _b;\n      if (tag.toLowerCase() !== \"a\")\n        return original;\n      const href = value1 || value2;\n      const pageLink = parseFramerPageLink(href.replace(/&amp;/gu, \"&\"));\n      if (!pageLink || !pageLink.target)\n        return original;\n      const targetRoute = getRoute(pageLink.target);\n      if (!isRoute(targetRoute) || !isRoute(currentRoute))\n        return original;\n      const targetPath = targetRoute.path;\n      const currentPath = currentRoute.path;\n      if (!targetPath || !currentPath)\n        return original;\n      let attributes = ` ${\"data-framer-page-link-target\" /* Page */}=\"${pageLink.target}\"`;\n      const elementId = getRouteElementId(targetRoute, pageLink.element ?? void 0);\n      if (elementId) {\n        attributes += ` ${\"data-framer-page-link-element\" /* Element */}=\"${pageLink.element}\"`;\n      }\n      const link = linkFromFramerPageLink(href);\n      if (!link || isString(link))\n        return original;\n      if (linkMatchesRoute(currentRoute, link, implicitPathVariables)) {\n        attributes += ` ${\"data-framer-page-link-current\" /* Current */}`;\n      }\n      let relativePath = targetPath;\n      const pathVariables = Object.assign({}, implicitPathVariables, (_a = pageLink.collectionItem) == null ? void 0 : _a.pathVariables);\n      if (Object.keys(pathVariables).length > 0) {\n        relativePath = relativePath.replace(pathVariablesRegExp2, (_, key7) => \"\" + pathVariables[key7]);\n      }\n      if ((_b = pageLink.collectionItem) == null ? void 0 : _b.pathVariables) {\n        const params = new URLSearchParams(pageLink.collectionItem.pathVariables);\n        attributes += ` ${\"data-framer-page-link-path-variables\" /* PathVariables */}=\"${params}\"`;\n      }\n      relativePath = computeRelativePath(currentPath, relativePath);\n      return pre1 + pre2 + `\"${escapeHTML(relativePath + (elementId ? `#${elementId}` : \"\"))}\"` + attributes + post;\n    }\n  );\n}\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport { jsx as jsx72 } from \"react/jsx-runtime\";\nvar htmlEscapes = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nvar reUnescapedHtml = /[&<>\"']/gu;\nvar reHasUnescapedHtml = /* @__PURE__ */ (() => new RegExp(reUnescapedHtml.source))();\nfunction escapeHTML2(str) {\n  return str && reHasUnescapedHtml.test(str) ? str.replace(reUnescapedHtml, (chr) => htmlEscapes[chr] ?? \"\") : str || \"\";\n}\nvar deprecatedRichTextPlaceholder = \"{{ text-placeholder }}\";\nvar richTextWrapperClassName = \"rich-text-wrapper\";\nvar DeprecatedRichText = /* @__PURE__ */ React83.forwardRef(\n  function Text(props, forwardedRef) {\n    const {\n      id,\n      name,\n      html,\n      htmlFromDesign,\n      text,\n      textFromDesign,\n      fonts = [],\n      width,\n      height,\n      left,\n      right,\n      top,\n      bottom,\n      center,\n      className: className2,\n      stylesPresetsClassName,\n      visible = true,\n      opacity,\n      rotation = 0,\n      verticalAlignment = \"top\",\n      isEditable = false,\n      willChangeTransform,\n      environment: environment2 = RenderTarget.current,\n      withExternalLayout = false,\n      positionSticky,\n      positionStickyTop,\n      positionStickyRight,\n      positionStickyBottom,\n      positionStickyLeft,\n      __htmlStructure,\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      children: _children,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const layoutId = useLayoutId(props);\n    const fallbackLayoutRef = useRef22(null);\n    const layoutRef = forwardedRef ?? fallbackLayoutRef;\n    const { navigate, getRoute } = useRouter();\n    const currentRoute = useCurrentRoute();\n    useRoutePreloader(props.preload ?? []);\n    useMeasureLayout(props, layoutRef);\n    const inCodeComponent = React83.useContext(ComponentContainerContext);\n    const isOnCanvas = useIsOnFramerCanvas();\n    let textOrOverride = text;\n    const forwardedOverrideId = _forwardedOverrideId ?? id;\n    if (forwardedOverrideId && _forwardedOverrides) {\n      const override = _forwardedOverrides[forwardedOverrideId];\n      if (typeof override === \"string\") {\n        textOrOverride = override;\n      }\n    }\n    let innerHTML = \"\";\n    if (textOrOverride) {\n      const escapedText = escapeHTML2(textOrOverride);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (html) {\n      innerHTML = html;\n    } else if (textFromDesign) {\n      const escapedText = escapeHTML2(textFromDesign);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (htmlFromDesign) {\n      innerHTML = htmlFromDesign;\n    }\n    const implicitPathVariables = useImplicitPathVariables();\n    const innerHTMLWithReplacedFramerPageLinks = React83.useMemo(() => {\n      if (isOnCanvas || !getRoute || !currentRoute)\n        return innerHTML;\n      return replaceFramerPageLinks(innerHTML, getRoute, currentRoute, implicitPathVariables);\n    }, [innerHTML, getRoute, currentRoute, implicitPathVariables]);\n    React83.useEffect(() => {\n      const container = layoutRef.current;\n      if (container === null)\n        return;\n      function interceptPageLinks(event) {\n        const anchorElement = findAnchorElement(event.target, layoutRef.current);\n        if (event.metaKey || !navigate || !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */) {\n          return;\n        }\n        const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n        if (didNavigate) {\n          event.preventDefault();\n        }\n      }\n      container.addEventListener(\"click\", interceptPageLinks);\n      return () => {\n        container.removeEventListener(\"click\", interceptPageLinks);\n      };\n    }, [navigate, implicitPathVariables]);\n    useLoadFonts(fonts, __fromCanvasComponent, layoutRef);\n    React83.useInsertionEffect(() => {\n      injectComponentCSSRules();\n    }, []);\n    if (!visible)\n      return null;\n    const isHidden = isEditable && environment2() === RenderTarget.canvas;\n    const style = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment(verticalAlignment),\n      opacity: isHidden ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? props.transformTemplate ?? transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        style.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        style.width = frame2.width;\n        style.minWidth = frame2.width;\n        style.height = frame2.height;\n      } else {\n        style.left = left;\n        style.right = right;\n        style.top = top;\n        style.bottom = bottom;\n        style.width = width;\n        style.height = height;\n        style.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, style);\n    collectTextShadowsForProps(props, style);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(style);\n    }\n    Object.assign(style, props.style);\n    return /* @__PURE__ */ jsx72(\n      motion.div,\n      {\n        id,\n        ref: layoutRef,\n        ...rest,\n        style,\n        layoutId,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"DeprecatedRichText\",\n        \"data-center\": center,\n        className: cx(className2, stylesPresetsClassName, richTextWrapperClassName),\n        transformTemplate: template,\n        dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks }\n      }\n    );\n  }\n);\nfunction convertVerticalAlignment(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction useLoadFonts(fonts, fromCanvasComponent, containerRef) {\n  const prevFontsRef = useRef22([]);\n  if (!isShallowEqualArray(prevFontsRef.current, fonts)) {\n    prevFontsRef.current = fonts;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!fromCanvasComponent || !containerRef.current || RenderTarget.current() !== RenderTarget.canvas)\n        return;\n      if (newlyLoadedFontCount > 0) {\n        measureClosestComponentContainer(containerRef.current);\n      }\n    });\n  }\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport * as React84 from \"react\";\n\n// ../../library/src/render/utils/patchAndWaitForChild.ts\nfunction newOverrideableRef() {\n  return { current: null };\n}\nasync function patchAndWaitForChild(ref, controller) {\n  let current = ref.current;\n  if (current)\n    return current;\n  let refCallbackResolve;\n  const refCallbackPromise = new Promise((resolve, reject) => {\n    refCallbackResolve = resolve;\n    controller.signal.addEventListener(\"abort\", () => reject());\n  });\n  Object.defineProperty(ref, \"current\", {\n    get() {\n      return current;\n    },\n    set(element) {\n      current = element;\n      if (element === null) {\n        controller.abort();\n        return;\n      }\n      refCallbackResolve(element);\n    },\n    configurable: true\n  });\n  return refCallbackPromise;\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport { jsx as jsx73, jsxs as jsxs17 } from \"react/jsx-runtime\";\nvar defaultValues2 = {\n  opacity: 1,\n  y: 0,\n  x: 0,\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  filter: \"none\"\n};\nfunction isEffectKey(key7) {\n  return key7 in defaultValues2;\n}\nfunction createKeyframes(effect) {\n  const out = {};\n  for (const key7 in effect) {\n    if (!isEffectKey(key7))\n      continue;\n    const effectValue = effect[key7];\n    const defaultValue = defaultValues2[key7];\n    if (isUndefined(effectValue) || isUndefined(defaultValue))\n      continue;\n    out[key7] = [effectValue, defaultValue];\n  }\n  return out;\n}\nvar emojiSplitRe = (\n  // eslint-disable-next-line redos-detector/no-unsafe-regex\n  /\\p{Regional_Indicator}{2}|\\p{Emoji}\\p{Emoji_Modifier}?\\p{Variation_Selector}?(?:\\u{200d}\\p{Emoji}\\p{Emoji_Modifier}?\\p{Variation_Selector}?)*|./gu\n);\nfunction tokenizeText(text, tokenization = \"character\", elements, style) {\n  switch (tokenization) {\n    case \"character\":\n    case \"line\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((word, wordIndex) => {\n        var _a;\n        const isLastWord = wordIndex === lastWordIndex;\n        const short = word.length <= 12;\n        return /* @__PURE__ */ jsxs17(React84.Fragment, { children: [\n          /* @__PURE__ */ jsx73(\"span\", { style: { whiteSpace: short ? \"nowrap\" : \"unset\" }, children: (_a = word.match(emojiSplitRe)) == null ? void 0 : _a.map((char, i) => {\n            const ref = newOverrideableRef();\n            elements.add(ref);\n            return (\n              // biome-ignore lint/suspicious/noArrayIndexKey: We are combining index with char.\n              /* @__PURE__ */ jsx73(\"span\", { ref, style, children: char }, char + i)\n            );\n          }) }),\n          isLastWord ? null : \" \"\n        ] }, word + wordIndex + isLastWord);\n      });\n    }\n    case \"word\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((char, i) => {\n        const isLastWord = i === lastWordIndex;\n        const ref = newOverrideableRef();\n        elements.add(ref);\n        return /* @__PURE__ */ jsxs17(React84.Fragment, { children: [\n          /* @__PURE__ */ jsx73(\"span\", { ref, style, children: char }),\n          isLastWord ? null : \" \"\n        ] }, char + i + isLastWord);\n      });\n    }\n    case \"element\":\n    default:\n      return text;\n  }\n}\nfunction tokenizationForEffect(effect) {\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      return effect.tokenization ?? \"character\";\n    default:\n      assertNever(type);\n  }\n}\nfunction transformString(effect) {\n  const transforms = [];\n  if (isNumber(effect.x))\n    transforms.push(`translateX(${effect.x}px)`);\n  if (isNumber(effect.y))\n    transforms.push(`translateY(${effect.y}px)`);\n  if (isNumber(effect.scale))\n    transforms.push(`scale(${effect.scale})`);\n  if (isNumber(effect.rotate))\n    transforms.push(`rotate(${effect.rotate}deg)`);\n  if (isNumber(effect.rotateX))\n    transforms.push(`rotateX(${effect.rotateX}deg)`);\n  if (isNumber(effect.rotateY))\n    transforms.push(`rotateY(${effect.rotateY}deg)`);\n  if (isNumber(effect.skewX))\n    transforms.push(`skewX(${effect.skewX}deg)`);\n  if (isNumber(effect.skewY))\n    transforms.push(`skewY(${effect.skewY}deg)`);\n  return transforms.join(\" \");\n}\nfunction getInitialEffectStyle(canPlay, canAnimate, effect) {\n  if (!effect || !effect.effect)\n    return void 0;\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      switch (effect.tokenization) {\n        case \"element\":\n          if (!canPlay || !canAnimate)\n            return void 0;\n          return {\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n        case \"line\":\n        case \"word\":\n        case \"character\":\n        default:\n          if (!canPlay || !canAnimate)\n            return { display: \"inline-block\" };\n          return {\n            display: \"inline-block\",\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n      }\n    default:\n      assertNever(type);\n  }\n}\nfunction useTextEffect(config, ref, preview) {\n  const elements = useConstant(() => /* @__PURE__ */ new Set());\n  const isRenderingStaticContent = isStaticRenderer();\n  const canPlay = preview || !isRenderingStaticContent;\n  const state = React84.useRef({\n    hasMounted: false,\n    hasAnimatedOnce: false,\n    isAnimating: false,\n    effect: config\n  });\n  state.current.effect = config;\n  const trigger = (config == null ? void 0 : config.trigger) ?? \"onMount\";\n  const target = config == null ? void 0 : config.target;\n  const threshold = config == null ? void 0 : config.threshold;\n  React84.useEffect(() => {\n    if (!canPlay || preview)\n      return;\n    state.current.hasMounted = true;\n    function play() {\n      const { effect } = state.current;\n      if (!canPlay || !effect)\n        return;\n      if ((effect == null ? void 0 : effect.repeat) !== true && state.current.hasAnimatedOnce)\n        return;\n      if ((effect == null ? void 0 : effect.type) === \"appear\" && state.current.isAnimating)\n        return;\n      Object.assign(state.current, {\n        hasAnimatedOnce: true,\n        isAnimating: true\n      });\n      const type = effect.type;\n      switch (type) {\n        case \"appear\": {\n          const { transition, startDelay, repeat, tokenization: tokenization2 } = effect;\n          const cleanupRef = { current: void 0 };\n          void runAppearEffect(\n            tokenization2,\n            effect.effect,\n            elements,\n            transition,\n            startDelay,\n            repeat,\n            () => {\n              Object.assign(state.current, { isAnimating: false });\n            },\n            cleanupRef\n          );\n          return () => {\n            var _a;\n            return (_a = cleanupRef.current) == null ? void 0 : _a.call(cleanupRef);\n          };\n        }\n        default:\n          assertNever(type);\n      }\n    }\n    switch (trigger) {\n      case \"onMount\":\n        play();\n        return;\n      case \"onInView\": {\n        const element = ref == null ? void 0 : ref.current;\n        if (!element)\n          return;\n        return inView(element, play, { amount: threshold ?? 0 });\n      }\n      case \"onScrollTarget\": {\n        const element = target == null ? void 0 : target.ref.current;\n        if (!element)\n          return;\n        return inView(element, play, {\n          amount: threshold ?? 0,\n          root: document,\n          margin: (target == null ? void 0 : target.offset) ? `${target.offset}px 0px 0px 0px` : void 0\n        });\n      }\n      default:\n        assertNever(trigger);\n    }\n  }, [canPlay, elements, preview, ref, target, threshold, trigger]);\n  const effectEnabled = !!config;\n  const tokenization = config ? tokenizationForEffect(config) : void 0;\n  return React84.useMemo(\n    () => ({\n      // The tokenizer is memoized such that it won't trigger RichText to\n      // be rerendered if the effect changes in a way that doesn't effect\n      // the tokenization.\n      getTokenizer: () => {\n        elements.clear();\n        if (!effectEnabled)\n          return void 0;\n        const { hasMounted, hasAnimatedOnce, effect } = state.current;\n        const effectStyle = getInitialEffectStyle(\n          canPlay,\n          preview || mayAnimate(hasMounted, hasAnimatedOnce, effect),\n          state.current.effect\n        );\n        return {\n          text: (text) => tokenizeText(text, tokenization, elements, effectStyle),\n          props: (style) => {\n            if ((effect == null ? void 0 : effect.tokenization) !== \"element\")\n              return void 0;\n            const r = newOverrideableRef();\n            elements.add(r);\n            return {\n              ref: r,\n              style: { ...style, ...effectStyle }\n            };\n          }\n        };\n      },\n      play: () => {\n        const { effect } = state.current;\n        if (!effect)\n          return;\n        const type = effect.type;\n        switch (type) {\n          case \"appear\": {\n            const { transition, startDelay } = effect;\n            void runAppearEffect(tokenization, effect.effect, elements, transition, startDelay);\n            break;\n          }\n          default:\n            assertNever(type);\n        }\n      }\n    }),\n    [canPlay, effectEnabled, elements, preview, tokenization]\n  );\n}\nfunction mayAnimate(hasMounted, hasAnimatedOnce, effect) {\n  return !// If either the component has mounted and the trigger is\n  // onMount, or if the component has run an animation to\n  // completion, the effect is not repeatable, and the trigger\n  // is one that is impacted by repeated effects, we don't\n  // need to set initial style again.\n  (hasMounted && (effect == null ? void 0 : effect.trigger) === \"onMount\" || hasAnimatedOnce && !(effect == null ? void 0 : effect.repeat) && ((effect == null ? void 0 : effect.trigger) === \"onInView\" || (effect == null ? void 0 : effect.trigger) === \"onScrollTarget\"));\n}\nasync function runAppearEffect(tokenization = \"character\", effect, elements, transition, startDelay = 0, repeat = false, callback, cleanupRef) {\n  const enter = createKeyframes(effect);\n  const controller = new AbortController();\n  if (cleanupRef)\n    cleanupRef.current = () => controller.abort();\n  switch (tokenization) {\n    case \"character\":\n    case \"element\":\n    case \"word\": {\n      const list = await createElementList(elements, controller);\n      if (list === null)\n        return;\n      void animate(list, enter, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      }).then(() => callback == null ? void 0 : callback());\n      if (!repeat || !cleanupRef)\n        return;\n      cleanupRef.current = () => void animate(list, effect, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      });\n      return;\n    }\n    case \"line\": {\n      try {\n        for (const element of elements) {\n          await patchAndWaitForChild(element, controller);\n        }\n      } catch {\n        return;\n      }\n      let list;\n      frame.read(() => {\n        list = createLineGroups(elements);\n        if (list.length === 0)\n          return;\n        frame.update(() => {\n          const animations2 = list.map((group, i) => {\n            return animate(group, enter, {\n              ...transition,\n              restDelta: 1e-3,\n              // Since text tokenized into lines are groups of individual\n              // characters where each group is animated at once, we can't use\n              // motion's built in `stagger()` function, and have to manage the\n              // outer delay ourselves.\n              delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n            });\n          });\n          void Promise.all(animations2).then(() => callback == null ? void 0 : callback());\n        });\n      });\n      if (!repeat || !cleanupRef)\n        return;\n      cleanupRef.current = () => {\n        if (list.length === 0)\n          return;\n        list.forEach((group, i) => {\n          void animate(group, effect, {\n            ...transition,\n            restDelta: 1e-3,\n            delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n          });\n        });\n      };\n      return;\n    }\n    default:\n      assertNever(tokenization);\n  }\n}\nasync function createElementList(elements, controller) {\n  if (elements.size === 0)\n    return null;\n  const list = [];\n  for (const element of elements) {\n    try {\n      const node = await patchAndWaitForChild(element, controller);\n      if (node)\n        list.push(node);\n    } catch {\n      return null;\n    }\n  }\n  return list;\n}\nfunction createLineGroups(elements) {\n  const groups2 = [];\n  let currentGroup = [];\n  let lastOffset = null;\n  for (const element of elements) {\n    if (!element.current)\n      continue;\n    const top = element.current.offsetTop;\n    const height = element.current.offsetHeight;\n    if (!height || lastOffset === null || top === lastOffset) {\n      currentGroup.push(element.current);\n    } else {\n      groups2.push(currentGroup);\n      currentGroup = [element.current];\n    }\n    if (height)\n      lastOffset = top;\n  }\n  groups2.push(currentGroup);\n  return groups2;\n}\n\n// ../../library/src/render/presentation/RichText.tsx\nimport { jsx as jsx74 } from \"react/jsx-runtime\";\nvar FitText = /* @__PURE__ */ forwardRef9(\n  ({ viewBoxScale, viewBox, children, ...props }, ref) => {\n    return (\n      // biome-ignore lint/a11y/noSvgWithoutTitle: FIXME: FitText might be inaccessible to screen readers because it\u2019s wrapped in an svg\n      /* @__PURE__ */ jsx74(motion.svg, { ref, ...props, viewBox, children: /* @__PURE__ */ jsx74(\n        motion.foreignObject,\n        {\n          width: \"100%\",\n          height: \"100%\",\n          className: \"framer-fit-text\",\n          transform: `scale(${viewBoxScale})`,\n          style: { overflow: \"visible\", transformOrigin: \"center center\" },\n          children\n        }\n      ) })\n    );\n  }\n);\nvar RichTextContainer = /* @__PURE__ */ forwardRef9(\n  (props, ref) => {\n    const {\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      anchorLinkOffsetY,\n      as: _as,\n      bottom,\n      center,\n      children,\n      environment: environment2 = RenderTarget.current,\n      fonts = [],\n      height,\n      isEditable = false,\n      left,\n      name,\n      opacity,\n      positionSticky,\n      positionStickyBottom,\n      positionStickyLeft,\n      positionStickyRight,\n      positionStickyTop,\n      right,\n      rotation = 0,\n      style,\n      _initialStyle,\n      stylesPresetsClassNames,\n      text: plainText,\n      top,\n      verticalAlignment = \"top\",\n      visible = true,\n      width,\n      willChangeTransform,\n      withExternalLayout = false,\n      viewBox,\n      viewBoxScale = 1,\n      effect,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const isOnCanvas = useIsOnFramerCanvas();\n    const inCodeComponent = useContext25(ComponentContainerContext);\n    const layoutId = useLayoutId(props);\n    const fallbackRef = useRef24(null);\n    const containerRef = ref ?? fallbackRef;\n    useMeasureLayout(props, containerRef);\n    useLoadFonts(fonts, __fromCanvasComponent, containerRef);\n    useInsertionEffect6(() => {\n      injectComponentCSSRules();\n    }, []);\n    const textEffect = useTextEffect(effect, containerRef);\n    const processedChildren = useMemo19(() => {\n      if (!children)\n        return;\n      return processRichTextChildren(\n        children,\n        stylesPresetsClassNames,\n        plainText,\n        anchorLinkOffsetY,\n        void 0,\n        textEffect.getTokenizer()\n      );\n    }, [children, stylesPresetsClassNames, plainText, anchorLinkOffsetY, textEffect]);\n    if (!visible)\n      return null;\n    const isHidden = isEditable && environment2() === RenderTarget.canvas;\n    const containerStyle = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment(verticalAlignment),\n      opacity: isHidden ? 0 : opacity,\n      flexShrink: 0\n    };\n    const positionStyle = {};\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? props.transformTemplate ?? transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        positionStyle.x = frame2.x + (isNumber(style == null ? void 0 : style.x) ? style.x : 0);\n        positionStyle.y = frame2.y + (isNumber(style == null ? void 0 : style.y) ? style.y : 0);\n        containerStyle.rotate = Animatable.getNumber(rotation);\n        containerStyle.width = frame2.width;\n        containerStyle.minWidth = frame2.width;\n        containerStyle.height = frame2.height;\n      } else {\n        containerStyle.left = left;\n        containerStyle.right = right;\n        containerStyle.top = top;\n        containerStyle.bottom = bottom;\n        containerStyle.width = width;\n        containerStyle.height = height;\n        containerStyle.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          containerStyle.position = \"sticky\";\n          containerStyle.willChange = \"transform\";\n          containerStyle.zIndex = 1;\n          containerStyle.top = positionStickyTop;\n          containerStyle.right = positionStickyRight;\n          containerStyle.bottom = positionStickyBottom;\n          containerStyle.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        containerStyle.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, containerStyle);\n    collectTextShadowsForProps(props, containerStyle);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(containerStyle);\n    }\n    Object.assign(containerStyle, _initialStyle, style, positionStyle);\n    if (layoutId) {\n      rest.layout = \"preserve-aspect\";\n    }\n    const Component18 = htmlElementAsMotionComponent(props.as);\n    if (isString(props.viewBox)) {\n      if (props.as !== void 0) {\n        return /* @__PURE__ */ jsx74(\n          Component18,\n          {\n            ...rest,\n            ref: containerRef,\n            style: containerStyle,\n            layoutId,\n            transformTemplate: template,\n            \"data-framer-name\": rest[\"data-framer-name\"] ?? name,\n            \"data-framer-component-type\": \"RichTextContainer\",\n            children: /* @__PURE__ */ jsx74(\n              FitText,\n              {\n                viewBox,\n                viewBoxScale,\n                style: { width: \"100%\", height: \"100%\" },\n                children: processedChildren\n              }\n            )\n          }\n        );\n      } else {\n        return /* @__PURE__ */ jsx74(\n          FitText,\n          {\n            ...rest,\n            ref: containerRef,\n            style: containerStyle,\n            layoutId,\n            viewBox,\n            viewBoxScale,\n            transformTemplate: template,\n            \"data-framer-name\": rest[\"data-framer-name\"] ?? name,\n            \"data-framer-component-type\": \"RichTextContainer\",\n            children: processedChildren\n          }\n        );\n      }\n    }\n    return /* @__PURE__ */ jsx74(\n      Component18,\n      {\n        ...rest,\n        ref: containerRef,\n        style: containerStyle,\n        layoutId,\n        transformTemplate: template,\n        \"data-framer-name\": rest[\"data-framer-name\"] ?? name,\n        \"data-framer-component-type\": \"RichTextContainer\",\n        children: processedChildren\n      }\n    );\n  }\n);\nfunction isFragment(element) {\n  return element.type === Fragment11;\n}\nfunction isLineBreak(element) {\n  return element.type === \"br\";\n}\nfunction processRichTextChildren(element, stylesPresetsClassNames, plainText, anchorLinkOffsetY, slugCounters = {}, tokenizer, depth = isFragment(element) ? -1 : 0) {\n  let children = Children4.toArray(element.props.children);\n  if (isString(plainText)) {\n    children = children.slice(0, 1);\n  }\n  let onlyLineBreaks = true;\n  children = children.map((child) => {\n    if (!isValidElement5(child) || !isLineBreak(child))\n      onlyLineBreaks = false;\n    if (isValidElement5(child)) {\n      return processRichTextChildren(\n        child,\n        stylesPresetsClassNames,\n        plainText,\n        anchorLinkOffsetY,\n        slugCounters,\n        tokenizer,\n        depth + 1\n      );\n    }\n    const text = isString(plainText) ? plainText : child;\n    return isString(text) && tokenizer ? tokenizer.text(text) : text;\n  });\n  const { [\"data-preset-tag\"]: dataPresetTag, ...props } = element.props;\n  if (isString(element.type) || isMotionComponent(element.type)) {\n    const elementType = unwrapMotionComponent(element.type) || element.type;\n    const tag = dataPresetTag || elementType;\n    const stylesPresetClassName = isString(tag) ? stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[tag] : void 0;\n    props.className = cx(\"framer-text\", props.className, stylesPresetClassName);\n    if (tokenizer && depth === 0 && !onlyLineBreaks)\n      Object.assign(props, tokenizer.props(props.style));\n    const isHeading = elementType === \"h1\" || elementType === \"h2\" || elementType === \"h3\" || elementType === \"h4\" || elementType === \"h5\" || elementType === \"h6\";\n    const anchorLinkStylePresetClassName = stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[\"anchor\"];\n    if (isHeading && anchorLinkStylePresetClassName) {\n      const slug = generateHeadingSlug(children, slugCounters);\n      props.id = slug;\n      const className2 = cx(\"framer-text\", anchorLinkStylePresetClassName);\n      const anchorLink = /* @__PURE__ */ jsx74(\"a\", { href: `#${slug}`, className: className2, children });\n      props.style = { ...props.style ?? {}, scrollMarginTop: anchorLinkOffsetY };\n      children = [anchorLink];\n    }\n  }\n  return cloneElement3(element, props, ...children);\n}\nfunction generateHeadingSlug(children, slugCounters) {\n  const headingText = children.map(extractTextFromReactNode).join(\"\");\n  let slug = slugify(headingText);\n  const slugCounter = slugCounters[slug] ?? 0;\n  if (slugCounter > 0) {\n    slug += `-${slugCounter}`;\n  }\n  slugCounters[slug] = slugCounter + 1;\n  return slug;\n}\nfunction extractTextFromReactNode(node) {\n  if (isString(node) || isNumber(node)) {\n    return node.toString();\n  }\n  if (isValidElement5(node)) {\n    return extractTextFromReactNode(node.props.children);\n  }\n  if (Array.isArray(node)) {\n    return node.map(extractTextFromReactNode).join(\"\");\n  }\n  return \"\";\n}\nvar RichText2 = /* @__PURE__ */ forwardRef9(\n  ({ children, html, htmlFromDesign, ...props }, ref) => {\n    const content = html || children || htmlFromDesign;\n    if (isString(content)) {\n      if (!props.stylesPresetsClassName && isObject(props.stylesPresetsClassNames)) {\n        props.stylesPresetsClassName = Object.values(props.stylesPresetsClassNames).join(\" \");\n      }\n      const contentProp = {\n        // We need to use the original prop name.\n        [isString(html) ? \"html\" : \"htmlFromDesign\"]: content\n      };\n      return /* @__PURE__ */ jsx74(DeprecatedRichText, { ...props, ...contentProp, ref });\n    }\n    if (!props.stylesPresetsClassNames && isString(props.stylesPresetsClassName)) {\n      const [h1, h2, h3, p, a] = props.stylesPresetsClassName.split(\" \");\n      if (h1 === void 0 || h2 === void 0 || h3 === void 0 || p === void 0 || a === void 0) {\n        console.warn(`Encountered invalid stylesPresetsClassNames: ${props.stylesPresetsClassNames}`);\n      } else {\n        props.stylesPresetsClassNames = { h1, h2, h3, p, a };\n      }\n    }\n    return /* @__PURE__ */ jsx74(RichTextContainer, { ...props, ref, children: isValidElement5(content) ? content : void 0 });\n  }\n);\n\n// ../../library/src/render/presentation/SVG.tsx\nimport React85, { forwardRef as forwardRef10 } from \"react\";\n\n// ../../library/src/render/utils/elementPropertiesForGradient.ts\nfunction linearGradientLine(angle) {\n  var _a, _b;\n  const rad = angle * Math.PI / 180;\n  const offset = {\n    x: -Math.sin(rad) * 100,\n    y: Math.cos(rad) * 100\n  };\n  const anglePoint = Point(offset.x, offset.y);\n  const angleLine = Line(Point(0.5, 0.5), anglePoint);\n  const points = Rect.points({ x: 0, y: 0, width: 1, height: 1 });\n  const sortedPoints = points.map((point) => ({ point, distance: Point.distance(anglePoint, point) })).sort((a2, b2) => a2.distance - b2.distance);\n  const a = (_a = sortedPoints[0]) == null ? void 0 : _a.point;\n  const b = (_b = sortedPoints[1]) == null ? void 0 : _b.point;\n  assert(a && b, \"linearGradientLine: Must have 2 closest points.\");\n  const [c, d] = points.filter((point) => !Point.isEqual(point, a) && !Point.isEqual(point, b));\n  assert(c && d, \"linearGradientLine: Must have 2 opposing points.\");\n  const start = Line.intersection(angleLine, Line(a, b));\n  const end = Line.intersection(angleLine, Line(c, d));\n  assert(start && end, \"linearGradientLine: Must have a start and end point.\");\n  return Line(start, end);\n}\nfunction elementPropertiesForLinearGradient(gradient, id) {\n  var _a, _b;\n  const line = linearGradientLine(gradient.angle);\n  const stops = gradientColorStops(gradient);\n  const startPosition = ((_a = stops[0]) == null ? void 0 : _a.position) ?? 0;\n  const endPosition = ((_b = stops[stops.length - 1]) == null ? void 0 : _b.position) ?? 1;\n  const startPoint = Line.pointAtPercentDistance(line, startPosition);\n  const endPoint = Line.pointAtPercentDistance(line, endPosition);\n  const interpolator = interpolate([startPosition, endPosition], [0, 1]);\n  return {\n    id: `id${id}g${LinearGradient.hash(gradient)}`,\n    x1: startPoint.x,\n    y1: startPoint.y,\n    x2: endPoint.x,\n    y2: endPoint.y,\n    stops: stops.map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: interpolator(stop.position)\n    }))\n  };\n}\nfunction elementPropertiesForRadialGradient(gradient, id) {\n  return {\n    id: `id${id}g${RadialGradient.hash(gradient)}`,\n    widthFactor: gradient.widthFactor,\n    heightFactor: gradient.heightFactor,\n    centerAnchorX: gradient.centerAnchorX,\n    centerAnchorY: gradient.centerAnchorY,\n    stops: gradientColorStops(gradient).map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: stop.position\n    }))\n  };\n}\n\n// ../../library/src/render/types/RelativeNumber.ts\nfunction isRelativeNumber(value) {\n  if (!isString(value))\n    return false;\n  const lastChar = value.charAt(value.length - 1);\n  if (lastChar !== \"%\")\n    return false;\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float);\n}\nfunction getRelativeNumberValue(value) {\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float) ? float : 50;\n}\n\n// ../../library/src/render/utils/imagePatternPropsForFill.tsx\nfunction getPositionXFraction(positionX) {\n  if (isRelativeNumber(positionX))\n    return getRelativeNumberValue(positionX) / 100;\n  if (positionX === \"left\")\n    return 0;\n  if (positionX === \"right\")\n    return 1;\n  return 0.5;\n}\nfunction getPositionYFraction(positionY) {\n  if (isRelativeNumber(positionY))\n    return getRelativeNumberValue(positionY) / 100;\n  if (positionY === \"top\")\n    return 0;\n  if (positionY === \"bottom\")\n    return 1;\n  return 0.5;\n}\nfunction imagePatternPropsForFill(fill, frame2, id, includeTransform) {\n  fill = Animatable.get(fill, \"#09F\");\n  if (!BackgroundImage.isImageObject(fill))\n    return void 0;\n  if (!fill.pixelWidth || !fill.pixelHeight)\n    return void 0;\n  const imageWidth = fill.pixelWidth;\n  const imageHeight = fill.pixelHeight;\n  let transform2;\n  const { fit } = fill;\n  let width = 1, height = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (fit === \"fill\" || fit === \"fit\" || fit === \"tile\" || !fit) {\n    let scaleX = 1;\n    let scaleY = 1;\n    const imageRatio = imageWidth / imageHeight;\n    const realWidth = frame2.height * imageRatio;\n    const realHeight = frame2.width / imageRatio;\n    const validScaleX = realWidth / frame2.width;\n    const validScaleY = realHeight / frame2.height;\n    if (fit === \"tile\") {\n      fill.backgroundSize ??= 1;\n      width = Math.round(fill.backgroundSize * (imageWidth / 2));\n      height = Math.round(fill.backgroundSize * (imageHeight / 2));\n      const layerPositionX = frame2.x ?? 0;\n      const layerPositionY = frame2.y ?? 0;\n      let extraOffsetX = 0;\n      let extraOffsetY = 0;\n      if (includeTransform) {\n        extraOffsetX = layerPositionX;\n        extraOffsetY = layerPositionY;\n      }\n      offsetX = (frame2.width - width) * getPositionXFraction(fill.positionX) + extraOffsetX;\n      offsetY = (frame2.height - height) * getPositionYFraction(fill.positionY) + extraOffsetY;\n      transform2 = `translate(${offsetX + layerPositionX}, ${offsetY + layerPositionY})`;\n    } else {\n      if (fit === \"fill\" || !fit ? validScaleY > validScaleX : validScaleY < validScaleX) {\n        scaleY = validScaleY;\n        offsetY = (1 - validScaleY) * getPositionYFraction(fill.positionY);\n      } else {\n        scaleX = validScaleX;\n        offsetX = (1 - validScaleX) * getPositionXFraction(fill.positionX);\n      }\n      transform2 = `translate(${offsetX}, ${offsetY}) scale(${scaleX}, ${scaleY})`;\n    }\n  }\n  const imageId = `id${id}g${\"-fillImage\"}`;\n  return { id: imageId, path: fill.src ?? \"\", transform: transform2, width, height, offsetX, offsetY };\n}\n\n// ../../library/src/render/utils/imageUrlForAsset.ts\nvar mediaType2 = \"framer/asset-reference,\";\nfunction isAssetReference(value) {\n  return value.startsWith(`data:${mediaType2}`);\n}\nfunction imageUrlForAsset(asset, pixelSize) {\n  if (/^\\w+:/u.test(asset) && !isAssetReference(asset))\n    return asset;\n  if (typeof pixelSize !== \"number\")\n    pixelSize = void 0;\n  else if (pixelSize <= 512)\n    pixelSize = 512;\n  else if (pixelSize <= 1024)\n    pixelSize = 1024;\n  else if (pixelSize <= 2048)\n    pixelSize = 2048;\n  else\n    pixelSize = 4096;\n  const isExport = RenderTarget.current() === RenderTarget.export;\n  return runtime.assetResolver(asset, { pixelSize, isExport }) ?? \"\";\n}\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nimport { jsx as jsx75 } from \"react/jsx-runtime\";\nvar ImagePatternElement = ({\n  id,\n  path,\n  transform: transform2,\n  repeat,\n  width,\n  height,\n  offsetX,\n  offsetY\n}) => {\n  const href = imageUrlForAsset(path);\n  return /* @__PURE__ */ jsx75(\n    \"pattern\",\n    {\n      id,\n      width: repeat ? width : \"100%\",\n      height: repeat ? height : \"100%\",\n      patternContentUnits: repeat ? void 0 : \"objectBoundingBox\",\n      patternUnits: repeat ? \"userSpaceOnUse\" : void 0,\n      x: repeat ? offsetX : void 0,\n      y: repeat ? offsetY : void 0,\n      children: /* @__PURE__ */ jsx75(\n        \"image\",\n        {\n          width: repeat ? width : 1,\n          height: repeat ? height : 1,\n          href,\n          preserveAspectRatio: \"none\",\n          transform: repeat ? void 0 : transform2,\n          x: repeat ? 0 : void 0,\n          y: repeat ? 0 : void 0\n        },\n        href\n      )\n    }\n  );\n};\n\n// ../../library/src/render/utils/dom.ts\nvar frameFromElement = (element) => {\n  const frame2 = Rect.fromRect(element.getBoundingClientRect());\n  frame2.x = frame2.x + safeWindow.scrollX;\n  frame2.y = frame2.y + safeWindow.scrollY;\n  return frame2;\n};\nvar frameFromElements = (elements) => {\n  return Rect.merge(...elements.map(frameFromElement));\n};\nvar convertToPageFrame = (frame2, element) => {\n  const point = convertToPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar convertFromPageFrame = (frame2, element) => {\n  const point = convertFromPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar getPageFrame = (element) => {\n  const rect = element.getBoundingClientRect();\n  return {\n    x: rect.left + safeWindow.scrollX,\n    y: rect.top + safeWindow.scrollY,\n    width: rect.width,\n    height: rect.height\n  };\n};\nvar fromEventForPage = (event) => {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n};\nvar fromEventForClient = (event) => {\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n};\nvar convertToPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x + frame2.x,\n    y: point.y + frame2.y\n  };\n};\nvar convertFromPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x - frame2.x,\n    y: point.y - frame2.y\n  };\n};\nvar dispatchKeyDownEvent = (keyCode, options = {}) => {\n  const keyboardEvent = new KeyboardEvent(\"keydown\", {\n    bubbles: true,\n    keyCode,\n    ...options\n  });\n  const activeElement = document.activeElement;\n  if (activeElement) {\n    activeElement.dispatchEvent(keyboardEvent);\n  }\n};\nvar DOM = {\n  frameFromElement,\n  frameFromElements,\n  convertToPageFrame,\n  convertFromPageFrame,\n  getPageFrame,\n  fromEventForPage,\n  fromEventForClient,\n  convertToPagePoint,\n  convertFromPagePoint\n};\nvar parser;\nvar supportsNativeParseHTML = /* @__PURE__ */ (() => (\n  // Firefox has rare-random issues with the native parser: https://framer-team.slack.com/archives/C01B14R6E22/p1724159313153969\n  !isFirefox() && typeof Document !== \"undefined\" && typeof Document.parseHTMLUnsafe === \"function\"\n))();\nfunction domParser(html, type) {\n  if (supportsNativeParseHTML && !type)\n    return Document.parseHTMLUnsafe(html);\n  parser ??= new DOMParser();\n  return parser.parseFromString(html, type ?? \"text/html\");\n}\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nvar useDOM = /* @__PURE__ */ isBrowser2();\nvar SharedSVGEntry = class {\n  constructor(id, svg, innerHTML, viewBox, count = 0) {\n    this.id = id;\n    this.svg = svg;\n    this.innerHTML = innerHTML;\n    this.viewBox = viewBox;\n    this.count = count;\n  }\n};\nvar visuallyHiddenStyle = \"position: absolute; overflow: hidden; bottom: 0; left: 0; width: 0; height: 0; z-index: 0; contain: strict\";\nvar SharedSVGManager = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n  }\n  debugGetEntries() {\n    return this.entries;\n  }\n  /** Request to render a svg, this will ensure there is a global instance and will return a\n   * template referencing the image. Must be balanced with `unsubscribe()` calls using the same\n   * svg. If called multiple times while the shared SVG exists, the generateUniqueIds and\n   * contentId parameters are ignored. */\n  subscribe(svg, generateUniqueIds, contentId) {\n    if (!svg || svg === \"\")\n      return \"\";\n    let entry = this.entries.get(svg);\n    if (!entry) {\n      if (!contentId) {\n        contentId = `svg${String(hash(svg))}_${String(svg.length)}`;\n      }\n      let uniqueSVG = svg;\n      let svgSize;\n      const svgDom = parseSVG(svg);\n      if (svgDom) {\n        if (generateUniqueIds) {\n          prefixIdsInSVG(svgDom, contentId);\n        }\n        svgDom.id = contentId;\n        svgSize = getSVGSize(svgDom);\n        svgDom.removeAttribute(\"xmlns\");\n        svgDom.removeAttribute(\"xlink\");\n        svgDom.removeAttribute(\"xmlns:xlink\");\n        uniqueSVG = svgDom.outerHTML;\n      }\n      entry = this.createDOMElementFor(uniqueSVG, contentId, svgSize);\n      this.entries.set(svg, entry);\n    }\n    entry.count += 1;\n    return entry.innerHTML;\n  }\n  /** Returns the viewBox for the svg, or undefined if there is no viewBox. */\n  getViewBox(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    return entry == null ? void 0 : entry.viewBox;\n  }\n  /** When no longer rendering an svg it must be unsubscribed from so resources can be cleaned up.\n   * Pass in the same svg as used with `subscribe()`. */\n  unsubscribe(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    entry.count -= 1;\n    if (entry.count > 0)\n      return;\n    setTimeout(() => this.maybeRemoveEntry(svg), 5e3);\n  }\n  maybeRemoveEntry(svg) {\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    if (entry.count > 0)\n      return;\n    this.entries.delete(svg);\n    this.removeDOMElement(entry);\n  }\n  removeDOMElement(entry) {\n    if (useDOM) {\n      const container = document == null ? void 0 : document.getElementById(entry.id);\n      container == null ? void 0 : container.remove();\n    }\n  }\n  createDOMElementFor(svg, id, size) {\n    if (useDOM) {\n      let svgTemplates = document.getElementById(\"svg-templates\");\n      if (!svgTemplates) {\n        svgTemplates = document.createElement(\"div\");\n        svgTemplates.id = \"svg-templates\";\n        svgTemplates.ariaHidden = \"true\";\n        svgTemplates.style.cssText = visuallyHiddenStyle;\n        document.body.appendChild(svgTemplates);\n      }\n      if (!document.getElementById(id)) {\n        const container = document.createElement(\"div\");\n        container.innerHTML = svg;\n        const svgElement = container.firstElementChild;\n        if (svgElement) {\n          svgElement.id = id;\n          svgTemplates.appendChild(svgElement);\n        }\n      }\n    }\n    const box = size ? `0 0 ${size.width} ${size.height}` : void 0;\n    const viewBox = box ? ` viewBox=\"${box}\"` : \"\";\n    const innerHTML = `<svg style=\"width:100%;height:100%\"${viewBox}><use href=\"#${id}\"/></svg>`;\n    return new SharedSVGEntry(id, svg, innerHTML, box);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  /** Returns a string containing a div#svg-templates and all the current svg templates. Can be\n   * used after running `ReactDOMServer.renderToString()` */\n  generateTemplates() {\n    const output = [];\n    output.push(`<div id=\"svg-templates\" style=\"${visuallyHiddenStyle}\" aria-hidden=\"true\">`);\n    this.entries.forEach((value) => output.push(value.svg));\n    output.push(\"</div>\");\n    return output.join(\"\\n\");\n  }\n};\nvar sharedSVGManager = /* @__PURE__ */ new SharedSVGManager();\nfunction parseSVG(svg) {\n  try {\n    const doc = domParser(svg);\n    const node = doc.getElementsByTagName(\"svg\")[0];\n    if (!node)\n      throw Error(\"no svg element found\");\n    return node;\n  } catch {\n    return;\n  }\n}\nfunction prefixIdsInSVG(svg, prefix2) {\n  const sanitizedPrefix = sanitizeString(prefix2);\n  recursivelyPrefixId(svg, sanitizedPrefix);\n}\nfunction sanitizeString(str) {\n  return str.replace(/[^\\w\\-:.]|^[^a-z]+/gi, \"\");\n}\nfunction recursivelyPrefixId(el, prefix2) {\n  prefixId(el, prefix2);\n  const childNodes = Array.from(el.children);\n  childNodes.forEach((node) => {\n    recursivelyPrefixId(node, prefix2);\n  });\n}\nfunction prefixId(el, prefix2) {\n  const attributes = el.getAttributeNames();\n  attributes.forEach((attr) => {\n    const value = el.getAttribute(attr);\n    if (!value)\n      return;\n    if (attr === \"id\") {\n      el.setAttribute(attr, `${prefix2}_${value}`);\n    }\n    if (attr === \"href\" || attr === \"xlink:href\") {\n      const [base, fragmentIdentifier] = value.split(\"#\");\n      if (base)\n        return;\n      el.setAttribute(attr, `#${prefix2}_${fragmentIdentifier}`);\n      return;\n    }\n    const URL_REF = \"url(#\";\n    if (value.includes(URL_REF)) {\n      const prefixedValue = value.replace(URL_REF, `${URL_REF}${prefix2}_`);\n      el.setAttribute(attr, prefixedValue);\n    }\n  });\n}\nvar unitsToPixels = /* @__PURE__ */ (() => ({\n  cm: 96 / 2.54,\n  mm: 96 / 2.54 / 10,\n  Q: 96 / 2.54 / 40,\n  in: 96,\n  pc: 96 / 6,\n  pt: 96 / 72,\n  px: 1,\n  // A few assumptions about relative units.\n  em: 16,\n  ex: 8,\n  ch: 8,\n  rem: 16\n}))();\nfunction parseLength(value) {\n  var _a;\n  if (!value)\n    return;\n  const m2 = /(-?[\\d.]+)([a-z%]*)/u.exec(value);\n  if ((m2 == null ? void 0 : m2[1]) === void 0 || (m2 == null ? void 0 : m2[2]) === void 0)\n    return;\n  if ((_a = m2[2]) == null ? void 0 : _a.startsWith(\"%\"))\n    return;\n  return Math.round(parseFloat(m2[1]) * (unitsToPixels[m2[2]] || 1));\n}\nfunction getSVGSize(svg) {\n  const width = parseLength(svg.getAttribute(\"width\"));\n  const height = parseLength(svg.getAttribute(\"height\"));\n  if (typeof width !== \"number\" || typeof height !== \"number\")\n    return;\n  if (width <= 0 || height <= 0)\n    return;\n  return { width, height };\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nimport { Fragment as Fragment12, jsx as jsx76, jsxs as jsxs18 } from \"react/jsx-runtime\";\nvar SVG = /* @__PURE__ */ forwardRef10(function SVG2(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const layoutRef = React85.useRef(null);\n  const ref = forwardedRef ?? layoutRef;\n  const providedWindow = useProvidedWindow();\n  useMeasureLayout(props, layoutRef);\n  return /* @__PURE__ */ jsx76(\n    SVGComponent,\n    {\n      ...props,\n      innerRef: ref,\n      parentSize,\n      layoutId,\n      providedWindow\n    }\n  );\n});\nvar MAX_BACKGROUND_SVG_TEXT_LENGTH = 5e4;\nfunction containsImageReference(svg) {\n  return svg.indexOf(\"image\") >= 0;\n}\nfunction containsCustomPropertyReference(svg) {\n  return svg.indexOf(\"var(--\") >= 0;\n}\nfunction hasBorderRadius(style) {\n  return !!(style.borderRadius || style.borderBottomLeftRadius || style.borderBottomRightRadius || style.borderTopLeftRadius || style.borderTopRightRadius);\n}\nfunction sizeSVG(container, props) {\n  var _a, _b;\n  const div = container.current;\n  if (!div)\n    return;\n  const localWindow = props.providedWindow ?? safeWindow;\n  const svg = div.firstElementChild;\n  if (!svg || !(svg instanceof localWindow.SVGSVGElement))\n    return;\n  if (!svg.getAttribute(\"viewBox\")) {\n    const viewBox = sharedSVGManager.getViewBox(props.svg);\n    if (viewBox) {\n      svg.setAttribute(\"viewBox\", viewBox);\n    }\n  }\n  const { withExternalLayout, parentSize } = props;\n  const canUseCalculatedOnCanvasSize = !withExternalLayout && constraintsEnabled(props) && parentSize !== 1 /* Disabled */ && parentSize !== 2 /* DisabledForCurrentLevel */;\n  if (canUseCalculatedOnCanvasSize)\n    return;\n  const { intrinsicWidth, intrinsicHeight, _constraints } = props;\n  if (((_a = svg.viewBox.baseVal) == null ? void 0 : _a.width) === 0 && ((_b = svg.viewBox.baseVal) == null ? void 0 : _b.height) === 0 && isFiniteNumber(intrinsicWidth) && isFiniteNumber(intrinsicHeight)) {\n    svg.setAttribute(\"viewBox\", `0 0 ${intrinsicWidth} ${intrinsicHeight}`);\n  }\n  if (_constraints && _constraints.aspectRatio) {\n    svg.setAttribute(\"preserveAspectRatio\", \"\");\n  } else {\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n  }\n  svg.setAttribute(\"width\", \"100%\");\n  svg.setAttribute(\"height\", \"100%\");\n}\nfunction SVGStyleSheet() {\n  React85.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar SVGComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"container\", React85.createRef());\n      __publicField(this, \"svgElement\", null);\n      __publicField(this, \"setSVGElement\", (element) => {\n        this.svgElement = element;\n        this.setLayerElement(element);\n      });\n      __publicField(this, \"previouslyRenderedSVG\", \"\");\n      __publicField(this, \"unmountedSVG\", \"\");\n    }\n    static frame(props) {\n      return calculateRect(props, props.parentSize || 0 /* Unknown */);\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */);\n    }\n    componentDidMount() {\n      if (this.unmountedSVG) {\n        const { svgContentId } = this.props;\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        sharedSVGManager.subscribe(this.unmountedSVG, !svgContentId, contentid);\n        this.previouslyRenderedSVG = this.unmountedSVG;\n      }\n      if (this.props.svgContentId)\n        return;\n      sizeSVG(this.container, this.props);\n    }\n    componentWillUnmount() {\n      sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n      this.unmountedSVG = this.previouslyRenderedSVG;\n      this.previouslyRenderedSVG = \"\";\n    }\n    componentDidUpdate(prevProps) {\n      super.componentDidUpdate(prevProps);\n      if (this.props.svgContentId)\n        return;\n      const { fill } = this.props;\n      if (BackgroundImage.isImageObject(fill) && BackgroundImage.isImageObject(prevProps.fill) && fill.src !== prevProps.fill.src) {\n        resetSetStyle(this.svgElement, \"fill\", null, false);\n      }\n      sizeSVG(this.container, this.props);\n    }\n    collectLayout(style, innerStyle) {\n      if (this.props.withExternalLayout) {\n        innerStyle.width = \"100%\";\n        innerStyle.height = \"100%\";\n        innerStyle.aspectRatio = \"inherit\";\n        return;\n      }\n      const frame2 = this.frame;\n      const { rotation, intrinsicWidth, intrinsicHeight, width, height } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      style.opacity = isFiniteNumber(this.props.opacity) ? this.props.opacity : 1;\n      if (RenderTarget.hasRestrictions() && frame2) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          width: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n        if (constraintsEnabled(this.props)) {\n          style.position = \"absolute\";\n        }\n        const xFactor = frame2.width / (intrinsicWidth || 1);\n        const yFactor = frame2.height / (intrinsicHeight || 1);\n        innerStyle.transformOrigin = \"top left\";\n        const { zoom, target } = RenderEnvironment;\n        if (target === RenderTarget.export) {\n          const zoomFactor = zoom > 1 ? zoom : 1;\n          innerStyle.transform = `scale(${xFactor * zoomFactor}, ${yFactor * zoomFactor})`;\n          innerStyle.zoom = 1 / zoomFactor;\n        } else {\n          innerStyle.transform = `scale(${xFactor}, ${yFactor})`;\n        }\n        if (intrinsicWidth && intrinsicHeight) {\n          innerStyle.width = intrinsicWidth;\n          innerStyle.height = intrinsicHeight;\n        }\n        return;\n      }\n      const { left, right, top, bottom } = this.props;\n      Object.assign(style, {\n        left,\n        right,\n        top,\n        bottom,\n        width,\n        height,\n        rotate\n      });\n      Object.assign(innerStyle, {\n        left: 0,\n        top: 0,\n        bottom: 0,\n        right: 0,\n        position: \"absolute\"\n      });\n    }\n    render() {\n      countNodeRender();\n      const {\n        id,\n        visible,\n        style,\n        fill,\n        svg,\n        intrinsicHeight,\n        intrinsicWidth,\n        title,\n        description,\n        layoutId,\n        className: className2,\n        variants,\n        withExternalLayout,\n        innerRef,\n        svgContentId,\n        height: _height,\n        opacity: _opacity,\n        width: _width,\n        ...rest\n      } = this.props;\n      if (!withExternalLayout && (!visible || !id))\n        return null;\n      const identifier = id ?? layoutId ?? \"svg\";\n      const frame2 = this.frame;\n      const size = frame2 || { width: intrinsicWidth || 100, height: intrinsicHeight || 100 };\n      const outerStyle = { ...style, imageRendering: \"pixelated\", flexShrink: 0 };\n      const innerStyle = {};\n      this.collectLayout(outerStyle, innerStyle);\n      collectOpacityFromProps(this.props, outerStyle);\n      collectFiltersFromProps(this.props, outerStyle);\n      Layer.applyWillChange(this.props, outerStyle, false);\n      let fillElement = null;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        outerStyle.fill = fillColor;\n        outerStyle.color = fillColor;\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${LinearGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const { stops, x1, x2, y1, y2 } = elementPropertiesForLinearGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx76(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx76(\"linearGradient\", { id: gradientId, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n              return /* @__PURE__ */ jsx76(\n                \"stop\",\n                {\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                },\n                idx\n              );\n            }) })\n          }\n        );\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${RadialGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const elementProperties = elementPropertiesForRadialGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx76(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx76(\n              \"radialGradient\",\n              {\n                id: gradientId,\n                cy: gradient.centerAnchorY,\n                cx: gradient.centerAnchorX,\n                r: gradient.widthFactor,\n                children: elementProperties.stops.map((stop, idx) => {\n                  return /* @__PURE__ */ jsx76(\n                    \"stop\",\n                    {\n                      offset: stop.position,\n                      stopColor: stop.color,\n                      stopOpacity: stop.alpha\n                    },\n                    idx\n                  );\n                })\n              }\n            )\n          }\n        );\n      } else if (BackgroundImage.isImageObject(fill)) {\n        const imagePattern = imagePatternPropsForFill(fill, size, identifier);\n        if (imagePattern) {\n          outerStyle.fill = `url(#${imagePattern.id})`;\n          fillElement = /* @__PURE__ */ jsx76(\n            \"svg\",\n            {\n              ref: this.setSVGElement,\n              width: \"100%\",\n              height: \"100%\",\n              style: { position: \"absolute\" },\n              role: \"presentation\",\n              children: /* @__PURE__ */ jsx76(\"defs\", { children: /* @__PURE__ */ jsx76(ImagePatternElement, { ...imagePattern }) })\n            }\n          );\n        }\n      }\n      const dataProps = {\n        \"data-framer-component-type\": \"SVG\"\n      };\n      const hasTransformTemplate = !frame2;\n      if (hasTransformTemplate) {\n        Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n      }\n      const svgAsBackgroundImage = !fillElement && !outerStyle.fill && !outerStyle.background && !outerStyle.backgroundImage && svg.length < MAX_BACKGROUND_SVG_TEXT_LENGTH && !containsImageReference(svg) && !containsCustomPropertyReference(svg);\n      let content = null;\n      if (svgAsBackgroundImage) {\n        outerStyle.backgroundSize = \"100% 100%\";\n        outerStyle.backgroundImage = `url('data:image/svg+xml;utf8,${encodeURIComponent(svg)}')`;\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = \"\";\n      } else {\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        const __html = sharedSVGManager.subscribe(svg, !svgContentId, contentid);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = svg;\n        if (hasBorderRadius(outerStyle)) {\n          outerStyle.overflow = \"hidden\";\n        }\n        content = /* @__PURE__ */ jsxs18(Fragment12, { children: [\n          fillElement,\n          /* @__PURE__ */ jsx76(\n            \"div\",\n            {\n              className: \"svgContainer\",\n              style: innerStyle,\n              ref: this.container,\n              dangerouslySetInnerHTML: { __html }\n            },\n            BackgroundImage.isImageObject(fill) ? fill.src : \"\"\n          )\n        ] });\n      }\n      const MotionComponent = htmlElementAsMotionComponent(this.props.as);\n      const { href, target, rel, onClick, onTap } = this.props;\n      const hasTitleOrDescription = title || description;\n      return /* @__PURE__ */ jsxs18(\n        MotionComponent,\n        {\n          ...dataProps,\n          ...rest,\n          layoutId,\n          transformTemplate: hasTransformTemplate ? transformTemplate(this.props.center) : void 0,\n          id,\n          ref: innerRef,\n          style: outerStyle,\n          className: className2,\n          variants,\n          tabIndex: this.props.tabIndex,\n          role: hasTitleOrDescription ? \"img\" : void 0,\n          \"aria-label\": title,\n          \"aria-description\": description,\n          \"aria-hidden\": hasTitleOrDescription ? void 0 : \"true\",\n          onTap,\n          onClick,\n          ...{ href, target, rel },\n          children: [\n            content,\n            /* @__PURE__ */ jsx76(SVGStyleSheet, {})\n          ]\n        }\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultSVGProps\", {\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    style: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    parentSize: 0 /* Unknown */,\n    rotation: 0,\n    visible: true,\n    svg: \"\",\n    shadows: []\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultSVGProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/Text.tsx\nimport React87, { useEffect as useEffect25, useRef as useRef25 } from \"react\";\n\n// ../../library/src/render/fonts/useFontLoadStatus.tsx\nimport React86 from \"react\";\nfunction useFontLoadStatus(fontSelectors = [], timeout = 5e3) {\n  const missingFontSelectors = fontSelectors.filter((s) => !fontStore.isSelectorLoaded(s));\n  const [fontLoadStatus, setFontLoadStatus] = React86.useState(\n    missingFontSelectors.length ? \"loading\" : \"done\"\n  );\n  React86.useEffect(() => {\n    if (!missingFontSelectors.length)\n      return;\n    setFontLoadStatus(\"loading\");\n    const timer = setTimeout(() => {\n      setFontLoadStatus(\"timeout\");\n    }, timeout);\n    fontStore.loadFonts(missingFontSelectors).then(() => {\n      clearTimeout(timer);\n      setFontLoadStatus(\"done\");\n    });\n  }, [fontSelectors.join(\", \"), missingFontSelectors.join(\", \")]);\n  return fontLoadStatus;\n}\n\n// ../../library/src/render/presentation/Text.tsx\nimport { Fragment as Fragment13, jsx as jsx77, jsxs as jsxs19 } from \"react/jsx-runtime\";\nfunction TextStyleSheet() {\n  React87.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar Text2 = /* @__PURE__ */ React87.forwardRef(function Text3(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const fallbackLayoutRef = useRef25(null);\n  const layoutRef = forwardedRef ?? fallbackLayoutRef;\n  const { navigate, getRoute } = useRouter();\n  const currentRoute = useCurrentRoute();\n  useRoutePreloader(props.preload ?? []);\n  const onCanvas = useIsOnFramerCanvas();\n  const matchesCurrentRoute = useLinkMatchesRoute(props.__link);\n  const fontLoadStatus = useFontLoadStatus(props.fonts);\n  useMeasureLayout(props, layoutRef);\n  const { fonts, __fromCanvasComponent } = props;\n  const prevFontsRef = useRef25([]);\n  const fontsDidChange = !isShallowEqualArray(prevFontsRef.current ?? [], fonts ?? []);\n  prevFontsRef.current = fonts;\n  useEffect25(() => {\n    if (!fontsDidChange || !fonts)\n      return;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!__fromCanvasComponent || !layoutRef.current || RenderTarget.current() !== RenderTarget.canvas)\n        return;\n      if (newlyLoadedFontCount === 0)\n        return;\n      measureClosestComponentContainer(layoutRef.current);\n    });\n  }, [fonts]);\n  const implicitPathVariables = useImplicitPathVariables();\n  const interceptPageLinks = React87.useCallback(\n    (event) => {\n      const anchorElement = findAnchorElement(event.target, layoutRef.current);\n      if (event.metaKey || !navigate || !anchorElement)\n        return;\n      const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n      if (didNavigate) {\n        event.preventDefault();\n      }\n    },\n    [navigate, implicitPathVariables]\n  );\n  useEffect25(() => {\n    const ref = layoutRef.current;\n    if (!ref)\n      return;\n    ref.addEventListener(\"click\", interceptPageLinks);\n    return () => ref.removeEventListener(\"click\", interceptPageLinks);\n  }, [interceptPageLinks]);\n  const rawHTML = React87.useMemo(() => {\n    if (!props.rawHTML || onCanvas || !getRoute || !currentRoute)\n      return props.rawHTML;\n    return replaceFramerPageLinks(props.rawHTML, getRoute, currentRoute, implicitPathVariables);\n  }, [props.rawHTML, getRoute, currentRoute, implicitPathVariables]);\n  return /* @__PURE__ */ jsx77(\n    TextComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      layoutId,\n      parentSize,\n      fontLoadStatus,\n      rawHTML,\n      matchesCurrentRoute\n    }\n  );\n});\nvar TextComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"editorText\");\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n      /** Used by the ComponentContainerContext */\n      __publicField(this, \"renderMain\", (inCodeComponent) => {\n        countNodeRender();\n        const {\n          font,\n          visible,\n          alignment,\n          willChangeTransform,\n          opacity,\n          id,\n          layoutId,\n          className: className2,\n          transition,\n          variants,\n          name,\n          __fromCanvasComponent,\n          _initialStyle,\n          widthType: _widthType,\n          heightType: _heightType,\n          _usesDOMRect,\n          autoSize,\n          style: styleProp,\n          fontLoadStatus,\n          matchesCurrentRoute,\n          preload: _preload,\n          tabIndex,\n          ...rest\n        } = this.props;\n        if (!visible) {\n          return null;\n        }\n        const isHidden = this.props.isEditable && this.props.environment() === RenderTarget.canvas;\n        const justifyContent = convertVerticalAlignment2(this.props.verticalAlignment);\n        const style = {\n          outline: \"none\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent,\n          opacity: isHidden ? 0 : opacity,\n          flexShrink: 0\n        };\n        if (_initialStyle) {\n          for (const key7 in _initialStyle) {\n            if (key7.startsWith(\"--framer\")) {\n              asRecord(style)[key7] = asRecord(_initialStyle)[key7];\n            }\n          }\n        }\n        const dataProps = {\n          \"data-framer-component-type\": \"Text\",\n          \"data-framer-name\": rest[\"data-framer-name\"] ?? name\n        };\n        if (autoSize) {\n          asRecord(dataProps)[\"data-framer-component-text-autosized\"] = \"true\";\n        }\n        this.collectLayout(style, inCodeComponent);\n        collectFiltersFromProps(this.props, style);\n        collectTextShadowsForProps(this.props, style);\n        if (style.opacity === 1 || style.opacity === void 0) {\n          delete style.opacity;\n        }\n        if (willChangeTransform) {\n          forceLayerBackingWithCSSProperties(style);\n        }\n        let rawHTML = this.props.rawHTML;\n        const text = this.getOverrideText() || this.props.text;\n        if (isString(text)) {\n          if (rawHTML) {\n            rawHTML = replaceDraftHTMLWithText(rawHTML, text);\n          } else {\n            rawHTML = `<p style=\"font: ${font}\">${text}</p>`;\n          }\n        }\n        if (this.props.style) {\n          Object.assign(style, this.props.style);\n        }\n        const centeringTransformTemplate = this.transformTemplate;\n        if (centeringTransformTemplate)\n          Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n        if (rawHTML) {\n          style.lineHeight = \"1px\";\n          style.fontSize = \"0px\";\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"loading\") {\n            style.visibility = \"hidden\";\n          }\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"timeout\") {\n            style.backgroundColor = \"rgba(255, 0, 0, 0.3)\";\n          }\n          Object.assign(style, styleProp);\n          if (alignment)\n            asRecord(style)[\"--framer-text-alignment\"] = alignment;\n          const tabIndexProps = getTabIndexProps(tabIndex);\n          return /* @__PURE__ */ jsx77(\n            motion.div,\n            {\n              layoutId,\n              id,\n              ...tabIndexProps,\n              ...dataProps,\n              ...rest,\n              style,\n              transformTemplate: centeringTransformTemplate,\n              dangerouslySetInnerHTML: { __html: rawHTML },\n              \"data-center\": this.props.center,\n              className: cx(className2, matchesCurrentRoute && \"isCurrent\"),\n              transition,\n              variants,\n              ref: this.setElement\n            }\n          );\n        }\n      });\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */, false);\n    }\n    getOverrideText() {\n      const { _forwardedOverrideId, _forwardedOverrides, id } = this.props;\n      const forwardedOverrideId = _forwardedOverrideId ?? id;\n      if (forwardedOverrideId && _forwardedOverrides) {\n        const text = _forwardedOverrides[forwardedOverrideId];\n        if (isString(text)) {\n          return text;\n        }\n      }\n    }\n    render() {\n      return /* @__PURE__ */ jsxs19(Fragment13, { children: [\n        /* @__PURE__ */ jsx77(ComponentContainerContext.Consumer, { children: this.renderMain }),\n        /* @__PURE__ */ jsx77(TextStyleSheet, {})\n      ] });\n    }\n    collectLayout(style, inCodeComponent) {\n      if (this.props.withExternalLayout)\n        return;\n      const frame2 = this.frame;\n      const {\n        rotation,\n        autoSize,\n        positionSticky,\n        positionStickyTop,\n        positionStickyRight,\n        positionStickyBottom,\n        positionStickyLeft,\n        width: externalWidth,\n        height: externalHeight,\n        _usesDOMRect,\n        positionFixed,\n        positionAbsolute\n      } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      const isDOMLayoutAutoSized = _usesDOMRect && (externalWidth === \"auto\" || externalHeight === \"auto\");\n      if (frame2 && !isDOMLayoutAutoSized && RenderTarget.hasRestrictions()) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          // Using \u201Cauto\u201D fixes wrapping problems where our size calculation does not work out well when zooming the\n          // text (due to rendering differences).\n          // TODO: When the `autoSize` prop is removed, it's safe to leave\n          // this at `${frame.width}px`, because all auto cases will be\n          // handled by DOM layout in the `else` side of the conditional\n          width: autoSize ? \"auto\" : `${frame2.width}px`,\n          minWidth: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n      } else {\n        const { left, right, top, bottom } = this.props;\n        let width;\n        let height;\n        if (autoSize) {\n          width = \"auto\";\n          height = \"auto\";\n        } else {\n          if (!isFiniteNumber(left) || !isFiniteNumber(right)) {\n            width = externalWidth;\n          }\n          if (!isFiniteNumber(top) || !isFiniteNumber(bottom)) {\n            height = externalHeight;\n          }\n        }\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n      }\n      const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n      if (positionSticky) {\n        if (!onCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (onCanvas && (positionFixed || positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    // biome-ignore lint/suspicious/useGetterReturn: legacy text component\n    get transformTemplate() {\n      const { _usesDOMRect, widthType, heightType, __fromCanvasComponent } = this.props;\n      if (this.props.transformTemplate)\n        return this.props.transformTemplate;\n      const frame2 = this.frame;\n      const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 /* Auto */ || heightType === 2 /* Auto */);\n      const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;\n      if (hasTransformTemplate)\n        return transformTemplate(this.props.center);\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultTextProps\", {\n    opacity: void 0,\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    rotation: 0,\n    visible: true,\n    alignment: void 0,\n    verticalAlignment: \"top\",\n    shadows: [],\n    font: \"16px \" + deviceFont()\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultTextProps,\n    isEditable: false,\n    environment: RenderTarget.current,\n    withExternalLayout: false,\n    fontLoadStatus: \"loading\"\n  }), _a;\n})();\nvar linkTag = \"(?:<a[^>]*>)?\";\nvar linkClosingTag = \"(?:</a>)?\";\nvar outerTag = \"<[^>]+>\";\nvar outerClosingTag = \"</[^>]+>\";\nvar blockTag = \"<(?:div|span)[^>]*>\";\nvar blockClosingTag = \"</(?:div|span)>\";\nvar inlineTag = \"<[^>]+>\";\nvar inlineClosingTag = \"</[^>]+>\";\nvar textContentRegex = /* @__PURE__ */ (() => new RegExp(\n  `^(${linkTag}${outerTag}${blockTag}${inlineTag}).*?(${inlineClosingTag}).*?(${blockClosingTag}${outerClosingTag}${linkClosingTag})$`,\n  //                                              ^^^ this is the content we want to replace\n  //                                                                      ^^^ this is the content we want to discard\n  \"su\"\n  // let the \".\" also match newlines\n))();\nfunction replaceDraftHTMLWithText(rawHTML, text) {\n  return rawHTML.replace(\n    textContentRegex,\n    (_, openingTags, inlineClosingTag2, closingTags) => openingTags + text + inlineClosingTag2 + \"<br>\" + closingTags\n  );\n}\nfunction convertVerticalAlignment2(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction getTabIndexProps(tabIndex) {\n  if (tabIndex === void 0)\n    return {};\n  return { tabIndex };\n}\n\n// ../../library/src/utils/internalId.ts\nvar keys2 = /* @__PURE__ */ new Map();\nvar InternalID = class {\n  constructor(id) {\n    this.id = id;\n    __publicField(this, \"_link\", null);\n    __publicField(this, \"_urllink\", null);\n  }\n  add(str) {\n    return InternalID.forKey(this.id + str);\n  }\n  toString() {\n    return this.id;\n  }\n  get link() {\n    const res = this._link;\n    if (res)\n      return res;\n    return this._link = \"#\" + this.id;\n  }\n  get urlLink() {\n    const res = this._urllink;\n    if (res)\n      return res;\n    return this._urllink = \"url(#\" + this.id + \")\";\n  }\n  static forKey(key7) {\n    let res = keys2.get(key7);\n    if (res)\n      return res;\n    res = new InternalID(\"a\" + (1e3 + keys2.size) + \"z\");\n    keys2.set(key7, res);\n    return res;\n  }\n};\n\n// ../../library/src/render/types/PathSegment.ts\nvar PathSegmentOuter = /* @__PURE__ */ (() => {\n  const _PathSegment = class {\n    constructor(value) {\n      // #region withClassDiscriminator\n      // NOTE: this implementation carefully copies the implementation of `withClassDiscriminator`\n      // from Vekter. If making changes here, make sure to sync them to `withClassDiscriminator` as well.\n      __publicField(this, \"__class\", \"PathSegment\");\n      // #endregion\n      __publicField(this, \"x\", 0);\n      // The anchor point of the segment.\n      __publicField(this, \"y\", 0);\n      __publicField(this, \"handleMirroring\", \"straight\");\n      __publicField(this, \"handleOutX\", 0);\n      // Describes the out tangent of the segment.\n      __publicField(this, \"handleOutY\", 0);\n      __publicField(this, \"handleInX\", 0);\n      // Describes the in tangent of the segment.\n      __publicField(this, \"handleInY\", 0);\n      __publicField(this, \"radius\", 0);\n      if (value) {\n        Object.assign(this, value);\n      }\n    }\n    merge(value) {\n      return Object.assign(Object.create(Object.getPrototypeOf(this)), this, value);\n    }\n  };\n  let PathSegment2 = _PathSegment;\n  __publicField(PathSegment2, \"displayName\", \"WithClassDiscriminatorMixin(PathSegment)\");\n  __publicField(PathSegment2, \"point\", (pathSegment) => {\n    return { x: pathSegment.x, y: pathSegment.y };\n  });\n  __publicField(PathSegment2, \"handleOut\", (pathSegment) => {\n    return { x: pathSegment.handleOutX, y: pathSegment.handleOutY };\n  });\n  __publicField(PathSegment2, \"handleIn\", (pathSegment) => {\n    return { x: pathSegment.handleInX, y: pathSegment.handleInY };\n  });\n  __publicField(PathSegment2, \"calculatedHandleOut\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      default:\n        return { x: pathSegment.x, y: pathSegment.y };\n    }\n  });\n  __publicField(PathSegment2, \"calculatedHandleIn\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n        return Point.subtract(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleIn(pathSegment));\n      default:\n        return _PathSegment.point(pathSegment);\n    }\n  });\n  __publicField(PathSegment2, \"curveDefault\", (points, index) => {\n    if (points.length > 2) {\n      let pointBefore;\n      let pointAfter;\n      if (index === 0) {\n        pointBefore = points[points.length - 1];\n      } else {\n        pointBefore = points[index - 1];\n      }\n      if (index === points.length - 1) {\n        pointAfter = points[0];\n      } else {\n        pointAfter = points[index + 1];\n      }\n      assert(pointBefore, \"pointBefore should be defined\");\n      assert(pointAfter, \"pointAfter should be defined\");\n      const delta = Point.subtract(_PathSegment.point(pointAfter), _PathSegment.point(pointBefore));\n      return { x: delta.x / 4, y: delta.y / 4 };\n    }\n    return { x: 10, y: 10 };\n  });\n  ;\n  PathSegment2.prototype.__class = \"PathSegment\";\n  return PathSegment2;\n})();\nvar PathSegment = PathSegmentOuter;\n\n// ../../library/src/render/traits/Path.ts\nvar key5 = \"pathSegments\";\nfunction withPath(target) {\n  return key5 in target;\n}\nvar pathDefaults = {\n  pathSegments: [],\n  pathClosed: false\n};\nfunction toSVGPath(withPaths, translate = { x: 0, y: 0 }, canvasMode = RenderTarget.canvas) {\n  let pathElements = [];\n  let paths = [];\n  if (Array.isArray(withPaths)) {\n    paths = withPaths;\n  } else {\n    paths = [withPaths];\n  }\n  paths.forEach((path) => {\n    const { pathClosed, pathSegments } = path;\n    const segmentCount = pathSegments.length;\n    if (segmentCount === 0)\n      return \"\";\n    for (let i = 0; i < segmentCount; i++) {\n      const segment = pathSegments[i];\n      assert(segment, \"Path segment must be defined\");\n      let nextSegment;\n      let prevSegment;\n      const isFirstSegment = i === 0;\n      const isLastSegment = i === segmentCount - 1;\n      if (!isLastSegment) {\n        nextSegment = pathSegments[i + 1];\n      } else if (pathClosed) {\n        nextSegment = pathSegments[0];\n      }\n      if (!isFirstSegment) {\n        prevSegment = pathSegments[i - 1];\n      } else if (pathClosed) {\n        prevSegment = pathSegments[segmentCount - 1];\n      }\n      if (i === 0) {\n        pathElements.push(\"M\");\n      } else if (prevSegment && isStraightCurve(prevSegment, segment)) {\n        pathElements.push(\"L\");\n      }\n      pathElements.push(segment.x + translate.x, segment.y + translate.y);\n      if (nextSegment && !isStraightCurve(segment, nextSegment)) {\n        const handleOut = PathSegment.calculatedHandleOut(segment);\n        const handleIn = PathSegment.calculatedHandleIn(nextSegment);\n        pathElements.push(\n          \"C\",\n          handleOut.x + translate.x,\n          handleOut.y + translate.y,\n          handleIn.x + translate.x,\n          handleIn.y + translate.y\n        );\n      }\n      if (isLastSegment && nextSegment) {\n        if (isStraightCurve(segment, nextSegment)) {\n          pathElements.push(\"Z\");\n        } else {\n          pathElements.push(nextSegment.x + translate.x, nextSegment.y + translate.y, \"Z\");\n        }\n      }\n    }\n  });\n  if (canvasMode === RenderTarget.export || canvasMode === RenderTarget.preview) {\n    pathElements = pathElements.map((value) => isFiniteNumber(value) ? roundedNumberString(value, 3) : value);\n  }\n  return pathElements.join(\" \");\n}\nfunction isStraightCurve(fromSegment, toSegment) {\n  const fromStraight = fromSegment.handleMirroring === \"straight\" || fromSegment.handleOutX === 0 && fromSegment.handleOutY === 0;\n  const toStraight = toSegment.handleMirroring === \"straight\" || toSegment.handleInX === 0 && toSegment.handleInY === 0;\n  return fromStraight && toStraight;\n}\n\n// ../../library/src/render/types/svgElementAttributeDefaults.ts\nvar svgElementAttributeDefaults = {\n  stroke: \"none\",\n  strokeWidth: 1,\n  strokeLinecap: \"butt\",\n  strokeLinejoin: \"miter\",\n  strokeMiterlimit: 4,\n  strokeDasharray: \"0\",\n  strokeDashoffset: 0,\n  strokeOpacity: 1,\n  fill: \"black\",\n  fillRule: \"nonzero\",\n  fillOpacity: 1\n};\n\n// ../../library/src/render/utils/createTransformValues.ts\nfunction createTransformValues(baseTransform, mode) {\n  let { x, y } = baseTransform;\n  const { width, height, rotation } = baseTransform;\n  if (mode === \"resetXYKeepFraction\") {\n    x = x - Math.floor(x);\n    y = y - Math.floor(y);\n  } else if (mode === \"resetXY\") {\n    x = 0;\n    y = 0;\n  }\n  return { x, y, width, height, rotation };\n}\nfunction getTransformMode(isRootVectorNode, includeTransform) {\n  if (includeTransform !== void 0) {\n    if (includeTransform) {\n      return \"asIs\";\n    }\n  } else {\n    if (!isRootVectorNode) {\n      return \"asIs\";\n    }\n  }\n  if (isRootVectorNode) {\n    return \"resetXYKeepFraction\";\n  } else {\n    return \"resetXY\";\n  }\n}\nfunction transformValues(rect, rotation, isRootVectorNode, includeTransform) {\n  const transformMode = getTransformMode(isRootVectorNode, includeTransform);\n  const baseTransform = { ...rect, rotation };\n  const transform2 = createTransformValues(baseTransform, transformMode);\n  return transform2;\n}\n\n// ../../library/src/render/utils/transformString.ts\nfunction transformString2(transform2) {\n  if (transform2 === void 0) {\n    return void 0;\n  }\n  const { x, y, rotation, width, height } = transform2;\n  let result;\n  if (x !== 0 || y !== 0) {\n    result = `translate(${roundedNumberString(x, 3)} ${roundedNumberString(y, 3)})`;\n  }\n  if (rotation !== 0) {\n    const roundedRotation = roundedNumberString(rotation, 4);\n    const roundedWidth = roundedNumberString(width / 2, 3);\n    const roundedHeight = roundedNumberString(height / 2, 3);\n    const rotationString = `rotate(${roundedRotation} ${roundedWidth} ${roundedHeight})`;\n    result = result ? `${result} ${rotationString}` : rotationString;\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/GradientElement.tsx\nimport { Component as Component16 } from \"react\";\nimport { jsx as jsx78 } from \"react/jsx-runtime\";\nvar LinearGradientElement = class extends Component16 {\n  render() {\n    const { id, stops, x1, x2, y1, y2 } = this.props;\n    return /* @__PURE__ */ jsx78(\"linearGradient\", { id, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n      return /* @__PURE__ */ jsx78(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n    }) });\n  }\n};\nvar RadialGradientElement = class extends Component16 {\n  render() {\n    const { centerAnchorX, centerAnchorY, id, widthFactor, heightFactor, stops } = this.props;\n    return /* @__PURE__ */ jsx78(\n      \"radialGradient\",\n      {\n        id,\n        cy: centerAnchorY,\n        cx: centerAnchorX,\n        r: widthFactor,\n        gradientTransform: getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY),\n        children: stops.map((stop, idx) => {\n          return /* @__PURE__ */ jsx78(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n        })\n      }\n    );\n  }\n};\nfunction getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY) {\n  const scaleWidth = widthFactor ? heightFactor / widthFactor : 1e3;\n  return `translate(${centerAnchorX}, ${centerAnchorY}) scale(1 ${scaleWidth}) translate(-${centerAnchorX}, -${centerAnchorY})`;\n}\n\n// ../../library/src/render/presentation/SVGRoot.tsx\nimport { Component as Component17 } from \"react\";\nimport { jsx as jsx79 } from \"react/jsx-runtime\";\nvar SVGRoot = class extends Component17 {\n  render() {\n    const { children, frame: frame2, innerRef } = this.props;\n    const { width, height } = frame2;\n    const fx = Math.floor(frame2.x);\n    const fy = Math.floor(frame2.y);\n    const svgStyle = {\n      position: \"absolute\",\n      width: Math.ceil(width),\n      height: Math.ceil(height),\n      overflow: \"visible\",\n      display: \"block\",\n      transform: `translate(${fx}px, ${fy}px)`\n    };\n    Layer.applyWillChange(this.props, svgStyle, false);\n    return /* @__PURE__ */ jsx79(\"svg\", { width: \"100%\", height: \"100%\", style: svgStyle, ref: innerRef, children });\n  }\n};\n\n// ../../library/src/render/presentation/Vector.tsx\nimport { jsx as jsx80, jsxs as jsxs20 } from \"react/jsx-runtime\";\nvar Vector = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        opacity,\n        calculatedPath,\n        d,\n        insideStroke,\n        shapeId,\n        strokeEnabled,\n        strokeClipId,\n        strokeWidth,\n        idAttribute,\n        rect,\n        shadows,\n        strokeAlpha,\n        name,\n        includeTransform,\n        isRootVectorNode,\n        rotation,\n        id,\n        lineCap,\n        lineJoin,\n        strokeColor,\n        strokeMiterLimit,\n        strokeDashArray,\n        strokeDashOffset,\n        fill,\n        variants,\n        transition,\n        fillOpacity\n      } = this.props;\n      if (!id || !shapeId || !strokeClipId)\n        return null;\n      const rotate = this.props.rotate ?? rotation ?? 0;\n      const { target } = RenderEnvironment;\n      const transform2 = transformValues(rect, rotate, isRootVectorNode, includeTransform);\n      let vectorFill;\n      let fillAlpha = 0;\n      let imagePattern;\n      let linearGradient;\n      let radialGradient;\n      if (isString(fill) || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        if (fillColor !== \"transparent\") {\n          vectorFill = fillColor;\n          fillAlpha = ConvertColor.getAlpha(vectorFill);\n        }\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        linearGradient = elementPropertiesForLinearGradient(fill, id);\n        vectorFill = `url(#${linearGradient.id})`;\n        fillAlpha = 1;\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        radialGradient = elementPropertiesForRadialGradient(fill, id);\n        vectorFill = `url(#${radialGradient.id})`;\n        fillAlpha = 1;\n      } else if (BackgroundImage.isImageObject(fill)) {\n        imagePattern = imagePatternPropsForFill(fill, transform2, id, includeTransform);\n        if (imagePattern) {\n          vectorFill = `url(#${imagePattern.id})`;\n          fillAlpha = 1;\n        }\n      }\n      if (vectorFill === svgElementAttributeDefaults.fill) {\n        vectorFill = void 0;\n      }\n      if (vectorFill === void 0) {\n        vectorFill = \"transparent\";\n      }\n      const fillEnabled = vectorFill !== void 0 && vectorFill !== \"transparent\" && fillAlpha !== 0;\n      if (!fillEnabled && !strokeEnabled) {\n        fillAlpha = 1;\n      }\n      let mainElement;\n      let strokeClipPath = null;\n      let shapeReference = null;\n      let strokeElement = null;\n      let pathTranslate;\n      let elementTransform;\n      const translatePaths = target === RenderTarget.export;\n      if (transform2.rotation === 0 && translatePaths) {\n        pathTranslate = transform2;\n      } else {\n        pathTranslate = { x: 0, y: 0 };\n        elementTransform = transformString2(transform2);\n      }\n      const pathAttributes = {\n        d: d ?? toSVGPath(calculatedPath, pathTranslate, target),\n        transform: elementTransform\n      };\n      const svgStrokeAttributes = {};\n      if (strokeEnabled && strokeWidth !== 0) {\n        svgStrokeAttributes.strokeWidth = strokeWidth;\n        svgStrokeAttributes.stroke = strokeColor;\n        svgStrokeAttributes.strokeLinecap = lineCap;\n        svgStrokeAttributes.strokeLinejoin = lineJoin;\n        if (lineJoin === \"miter\") {\n          svgStrokeAttributes.strokeMiterlimit = strokeMiterLimit;\n        }\n        svgStrokeAttributes.strokeDasharray = strokeDashArray;\n        if (strokeDashOffset !== 0) {\n          svgStrokeAttributes.strokeDashoffset = strokeDashOffset;\n        }\n      }\n      for (const key7 in svgElementAttributeDefaults) {\n        if (asRecord(svgStrokeAttributes)[key7] === asRecord(svgElementAttributeDefaults)[key7]) {\n          asRecord(svgStrokeAttributes)[key7] = void 0;\n        }\n      }\n      const internalShapeId = InternalID.forKey(shapeId);\n      const internalStrokeClipId = InternalID.forKey(strokeClipId);\n      const shadow = shadowForShape(\n        shadows,\n        rect,\n        internalShapeId,\n        fillAlpha,\n        strokeAlpha,\n        strokeWidth,\n        internalStrokeClipId,\n        svgStrokeAttributes\n      );\n      const currentName = target === RenderTarget.preview ? name || void 0 : void 0;\n      if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {\n        pathAttributes.id = internalShapeId.id;\n        shapeReference = /* @__PURE__ */ jsx80(motion.path, { ...{ ...pathAttributes }, variants, transition });\n        if (shadow.needsStrokeClip || insideStroke) {\n          strokeClipPath = /* @__PURE__ */ jsx80(\"clipPath\", { id: internalStrokeClipId.id, children: /* @__PURE__ */ jsx80(\"use\", { xlinkHref: internalShapeId.link }) });\n        }\n        if (shadow.insetElement !== null && strokeEnabled && strokeWidth && strokeWidth > 0) {\n          mainElement = /* @__PURE__ */ jsx80(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              strokeOpacity: \"0\",\n              name: currentName\n            }\n          );\n          strokeElement = /* @__PURE__ */ jsx80(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              clipPath: internalStrokeClipId.urlLink,\n              fill: \"transparent\",\n              ...svgStrokeAttributes,\n              strokeWidth\n            }\n          );\n        } else {\n          mainElement = /* @__PURE__ */ jsx80(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              clipPath: internalStrokeClipId.urlLink,\n              ...svgStrokeAttributes,\n              strokeWidth,\n              name: currentName\n            }\n          );\n        }\n      } else {\n        pathAttributes.id = idAttribute;\n        mainElement = /* @__PURE__ */ jsx80(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            name: currentName,\n            fillOpacity,\n            variants,\n            transition\n          }\n        );\n      }\n      const imagePatternElement = imagePattern ? /* @__PURE__ */ jsx80(\n        ImagePatternElement,\n        {\n          ...imagePattern,\n          repeat: BackgroundImage.isImageObject(fill) && fill.fit === \"tile\"\n        }\n      ) : void 0;\n      let gradient;\n      if (linearGradient) {\n        gradient = /* @__PURE__ */ jsx80(LinearGradientElement, { ...linearGradient });\n      } else if (radialGradient) {\n        gradient = /* @__PURE__ */ jsx80(RadialGradientElement, { ...radialGradient });\n      }\n      let defs = null;\n      if (shapeReference || strokeClipPath || shadow.definition && shadow.definition.length || gradient || imagePatternElement) {\n        defs = /* @__PURE__ */ jsxs20(\"defs\", { children: [\n          shapeReference,\n          strokeClipPath,\n          shadow.definition,\n          gradient,\n          imagePatternElement\n        ] });\n      }\n      const opacityValue = opacity ?? (variants ? 1 : void 0);\n      if (defs === null && shadow.outsetElement === null && shadow.insetElement === null && strokeElement === null) {\n        mainElement = /* @__PURE__ */ jsx80(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            fillOpacity,\n            opacity: opacityValue,\n            variants,\n            transition,\n            name: currentName\n          }\n        );\n        return this.renderElement(mainElement);\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsxs20(motion.g, { opacity: opacityValue, variants, transition, children: [\n          defs,\n          shadow.maskElement,\n          shadow.outsetElement,\n          mainElement,\n          shadow.insetElement,\n          strokeElement\n        ] })\n      );\n    }\n    renderElement(element) {\n      const { isRootVectorNode, width, height, rect, willChangeTransform, includeTransform } = this.props;\n      const frame2 = this.props.frame ?? rect ?? { x: 0, y: 0, width: 100, height: 100 };\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ jsx80(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorProps\", {\n    isRootVectorNode: false,\n    name: null,\n    includeTransform: void 0,\n    defaultFillColor: void 0,\n    defaultStrokeColor: void 0,\n    defaultStrokeWidth: void 0,\n    defaultStrokeAlignment: \"center\",\n    width: 100,\n    height: 100,\n    rotation: 0,\n    rotate: void 0,\n    frame: void 0,\n    opacity: void 0,\n    calculatedPath: [],\n    d: void 0,\n    shapeId: void 0,\n    insideStroke: false,\n    strokeEnabled: true,\n    strokeClipId: void 0,\n    strokeWidth: void 0,\n    idAttribute: void 0,\n    transition: void 0,\n    shadows: [],\n    strokeAlpha: 1,\n    rect: { x: 0, y: 0, width: 0, height: 0 },\n    lineCap: \"butt\",\n    strokeColor: \"#0AF\",\n    lineJoin: \"miter\",\n    strokeMiterLimit: 4,\n    strokeDashArray: \"0\",\n    strokeDashOffset: 0,\n    fill: \"rgba(0,170,255,0.5)\"\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/VectorGroup.tsx\nimport { jsx as jsx81 } from \"react/jsx-runtime\";\nvar VectorGroup = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        id,\n        name: nameProp,\n        opacity,\n        visible,\n        targetName,\n        defaultName,\n        children,\n        includeTransform,\n        x,\n        y,\n        width,\n        height,\n        rotation,\n        isRootVectorNode\n      } = this.props;\n      if (!visible)\n        return null;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues(rect, rotation, isRootVectorNode, includeTransform);\n      const addNames = target === RenderTarget.preview;\n      let name = void 0;\n      if (addNames) {\n        if (targetName) {\n          name = targetName;\n        } else if (nameProp) {\n          name = nameProp;\n        } else {\n          name = defaultName;\n        }\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsx81(\"g\", { transform: transformString2(transform2), ...{ id, name, opacity }, children })\n      );\n    }\n    renderElement(element) {\n      const { isRootVectorNode, width, height, frame: frame2, willChangeTransform, includeTransform } = this.props;\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ jsx81(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorGroupProps\", {\n    name: void 0,\n    opacity: void 0,\n    visible: true,\n    x: 0,\n    y: 0,\n    rotation: 0,\n    width: 100,\n    height: 100,\n    targetName: void 0,\n    defaultName: \"\",\n    isRootVectorNode: false,\n    includeTransform: void 0,\n    frame: { x: 0, y: 0, width: 100, height: 100 }\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorGroupProps\n  }), _a;\n})();\n\n// ../../library/src/render/traits/Shape.ts\nvar key6 = \"calculatedPaths\";\nfunction withShape(target) {\n  if (!isObject(target))\n    return false;\n  return key6 in target;\n}\n\n// ../../library/src/render/types/Size.ts\nvar Size = /* @__PURE__ */ (() => {\n  function Size2(width, height) {\n    return { width, height };\n  }\n  Size2.equals = (sizeA, sizeB) => {\n    if (sizeA === sizeB)\n      return true;\n    if (!sizeA || !sizeB)\n      return false;\n    return sizeA.width === sizeB.width && sizeA.height === sizeB.height;\n  };\n  Size2.update = (fromSize, toSize, keepAspectRatio = false) => {\n    let { width, height } = fromSize;\n    const sizeRatio = width / height;\n    width = toSize.width !== void 0 ? toSize.width : width;\n    height = toSize.height !== void 0 ? toSize.height : height;\n    if (keepAspectRatio) {\n      if (toSize.width === void 0 && toSize.height !== void 0) {\n        width = toSize.height * sizeRatio;\n      }\n      if (toSize.width !== void 0 && toSize.height === void 0 && sizeRatio !== 0) {\n        height = toSize.width / sizeRatio;\n      }\n    }\n    return { width, height };\n  };\n  Size2.subtract = (sizeA, sizeB) => {\n    return {\n      width: Math.max(0, sizeA.width - sizeB.width),\n      height: Math.max(0, sizeA.height - sizeB.height)\n    };\n  };\n  Size2.zero = Size2(0, 0);\n  Size2.isZero = function(size) {\n    return size === Size2.zero || size.width === 0 && size.height === 0;\n  };\n  Size2.defaultIfZero = function(width, height, size) {\n    if (Size2.isZero(size)) {\n      return Size2(width, height);\n    }\n    return size;\n  };\n  return Size2;\n})();\n\n// ../../library/src/render/utils/annotateTypeOnStringify.ts\nfunction annotateTypeOnStringify(ctor, typeName) {\n  const existingToJSON = ctor.prototype.toJSON;\n  ctor.prototype.toJSON = function() {\n    const base = existingToJSON ? existingToJSON.apply(this) : this;\n    return Object.assign({}, base, { __type__: typeName });\n  };\n  return ctor;\n}\nfunction isOfAnnotatedType(object, typeName) {\n  return object && object.__type__ && object.__type__ === typeName;\n}\n\n// ../../library/src/render/utils/getLoadingLazyAtYPosition.ts\nvar LOADING_LAZY_THRESHOLD = 1e3;\nfunction getLoadingLazyAtYPosition(offset) {\n  return offset > LOADING_LAZY_THRESHOLD ? \"lazy\" : void 0;\n}\n\n// ../../library/src/render/utils/gradientForShape.tsx\nfunction gradientForShape(nodeId, node) {\n  if (LinearGradient.isLinearGradient(node.fill)) {\n    return elementPropertiesForLinearGradient(node.fill, nodeId);\n  }\n  if (RadialGradient.isRadialGradient(node.fill)) {\n    return elementPropertiesForRadialGradient(node.fill, nodeId);\n  }\n  return void 0;\n}\n\n// ../../library/src/render/utils/throttle.ts\nfunction throttle(fn, time) {\n  let previous = 0;\n  let timeout;\n  const later = (...args) => {\n    previous = Date.now();\n    timeout = void 0;\n    fn(...args);\n  };\n  return (...args) => {\n    const now = Date.now();\n    const remaining = time - (now - previous);\n    if (remaining <= 0 || remaining > time) {\n      if (timeout) {\n        safeWindow.clearTimeout(timeout);\n        timeout = void 0;\n      }\n      previous = now;\n      fn(...args);\n    } else if (!timeout) {\n      timeout = safeWindow.setTimeout(later, remaining, ...args);\n    }\n  };\n}\n\n// ../../library/src/utils/addActionControls.ts\nfunction addActionControls(action, title, controls) {\n  runtime.addActionControls(action, title, controls);\n}\n\n// ../../library/src/utils/addFonts.ts\nfunction addFonts(component, passedFonts, flags) {\n  const fonts = convertMixedFontArrayToFontBundles(passedFonts);\n  if (!(flags == null ? void 0 : flags.supportsExplicitInterCodegen) && // Only emit an `explicitInter: false` bundle if we don\u2019t already have one.\n  !fonts.some((font) => font.explicitInter === false)) {\n    fonts.push({ explicitInter: false, fonts: [] });\n  }\n  Object.assign(component, { fonts });\n}\nfunction getFonts(component) {\n  const fonts = component.fonts;\n  return fonts ?? [];\n}\nfunction getFontsFromSharedStyle(fonts) {\n  if (fonts.length === 0)\n    return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction getFontsFromComponentPreset(fonts) {\n  if (fonts.length === 0)\n    return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction convertMixedFontArrayToFontBundles(fonts) {\n  const oldFontBundle = { explicitInter: false, fonts: [] };\n  const fontBundles = [];\n  for (const fontOrBundle of fonts) {\n    if (isComponentFontBundle(fontOrBundle)) {\n      fontBundles.push(fontOrBundle);\n    } else {\n      oldFontBundle.fonts.push(upgradeComponentFontV1(fontOrBundle));\n    }\n  }\n  if (oldFontBundle.fonts.length > 0)\n    fontBundles.push(oldFontBundle);\n  return fontBundles;\n}\nvar componentFontBundleKey = \"explicitInter\";\nfunction isComponentFontBundle(font) {\n  return componentFontBundleKey in font;\n}\nfunction upgradeComponentFontV1(font) {\n  let source;\n  if (font.url.startsWith(\"https://fonts.gstatic.com/s/\")) {\n    source = \"google\" /* Google */;\n  } else if (font.url.startsWith(\"https://framerusercontent.com/third-party-assets/fontshare/\")) {\n    source = \"fontshare\" /* Fontshare */;\n  } else {\n    source = \"custom\" /* Custom */;\n  }\n  return {\n    ...font,\n    source\n  };\n}\n\n// ../../library/src/utils/withPerformanceMarks.ts\nfunction withPerformanceMarks(prefix2, callback) {\n  const markStart = `${prefix2}-start`;\n  performance.mark(markStart);\n  callback();\n  const markEnd = `${prefix2}-end`;\n  performance.mark(markEnd);\n  performance.measure(prefix2, markStart, markEnd);\n}\n\n// ../../library/src/utils/network.ts\nfunction loadJSON(url) {\n  return fetch(url, { mode: \"cors\" }).then((res) => res.json());\n}\n\n// ../../library/src/utils/inspectObjectType.ts\nfunction inspectObjectType(item) {\n  let className2;\n  if ((item.constructor !== null ? item.constructor.name : void 0) !== null && (item.constructor !== null ? item.constructor.name : void 0) !== \"Object\") {\n    return item.constructor.name;\n  }\n  const extract = function(str) {\n    if (!str) {\n      return null;\n    }\n    const regex2 = /\\[object (\\w+)\\]/u;\n    const match = regex2.exec(str);\n    if (match) {\n      return match[1];\n    }\n    return null;\n  };\n  if (item.toString) {\n    className2 = extract(item.toString());\n    if (className2) {\n      return className2;\n    }\n  }\n  if (item.constructor !== null ? item.constructor.toString : void 0) {\n    className2 = extract(item.constructor !== null ? item.constructor.toString() : void 0);\n    if (className2) {\n      return className2.replace(\"Constructor\", \"\");\n    }\n  }\n  return \"Object\";\n}\n\n// ../../library/src/utils/inspect.ts\nfunction inspect(item, max, l) {\n  if (max === void 0) {\n    max = 5;\n  }\n  if (l === void 0) {\n    l = 0;\n  }\n  if (item === null) {\n    return \"null\";\n  }\n  if (item === void 0) {\n    return \"undefined\";\n  }\n  if (isObject(item) && isFunction(item.toInspect)) {\n    return item.toInspect();\n  }\n  if (isString(item)) {\n    return `\"${item}\"`;\n  }\n  if (isNumber(item)) {\n    return `${item}`;\n  }\n  if (isFunction(item)) {\n    let code = item.toString().slice(\"function \".length).replace(/\\n/gu, \"\").replace(/\\s+/gu, \" \");\n    const limit = 50;\n    if (code.length > limit && l > 0) {\n      code = `${code.slice(0, +limit + 1 || void 0).trim()}\\u2026 }`;\n    }\n    return `<Function ${code}>`;\n  }\n  if (isArray(item)) {\n    if (l > max) {\n      return \"[...]\";\n    }\n    return `[${item.map((i) => inspect(i, max, (l || 0) + 1)).join(\", \")}]`;\n  }\n  if (isObject(item)) {\n    let objectInfo;\n    const objectType = inspectObjectType(item);\n    if (/HTML\\w+?Element/u.test(objectType)) {\n      return `<${objectType}>`;\n    }\n    if (l > max) {\n      objectInfo = \"{...}\";\n    } else {\n      const itemKeys = Object.keys(item);\n      objectInfo = `{${itemKeys.map((k) => `${k}:${inspect(item[k], max, (l || 0) + 1)}`).join(\", \")}}`;\n    }\n    if (objectType === \"Object\") {\n      return objectInfo;\n    }\n    return `<${objectType} ${objectInfo}>`;\n  }\n  return `${item}`;\n}\n\n// ../../library/src/utils/print.ts\nfunction print(...args) {\n  const line = args.map((arg) => {\n    return inspect(arg);\n  }).join(\", \");\n  console.log(line);\n}\n\n// ../../library/src/utils/useInitialRouteComponent.ts\nimport { useEffect as useEffect26, useState as useState9 } from \"react\";\nfunction initialRouteComponent(component) {\n  if (!component)\n    return null;\n  if (withPreload(component))\n    return null;\n  return component;\n}\nfunction useInitialRouteComponent(routes, homeNodeId) {\n  var _a;\n  const InitialRouteComponent = (_a = routes[homeNodeId]) == null ? void 0 : _a.page;\n  const [RouteComponent, setRouteComponent] = useState9(\n    initialRouteComponent(InitialRouteComponent)\n  );\n  useEffect26(() => {\n    if (withPreload(InitialRouteComponent)) {\n      void InitialRouteComponent.preload().then(setRouteComponent);\n    }\n  }, []);\n  return RouteComponent;\n}\n\n// ../../library/package.json\nvar package_default = {\n  name: \"framer\",\n  version: \"2.4.1\",\n  private: true,\n  type: \"module\",\n  author: \"Framer\",\n  license: \"MIT\",\n  scripts: {\n    coverage: \"yarn :jest --coverage\",\n    lint: \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache\",\n    \"lint:ci\": \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache --cache-strategy content\",\n    \"lint:fix\": \"yarn lint --fix --cache\",\n    test: \"yarn :jest\",\n    watch: \"yarn :jest --watch\",\n    postinstall: \"node postinstall.cjs\"\n  },\n  dependencies: {\n    \"@juggle/resize-observer\": \"^3.3.1\",\n    eventemitter3: \"^3.1.0\",\n    fontfaceobserver: \"^2.1.0\",\n    \"hoist-non-react-statics\": \"^3.3.2\",\n    hsluv: \"^1.0.1\"\n  },\n  devDependencies: {\n    \"@microsoft/api-extractor\": \"^7.42.3\",\n    \"@testing-library/dom\": \"^8.19.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/dom-navigation\": \"^1.0.3\",\n    \"@types/google.fonts\": \"^1.0.5\",\n    \"@types/node\": \"^20.16.5\",\n    \"@types/react\": \"^18.2.67\",\n    \"@types/react-dom\": \"^18.2.22\",\n    \"@types/yargs\": \"^17.0.19\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.2.0\",\n    \"@typescript-eslint/parser\": \"^8.21.0\",\n    chalk: \"^4.1.2\",\n    eslint: \"^8.57.0\",\n    \"eslint-plugin-framer-studio\": \"workspace:*\",\n    immutable: \"^3.8.2\",\n    \"jest-diff\": \"^29.3.1\",\n    \"jest-environment-jsdom\": \"^29.3.1\",\n    \"jest-environment-jsdom-global\": \"^4.0.0\",\n    \"jest-junit\": \"^15.0.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    semver: \"^7.5.2\",\n    typescript: \"^5.7.3\",\n    yargs: \"^17.6.2\"\n  },\n  peerDependencies: {\n    \"framer-motion\": \"11.11.7\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  tsdoc: {\n    tsdocFlavor: \"AEDoc\"\n  },\n  browserslist: [\n    \"extends @framer/browserslist-config/sites\"\n  ]\n};\n\n// ../../library/src/version.ts\nvar version = /* @__PURE__ */ (() => package_default.version)();\n\n// ../../library/src/animation/Motion/addChildHack.ts\nMotionValue.prototype.addChild = function({ transformer = (v) => v }) {\n  const child = motionValue(transformer(this.get()));\n  this.onChange((v) => child.set(transformer(v)));\n  return child;\n};\n\n// ../../library/src/indexInternal.ts\nif (false) {\n  MainLoop2.start();\n}\nexport {\n  AcceleratedAnimation,\n  AnchorLinkTarget,\n  Animatable,\n  AnimatePresence,\n  AnimateSharedLayout,\n  AnyInterpolation,\n  AutomaticLayoutIds,\n  BackgroundImage,\n  BezierAnimator,\n  BoxShadow,\n  ChildrenCanSuspend,\n  Color,\n  ColorFormat,\n  ColorMixModelType,\n  ComponentContainerContext,\n  ComponentPresetsConsumer,\n  ComponentPresetsProvider,\n  ComponentViewportProvider,\n  ConstraintMask,\n  ConstraintValues,\n  Container,\n  ControlType,\n  ConvertColor,\n  CustomCursorHost,\n  CustomProperties,\n  CycleVariantState,\n  DOM,\n  Data,\n  DataContext,\n  DataObserver,\n  DataObserverContext,\n  DeprecatedComponentContainer,\n  DeprecatedFrameWithEvents,\n  DeprecatedLayoutGroupContext,\n  Device,\n  DeviceCodeComponent,\n  DimensionType,\n  DragControls,\n  Draggable,\n  EmptyState,\n  ErrorPlaceholder,\n  Fetcher,\n  FlatTree,\n  Floating,\n  FontSourceNames,\n  FormBooleanInput,\n  FormContainer,\n  FormPlainTextInput2 as FormPlainTextInput,\n  FormSelect,\n  Frame,\n  FrameWithMotion,\n  FramerAnimation,\n  FramerEvent,\n  FramerEventListener,\n  FramerEventSession,\n  GamepadContext,\n  GeneratedComponentContext,\n  GracefullyDegradingErrorBoundary,\n  Image2 as Image,\n  InternalID,\n  Layer,\n  LayoutGroup,\n  DeprecatedLayoutGroupContext as LayoutGroupContext,\n  LayoutIdContext,\n  LazyMotion,\n  LazyValue,\n  LibraryFeaturesProvider,\n  Line,\n  LinearGradient,\n  Link,\n  MainLoop,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionSetup,\n  MotionValue,\n  NavigateTo,\n  NavigationWrapper as Navigation,\n  NavigationCallbackProvider,\n  NavigationConsumer,\n  NavigationTransitionType,\n  NotFoundError,\n  ObservableObject,\n  Page3 as Page,\n  PageEffectsProvider,\n  PageRoot,\n  ParentSizeState,\n  PathSegment,\n  PathVariablesContext,\n  Point,\n  Polygon,\n  PresenceContext,\n  PropertyOverrides2 as PropertyOverrides,\n  PropertyStore,\n  QueryCache,\n  QueryEngine,\n  RadialGradient,\n  Rect,\n  RenderTarget,\n  namespace_exports as Reorder,\n  ResolveLinks,\n  RichText2 as RichText,\n  SSRVariants,\n  SVG,\n  Scroll,\n  Shadow,\n  Size,\n  SmartComponentScopedContainer,\n  SpringAnimator,\n  Stack,\n  StyleSheetContext,\n  SwitchLayoutGroupContext,\n  Text2 as Text,\n  ValueInterpolation,\n  VariantSelector,\n  Vector,\n  VectorGroup,\n  VisualElement,\n  WindowContext,\n  WithNavigator,\n  WithOverride,\n  _injectRuntime,\n  addActionControls,\n  addFonts,\n  addPointerEvent,\n  addPointerInfo,\n  addPropertyControls,\n  addScaleCorrector,\n  animate2 as animate,\n  animateMini,\n  animateValue,\n  animateVisualElement,\n  animationControls,\n  animations,\n  annotateTypeOnStringify,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  backgroundImageFromProps,\n  buildTransform,\n  calcLength,\n  calculateRect,\n  callEach,\n  cancelFrame,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  collectVisualStyleFromProps,\n  color,\n  combinedCSSRulesForPreview,\n  complex,\n  constraintsEnabled,\n  convertPresentationTree,\n  convertPropsToDeviceOptions,\n  createBox,\n  createData,\n  createFramerPageLink,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cssBackgroundSize,\n  cubicBezier,\n  cx,\n  debounce,\n  defaultDeviceProps,\n  degreesToRadians,\n  delay,\n  devicePresets,\n  disableInstantTransitions,\n  dispatchKeyDownEvent,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  environment,\n  executeInRenderEnvironment,\n  filterProps,\n  findSpring,\n  finiteNumber,\n  fontStore,\n  forceLayerBackingWithCSSProperties,\n  fraction,\n  frame,\n  frameData,\n  frameFromElement,\n  frameFromElements,\n  frameSteps,\n  framerAppearAnimationScriptKey,\n  framerAppearEffects,\n  framerAppearIdKey,\n  framerAppearTransformTemplateToken,\n  framerCSSMarker,\n  getComponentSize,\n  getDevicePreset,\n  getFonts,\n  getFontsFromComponentPreset,\n  getFontsFromSharedStyle,\n  getLoadingLazyAtYPosition,\n  getMeasurableCodeComponentChildren,\n  getPropertyControls,\n  getWhereExpressionFromPathVariables,\n  gradientForShape,\n  imagePatternPropsForFill,\n  imageUrlForAsset,\n  inView,\n  inertia,\n  inferInitialRouteFromPath,\n  injectComponentCSSRules,\n  installFlexboxGapWorkaroundIfNeeded,\n  interpolate,\n  invariant,\n  isAnimatable,\n  isBrowser,\n  isDesignDefinition,\n  isDragActive,\n  isEqual,\n  isFiniteNumber,\n  isFractionDimension,\n  isFramerGamepadKeydownData,\n  isFramerPageLink,\n  isGapEnabled,\n  isMotionComponent,\n  isMotionValue2 as isMotionValue,\n  isOfAnnotatedType,\n  isOverride,\n  isReactDefinition,\n  isRelativeNumber,\n  isShallowEqualArray,\n  isStaticRenderer,\n  isStraightCurve,\n  isValidMotionProp,\n  keyframes,\n  lazy,\n  loadFont,\n  loadJSON,\n  localPackageFallbackIdentifier,\n  localShadowFrame,\n  m,\n  makePaddingString,\n  makeUseVisualState,\n  markHydrationStart,\n  memoize2 as memoize,\n  mirrorEasing,\n  mix,\n  modulate,\n  motion,\n  motionValue,\n  nestedLinksCollector,\n  optimizeAppear,\n  optimizeAppearTransformTemplate,\n  optimizedAppearDataAttribute,\n  paddingFromProps,\n  parseFramerPageLink,\n  pathDefaults,\n  pipe,\n  preloadImage,\n  print,\n  progress,\n  propsForLink,\n  pushLoadMoreHistory,\n  px,\n  removeHiddenBreakpointLayers,\n  removeHiddenBreakpointLayersV2,\n  resolveLink,\n  resolveMotionValue,\n  resolvePageScope,\n  reverseEasing,\n  roundWithOffset,\n  roundedNumber,\n  roundedNumberString,\n  safeCSSValue,\n  scroll,\n  scrollInfo,\n  setGlobalRenderEnvironment,\n  setInitialHydrationState,\n  sharedSVGManager,\n  shouldOpenLinkInNewTab,\n  spring,\n  stagger,\n  startAnimation,\n  startOptimizedAppearAnimation,\n  steps,\n  sync,\n  systemFontFamilyName,\n  throttle,\n  toFlexDirection,\n  toJustifyOrAlignment,\n  toSVGPath,\n  transform,\n  transformString2 as transformString,\n  transformTemplate,\n  turnOffReactEventHandling,\n  unwrapMotionComponent,\n  useActiveTargetCallback,\n  useActiveVariantCallback,\n  useAddVariantProps,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useBreakpointVariants,\n  useComponentViewport,\n  useConstant,\n  useCurrentPathVariables,\n  useCurrentRoute,\n  useCurrentRouteId,\n  useCustomCursors,\n  useCycle,\n  useDataRecord,\n  useAnimatedState as useDeprecatedAnimatedState,\n  useInvertedScale as useDeprecatedInvertedScale,\n  useDomEvent,\n  useDragControls,\n  useDynamicRefs,\n  useElementScroll,\n  useForceUpdate,\n  useGamepad,\n  useHotkey,\n  useHydratedBreakpointVariants,\n  useInView,\n  useInitialRouteComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsInCurrentNavigationTarget,\n  useIsOnFramerCanvas,\n  useIsPresent,\n  useIsStaticRenderer,\n  useIsomorphicLayoutEffect,\n  useLoadMorePaginatedQuery,\n  useLoadMorePagination,\n  useLocale,\n  useLocaleCode,\n  useLocaleInfo,\n  useLocalesForCurrentRoute,\n  useLocalizationInfo,\n  useMeasureLayout,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  useNavigate,\n  useNavigation,\n  useObserveData,\n  useOnAppear,\n  useOnCurrentTargetChange,\n  useOnVariantChange,\n  useOverlayState,\n  usePageEffects,\n  usePrefetch,\n  usePreloadQuery,\n  usePresence,\n  usePrototypeNavigate,\n  useProvidedWindow,\n  useQueryData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useRenderEnvironment,\n  useResetProjection,\n  useRoute,\n  useRouteAnchor,\n  useRouteElementId,\n  useRouteHandler,\n  useRouter,\n  useScroll,\n  useSiteRefs,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVariantState,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  valueToDimensionType,\n  version,\n  visualElementStore,\n  warning,\n  withCSS,\n  withCodeBoundaryForOverrides,\n  withFX,\n  withGeneratedLayoutId,\n  withInfiniteScroll,\n  withMappedReactProps,\n  withMeasuredSize,\n  withOpacity,\n  withOptimizedAppearEffect,\n  withParallaxTransform,\n  withPath,\n  withPerformanceMarks,\n  withShape,\n  withStyleAppearEffect,\n  withVariantAppearEffect,\n  withVariantFX,\n  wrap\n};\n/**\n * @license Emotion v11.0.0\n * MIT License\n *\n * Copyright (c) Emotion team and other contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/*! Bundled license information:\n\nreact-is/cjs/react-is.production.min.js:\n  (** @license React v16.13.1\n   * react-is.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=framer.XJ5BRUQR.mjs.map\n"],
  "mappings": "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",
  "names": ["npm_react_18_2_exports", "__export", "j", "I", "x", "P", "D", "V", "L", "U", "q", "z", "B", "H", "W", "e", "Y", "J", "K", "X", "Z", "ee", "te", "re", "ne", "oe", "ue", "ae", "ce", "ie", "fe", "se", "le", "pe", "ye", "de", "_e", "me", "e", "t", "r", "n", "o", "u", "a", "c", "i", "f", "s", "l", "p", "A", "y", "d", "_", "E", "F", "G", "m", "h", "v", "b", "C", "M", "N", "O", "escape", "w", "Q", "R", "S", "T", "$", "k", "g", "j", "I", "x", "P", "D", "V", "L", "U", "q", "z", "B", "H", "W", "Y", "J", "K", "X", "Z", "ee", "te", "re", "ne", "oe", "ue", "ae", "ce", "ie", "fe", "se", "le", "pe", "ye", "de", "_e", "me", "e", "npm_react_18_2_exports", "t", "o", "a", "f", "n", "s", "_", "q", "r", "l", "p", "u", "require_memoize_browser_cjs", "__commonJS", "exports", "memoize", "fn", "cache", "arg", "require_is_prop_valid_browser_cjs", "_interopDefault", "ex", "reactPropsRegex", "index", "prop", "MotionGlobalConfig", "noop", "any", "createRenderStep", "runNextFrame", "thisFrame", "nextFrame", "isProcessing", "flushNextFrame", "toKeepAlive", "latestFrameData", "triggerCallback", "callback", "step", "keepAlive", "immediate", "queue", "frameData2", "stepsOrder", "maxElapsed", "createRenderBatcher", "scheduleNextBatch", "allowKeepAlive", "useDefaultElapsed", "state2", "flagRunNextFrame", "steps2", "acc", "key", "read", "resolveKeyframes", "update", "preRender", "render", "postRender", "processBatch", "timestamp", "wake", "process2", "i", "frame", "cancelFrame", "frameData", "frameSteps", "calcBezier", "t", "a1", "a2", "subdivisionPrecision", "subdivisionMaxIterations", "binarySubdivide", "x", "lowerBound", "upperBound", "mX1", "mX2", "currentX", "currentT", "cubicBezier", "mY1", "mY2", "getTForX", "aX", "mirrorEasing", "easing", "p", "reverseEasing", "backOut", "backIn", "backInOut", "anticipate", "circIn", "circOut", "circInOut", "warning", "invariant", "clamp", "min", "max", "v", "createUnitType", "unit", "degrees", "percent", "px", "vh", "vw", "progressPercentage", "number", "alpha", "scale", "sanitize", "floatRegex", "isNullish", "singleColorRegex", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "a", "b", "c", "alpha2", "clampRgbUnit", "rgbUnit", "rgba", "red", "green", "blue", "alpha$1", "parseHex", "r", "g", "hex", "hsla", "hue", "saturation", "lightness", "color", "colorRegex", "test", "_a", "_b", "NUMBER_TOKEN", "COLOR_TOKEN", "VAR_TOKEN", "VAR_FUNCTION_TOKEN", "SPLIT_TOKEN", "complexRegex", "analyseComplexValue", "value", "originalValue", "values", "indexes", "types", "split", "parsedValue", "parseComplexValue", "createTransformer", "source", "numSections", "output", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "secondsToMilliseconds", "seconds", "millisecondsToSeconds", "milliseconds", "safeMin", "minDuration", "maxDuration", "minDamping", "maxDamping", "findSpring", "duration", "bounce", "velocity", "mass", "envelope", "derivative", "dampingRatio", "undampedFreq2", "exponentialDecay", "delta", "calcAngularFreq", "e", "f", "initialGuess", "undampedFreq", "approximateRoot", "stiffness", "rootIterations", "result", "velocityPerSecond", "frameDuration", "velocitySampleDuration", "calcGeneratorVelocity", "resolveValue", "current", "prevT", "durationKeys", "physicsKeys", "isSpringType", "options", "keys2", "getSpringOptions", "springOptions", "derived", "spring", "keyframes2", "restDelta", "restSpeed", "origin", "target", "damping", "isResolvedFromDuration", "initialVelocity", "initialDelta", "undampedAngularFreq", "isGranularScale", "resolveSpring", "angularFreq", "dampedAngularFreq", "freqForT", "currentVelocity", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "inertia", "power", "timeConstant", "bounceDamping", "bounceStiffness", "modifyTarget", "isOutOfBounds", "nearestBoundary", "amplitude", "ideal", "calcDelta", "calcLatest", "applyFriction", "latest", "timeReachedBoundary", "spring$1", "checkCatchBoundary", "hasUpdatedFrame", "easeIn", "easeOut", "easeInOut", "combineFunctions", "pipe", "transformers", "progress", "from", "to", "toFromDifference", "mixNumber", "progress2", "hueToRgb", "q", "hslaToRgba", "mixImmediate", "mixLinearColor", "fromExpo", "expo", "colorTypes", "getColorType", "asRGBA", "color2", "model", "mixColor", "fromRGBA", "toRGBA", "blended", "checkStringStartsWith", "token", "isCSSVariableName", "startsAsVariableToken", "isCSSVariableToken", "singleCssVariableRegex", "invisibleValues", "mixVisibility", "mixNumber2", "getMixer", "mixComplex", "mixArray", "mixObject", "numValues", "blendValue", "matchOrder", "orderedOrigin", "pointers", "originIndex", "originValue", "template", "originStats", "targetStats", "mix", "createMixers", "ease2", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "interpolate", "input", "isClamp", "inputLength", "interpolator", "progressInRange", "isEasingArray", "isBezierDefinition", "easingLookup", "easingDefinitionToFunction", "definition", "x1", "y1", "x2", "y2", "fillOffset", "offset", "remaining", "offsetProgress", "defaultOffset", "arr", "convertOffsetToTimes", "o", "defaultEasing", "keyframes", "keyframeValues", "times", "easingFunctions", "absoluteTimes", "mapTimeToKeyframe", "transformPropOrder", "transformProps", "positionalKeys", "isNumOrPxType", "getPosFromMatrix", "matrix", "pos", "getTranslateFromMatrix", "pos2", "pos3", "_bbox", "transform2", "matrix3d", "transformKeys", "nonTranslationalTransformKeys", "removeNonTranslationalTransform", "visualElement", "removedTransforms", "positionalValues", "paddingLeft", "paddingRight", "y", "paddingTop", "paddingBottom", "top", "left", "toResolve", "isScheduled", "anyNeedsMeasurement", "measureAllKeyframes", "resolversToMeasure", "resolver", "elementsToMeasure", "transformsToRestore", "element", "restore", "window", "readAllKeyframes", "flushKeyframeResolvers", "KeyframeResolver", "unresolvedKeyframes", "onComplete", "name", "motionValue2", "isAsync", "currentValue", "finalKeyframe", "valueAsRead", "now", "clearTime", "time", "newTime", "instantAnimationState", "isGenerator", "isAnimatable", "hasKeyframesChanged", "canAnimate", "originKeyframe", "targetKeyframe", "isOriginAnimatable", "isTargetAnimatable", "isNotNull", "getFinalKeyframe", "repeat", "repeatType", "resolvedKeyframes", "MAX_RESOLVE_DELAY", "BaseAnimation", "autoplay", "delay2", "repeatDelay", "onUpdate", "isGenerator2", "resolvedAnimation", "resolve", "reject", "maxGeneratorDuration", "calcGeneratorDuration", "generator", "timeStep", "frameloopDriver", "passTimestamp", "generators", "percentToProgress", "percent2", "MainThreadAnimation", "onStop", "KeyframeResolver$1", "onResolved", "keyframes$1", "generatorFactory", "mapPercentToKeyframes", "mirroredGenerator", "calculatedDuration", "resolvedDuration", "totalDuration", "sample", "resolved", "keyframes3", "timeWithoutDelay", "isInDelayPhase", "elapsed", "frameGenerator", "currentIteration", "iterationProgress", "done", "isAnimationFinished", "newSpeed", "hasChanged", "driver", "onPlay", "startTime", "now2", "time2", "animateValue", "isZeroValueString", "isNone", "isNumericalString", "splitCSSVariableRegex", "parseCSSVariable", "match", "token1", "token2", "fallback", "maxDepth", "getVariableValue", "depth", "trimmed", "testValueType", "auto", "dimensionValueTypes", "findDimensionValueType", "maxDefaults", "applyDefaultFilter", "number2", "defaultValue", "functionRegex", "filter", "functions", "browserNumberValueTypes", "transformValueTypes", "int", "numberValueTypes", "defaultValueTypes", "getDefaultValueType", "getAnimatableNone2", "defaultValueType", "invalidTemplates", "makeNoneKeyframesAnimatable", "noneKeyframeIndexes", "animatableTemplate", "keyframe", "noneIndex", "DOMKeyframesResolver", "originType", "targetType", "measureKeyframe", "finalKeyframeIndex", "unsetTransformName", "unsetTransformValue", "acceleratedValues", "resolution", "generateLinearEasing", "points", "numPoints", "memo", "supportsFlags", "memoSupports", "supportsFlag", "memoized", "supportsLinearEasing", "isWaapiSupportedEasing", "supportedWaapiEasing", "cubicBezierAsString", "d", "mapEasingToNativeEasing", "segmentEasing", "startWaapiAnimation", "valueName", "keyframeOptions", "attachTimeline", "animation", "timeline", "supportsWaapi", "sampleDelta", "maxDuration2", "requiresPregeneratedKeyframes", "pregenerateKeyframes", "sampleAnimation", "pregeneratedKeyframes", "unsupportedEasingFunctions", "isUnsupportedEase", "AcceleratedAnimation", "motionValue3", "pregeneratedAnimation", "sampleTime", "addUniqueItem", "item", "removeItem", "moveItem", "fromIndex", "toIndex", "startIndex", "endIndex", "SubscriptionManager", "handler", "numSubscriptions", "MAX_VELOCITY_DELTA", "isFloat", "collectMotionValues", "MotionValue", "init", "currentTime", "prevFrameValue", "subscription", "eventName", "unsubscribe", "eventManagers", "passiveEffect", "stopPassiveEffect", "prev", "endAnimation", "startAnimation", "motionValue", "camelToDash", "str", "optimizedAppearDataId", "optimizedAppearDataAttribute", "isMotionValue", "getValueState", "resolveVariantFromProps", "props", "custom", "resolveVariant", "underDampedSpring", "criticallyDampedSpring", "keyframesTransition", "ease", "getDefaultTransition", "valueKey", "getValueTransition", "transition", "supportsScrollTimeline", "GroupPlaybackControls", "animations2", "onResolve", "onReject", "propName", "newValue", "subscriptions", "cancel", "speed", "methodName", "controls", "isTransitionDefined", "when", "_delay", "delayChildren", "staggerChildren", "staggerDirection", "animateMotionValue", "isHandoff", "valueTransition", "shouldSkip", "isKeyframesTarget", "isCustomValue", "resolveFinalValueInKeyframes", "setMotionValue", "setTarget", "transitionEnd", "getOptimisedAppearId", "isWillChangeMotionValue", "getWillChangeName", "addValueToWillChange", "willChange", "shouldBlockAnimation", "protectedKeys", "needsAnimating", "shouldBlock", "animateTarget", "targetAndTransition", "transitionOverride", "animationTypeState", "valueTarget", "appearId", "animateVariant", "variant", "getAnimation", "getChildAnimations", "forwardDelay", "animateChildren", "first", "last", "maxStaggerDuration", "generateStaggerDuration", "sortByTreeOrder", "child", "animateVisualElement", "resolvedDefinition", "isAnimationControls", "shallowCompare", "next", "prevLength", "isVariantLabel", "variantPriorityOrder", "variantProps", "numVariantProps", "getVariantContext", "context2", "context", "reversePriorityOrder", "numAnimationTypes", "animateList", "createAnimationState", "animate2", "createState", "isInitialRender", "buildResolvedTypeValues", "setAnimateFunction", "makeAnimator", "animateChanges", "changedActiveType", "removedKeys", "encounteredKeys", "removedVariantIndex", "typeState", "propIsVariant", "activeDelta", "isInherited", "variantDidChange", "checkVariantsDidChange", "shouldAnimateType", "handledRemovedValues", "definitionList", "resolvedValues", "prevResolvedValues", "allKeys", "markToAnimate", "valueHasChanged", "fallbackAnimation", "fallbackTarget", "shouldAnimate", "setActive", "isActive", "_a2", "createTypeState", "Feature", "node", "AnimationFeature", "prevAnimate", "id", "ExitAnimationFeature", "isPresent2", "onExitComplete", "prevIsPresent", "exitAnimation", "register", "animations", "isPrimaryPointer", "event", "extractEventInfo", "pointType", "addPointerInfo", "addDomEvent", "addPointerEvent", "distance", "distance2D", "xDelta", "yDelta", "createLock", "lock", "openLock", "globalHorizontalLock", "globalVerticalLock", "getGlobalLock", "drag2", "openHorizontal", "openVertical", "isDragActive", "openGestureLock", "SCALE_PRECISION", "SCALE_MIN", "SCALE_MAX", "TRANSLATE_PRECISION", "TRANSLATE_MIN", "TRANSLATE_MAX", "calcLength", "axis", "isNear", "maxDistance", "calcAxisDelta", "calcBoxDelta", "calcRelativeAxis", "relative", "parent", "calcRelativeBox", "calcRelativeAxisPosition", "layout2", "calcRelativePosition", "createAxisDelta", "createDelta", "createAxis", "createBox", "PresenceContext", "z", "usePresence", "re", "id4", "ae", "ue", "safeToRemove", "te", "LayoutGroupContext", "z", "SwitchLayoutGroupContext", "scaleCorrectors", "addScaleCorrector", "correctors", "compareByDepth", "a", "b", "FlatTree", "child", "addUniqueItem", "removeItem", "callback", "resolveMotionValue", "value", "unwrappedValue", "isMotionValue", "isCustomValue", "delay", "timeout", "start", "time", "checkElapsed", "timestamp", "elapsed", "cancelFrame", "frame", "MotionConfigContext", "p", "MotionContext", "isBrowser", "window", "useIsomorphicLayoutEffect", "fe", "ue", "LazyContext", "microtask", "cancelMicrotask", "createRenderBatcher", "isRefObject", "ref", "useVisualElement", "Component3", "visualState", "props", "createVisualElement", "ProjectionNodeConstructor", "_a", "_b", "parent", "re", "lazyContext", "presenceContext", "PresenceContext", "reducedMotionConfig", "visualElementRef", "pe", "visualElement", "initialLayoutGroupConfig", "createProjectionNode", "ie", "optimisedAppearId", "optimizedAppearDataAttribute", "wantsHandoff", "_a2", "initialPromotionConfig", "layoutId", "layout2", "drag2", "dragConstraints", "layoutScroll", "layoutRoot", "getClosestProjectingNode", "useMotionRef", "externalRef", "te", "instance", "isControllingVariants", "isAnimationControls", "variantProps", "name", "isVariantLabel", "isVariantNode", "getCurrentTreeVariants", "context", "initial", "animate2", "useCreateMotionContext", "se", "variantLabelsAsDependency", "prop", "featureProps", "featureDefinitions", "key", "loadFeatures", "features", "motionComponentSymbol", "createRendererMotionComponent", "preloadedFeatures", "useRender", "useVisualState2", "MotionComponent", "MeasureLayout2", "configAndProps", "useLayoutId", "isStatic", "useStrictMode", "layoutProjection", "getProjectionFunctionality", "u", "ForwardRefMotionComponent", "Y", "layoutGroupId", "isStrict", "combined", "useConstant", "init", "makeState", "applyWillChange", "scrapeMotionValuesFromProps3", "createRenderState", "onMount", "state2", "makeLatestValues", "makeUseVisualState", "config", "make", "forEachDefinition", "definition", "list", "resolved", "resolveVariantFromProps", "transitionEnd", "transition", "target", "shouldApplyWillChange", "scrapeMotionValues", "values", "motionValues", "isControllingVariants$1", "isVariantNode$1", "isInitialAnimationBlocked", "variantToSet", "valueTarget", "index", "getWillChangeName", "getValueAsType", "type", "translateAlias", "numTransforms", "transformPropOrder", "buildTransform", "latestValues", "transform2", "transformTemplate", "transformString", "transformIsDefault", "i", "valueIsDefault", "valueAsType", "numberValueTypes", "transformName", "validMotionProps", "isValidMotionProp", "shouldForward", "loadExternalIsValidProp", "isValidProp", "require_is_prop_valid_browser_cjs", "filterProps", "isDom", "forwardMotionProps", "filteredProps", "visualElementStore", "prefersReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "motionMediaQuery", "setReducedMotionPreferences", "updateMotionValuesFromProps", "element", "next", "prev", "nextValue", "prevValue", "motionValue", "existingValue", "latestValue", "valueTypes", "dimensionValueTypes", "color", "complex", "findValueType", "v", "testValueType", "propEventHandlers", "VisualElement", "_props", "_prevProps", "_visualElement", "blockInitialAnimation", "options", "KeyframeResolver", "now2", "renderState", "willChange", "initialMotionValues", "remove", "feature", "valueIsTransform", "transformProps", "removeOnChange", "removeOnRenderRequest", "removeSyncCheck", "other", "featureDefinition", "isEnabled", "FeatureConstructor", "createBox", "listenerName", "listener", "closestVariantNode", "unsubscribe", "defaultValue", "isNumericalString", "isZeroValueString", "getAnimatableNone2", "valueFromInitial", "variant", "eventName", "SubscriptionManager", "args", "createDOMMotionComponentProxy", "componentFactory", "componentCache", "deprecatedFactoryFunction", "_target", "PanSession", "event", "handlers", "transformPagePoint", "contextWindow", "dragSnapToOrigin", "info2", "getPanInfo", "isPanStarted", "isDistancePastThreshold", "distance2D", "point3", "timestamp2", "frameData", "onStart", "onMove", "event2", "transformPoint", "onEnd", "onSessionEnd", "resumeAnimation", "panInfo", "isPrimaryPointer", "info", "extractEventInfo", "initialInfo", "point2", "onSessionStart", "pipe", "addPointerEvent", "subtractPoint", "history", "lastDevicePoint", "startDevicePoint", "getVelocity", "timeDelta", "timestampedPoint", "lastPoint", "secondsToMilliseconds", "time2", "millisecondsToSeconds", "currentVelocity", "applyConstraints", "min", "max", "elastic", "mixNumber", "calcRelativeAxisConstraints", "axis", "calcRelativeConstraints", "layoutBox", "top", "left", "bottom", "right", "calcViewportAxisConstraints", "layoutAxis", "constraintsAxis", "calcViewportConstraints", "constraintsBox", "calcOrigin", "source", "origin", "sourceLength", "calcLength", "targetLength", "progress", "clamp", "rebaseAxisConstraints", "constraints", "relativeConstraints", "defaultElastic", "resolveDragElastic", "dragElastic", "resolveAxisElastic", "minLabel", "maxLabel", "resolvePointElastic", "label", "eachAxis", "convertBoundingBoxToBox", "convertBoxToBoundingBox", "x", "y", "transformBoxPoints", "transformPoint2", "topLeft", "bottomRight", "isIdentityScale", "scale2", "hasScale", "scaleX", "scaleY", "hasTransform", "has2DTranslate", "is2DTranslate", "scalePoint", "originPoint", "distanceFromOrigin", "scaled", "applyPointDelta", "translate", "boxScale", "applyAxisDelta", "applyBoxDelta", "box", "TREE_SCALE_SNAP_MIN", "TREE_SCALE_SNAP_MAX", "applyTreeDeltas", "treeScale", "treePath", "isSharedTransition", "treeLength", "node", "delta", "transformBox", "translateAxis", "distance2", "transformAxis", "axisTranslate", "axisScale", "axisOrigin", "measureViewportBox", "measurePageBox", "rootProjectionNode2", "viewportBox", "scroll2", "getContextWindow", "current", "elementDragControls", "VisualElementDragControls", "originEvent", "snapToCursor", "dragSnapToOrigin2", "dragPropagation", "onDragStart", "getGlobalLock", "percent", "projection", "measuredAxis", "addValueToWillChange", "animationState", "dragDirectionLock", "onDirectionLock", "onDrag", "offset", "getCurrentDirection", "isDragging", "velocity", "onDragEnd", "_point", "shouldDrag", "axisValue", "prevConstraints", "onMeasureDragConstraints", "constraintsElement", "invariant", "measuredConstraints", "userConstraints", "dragMomentum", "dragTransition", "onDragTransitionEnd", "momentumAnimations", "bounceStiffness", "bounceDamping", "inertia2", "animateMotionValue", "dragKey", "externalMotionValue", "boxProgress", "latest", "stopPointerListener", "dragListener", "measureDragConstraints", "stopMeasureLayoutListener", "stopResizeListener", "addDomEvent", "stopLayoutUpdateListener", "hasLayoutChanged", "motionValue2", "direction", "currentDirection", "lockThreshold", "DragGesture", "Feature", "noop", "dragControls", "asyncHandler", "handler", "PanGesture", "pointerDownEvent", "onPanSessionStart", "onPanStart", "onPan", "onPanEnd", "globalProjectionState", "pixelsToPercent", "pixels", "correctBorderRadius", "px", "correctBoxShadow", "projectionDelta", "original", "shadow", "template", "xScale", "yScale", "averageScale", "MeasureLayoutWithContext", "I", "layoutGroup", "switchLayoutGroup", "defaultScaleCorrectors", "prevProps", "layoutDependency", "isPresent2", "stack", "promoteContext", "safeToRemove", "MeasureLayout", "usePresence", "borders", "numBorders", "asNumber", "isPx", "mixValues", "follow", "lead", "progress2", "shouldCrossfadeOpacity", "isOnlyMember", "easeCrossfadeIn", "easeCrossfadeOut", "borderLabel", "followRadius", "getRadius", "leadRadius", "radiusName", "compress", "circOut", "easing", "copyAxisInto", "originAxis", "copyBoxInto", "originBox", "copyAxisDeltaInto", "originDelta", "removePointDelta", "removeAxisDelta", "sourceAxis", "removeAxisTransforms", "transforms", "scaleKey", "originKey", "xKeys", "yKeys", "removeBoxTransforms", "sourceBox", "isAxisDeltaZero", "isDeltaZero", "axisEquals", "boxEquals", "axisEqualsRounded", "boxEqualsRounded", "aspectRatio", "axisDeltaEquals", "NodeStack", "prevLead", "indexOfNode", "member", "preserveFollowOpacity", "crossfade", "resumingFrom", "buildProjectionTransform", "latestTransform", "xTranslate", "yTranslate", "zTranslate", "transformPerspective", "rotate", "rotateX", "rotateY", "skewX", "skewY", "elementScaleX", "elementScaleY", "isSVGElement", "animateSingleValue", "keyframes2", "motionValue$1", "metrics", "isDebug", "transformAxes", "hiddenVisibility", "animationTarget", "id2", "resetDistortingTransform", "sharedAnimationValues", "cancelTreeOptimisedTransformAnimations", "projectionNode", "appearId", "getOptimisedAppearId", "createProjectionNode2", "attachResizeListener", "defaultParent", "measureScroll", "checkIsScrollRoot", "resetTransform", "propagateDirtyNodes", "resolveTargetDelta", "calcProjection", "cleanDirtyNodes", "subscriptionManager", "isLayoutDirty", "cancelDelay", "resizeUnblockUpdate", "finishAnimation", "hasRelativeTargetChanged", "newLayout", "layoutTransition", "defaultLayoutTransition", "onLayoutAnimationStart", "onLayoutAnimationComplete", "targetChanged", "hasOnlyRelativeTargetChanged", "animationOptions", "getValueTransition", "resetSkewAndRotation", "shouldNotifyListeners", "clearMeasurements", "clearIsLayoutDirty", "resetTransformStyle", "updateLayout", "notifyLayoutUpdate", "frameSteps", "clearSnapshot", "removeLeadSnapshots", "prevLayout", "phase", "needsMeasurement", "isRoot", "isResetRequested", "hasProjection", "transformTemplateValue", "transformTemplateHasChanged", "removeTransform", "pageBox", "roundBox", "checkNodeWasScrollRoot", "boxWithoutScroll", "transformOnly", "withTransforms", "boxWithoutTransform", "nodeBox", "forceRecalculation", "isShared", "relativeParent", "calcRelativePosition", "calcRelativeBox", "canSkip", "prevTreeScaleX", "prevTreeScaleY", "calcBoxDelta", "notifyAll2", "createDelta", "snapshot", "snapshotLatestValues", "mixedValues", "targetDelta", "relativeLayout", "snapshotSource", "layoutSource", "isSharedLayoutAnimation", "hasOpacityCrossfade", "prevRelativeTarget", "mixAxisDelta", "mixBox", "targetWithTransforms", "shouldAnimatePositionOnly", "xLength", "yLength", "needsReset", "hasDistortingTransform", "resetValues", "styleProp", "styles", "emptyStyles", "valuesToRender", "correct", "applyTo", "corrected", "num", "measuredLayout", "animationType", "axisSnapshot", "length", "layoutDelta", "visualDelta", "parentSnapshot", "parentLayout", "relativeSnapshot", "onExitComplete", "output", "mixAxis", "from", "to", "userAgentContains", "string", "navigator", "roundPoint", "roundAxis", "isNear", "DocumentProjectionNode", "notify2", "rootProjectionNode", "HTMLProjectionNode", "documentNode", "drag", "addHoverEvent", "isActive", "callbackName", "handleEvent", "isDragActive", "HoverGesture", "FocusGesture", "isFocusVisible", "isNodeOrChild", "fireSyntheticPointerEvent", "syntheticPointerEvent", "PressGesture", "startEvent", "startInfo", "removePointerUpListener", "endEvent", "endInfo", "onTap", "onTapCancel", "globalTapTarget", "removePointerCancelListener", "cancelEvent", "cancelInfo", "handleKeydown", "keydownEvent", "handleKeyup", "keyupEvent", "removeKeydownListener", "handleBlur", "removeBlurListener", "onTapStart", "whileTap", "removePointerListener", "removeFocusListener", "observerCallbacks", "observers", "fireObserverCallback", "entry", "fireAllObserverCallbacks", "entries", "initIntersectionObserver", "root", "lookupRoot", "rootObservers", "observeIntersection", "rootInteresectionObserver", "thresholdNames", "InViewFeature", "viewport", "rootMargin", "amount", "once", "onIntersectionUpdate", "isIntersecting", "onViewportEnter", "onViewportLeave", "hasViewportOptionChanged", "prevViewport", "gestureAnimations", "layout", "lowercaseSVGElements", "isSVGComponent", "renderHTML", "style", "vars", "camelCaseAttributes", "renderSVG", "_styleProp", "camelToDash", "isForcedMotionValue", "scrapeMotionValuesFromProps", "newValues", "scrapeMotionValuesFromProps2", "targetKey", "createHtmlRenderState", "createSvgRenderState", "buildHTMLStyles", "transformOrigin", "hasTransform2", "hasTransformOrigin", "isCSSVariableName", "originX", "originY", "originZ", "calcOrigin2", "size", "calcSVGTransformOrigin", "dimensions", "pxOriginX", "pxOriginY", "dashKeys", "camelKeys", "buildSVGPath", "attrs", "spacing", "useDashCase", "keys2", "pathLength", "pathSpacing", "buildSVGAttrs", "attrX", "attrY", "attrScale", "pathOffset", "isSVGTag2", "isSVGTag", "tag", "svgMotionConfig", "htmlMotionConfig", "copyRawValuesOnly", "useInitialMotionValues", "useStyle", "useHTMLProps", "htmlProps", "useSVGProps", "_isStatic", "visualProps", "rawStyles", "createUseRender", "elementProps", "children", "renderedChildren", "B", "createMotionComponentFactory", "DOMVisualElement", "DOMKeyframesResolver", "getComputedStyle2", "HTMLVisualElement", "defaultType", "getDefaultValueType", "computedStyle", "SVGVisualElement", "createDomVisualElement", "createMotionComponent", "animations", "motion", "PopChildMeasure", "I", "prevProps", "element", "size", "PopChild", "children", "isPresent2", "id4", "ae", "ref", "pe", "nonce", "re", "MotionConfigContext", "ie", "width", "height", "top", "left", "style", "p", "q", "PresenceChild", "initial", "onExitComplete", "custom", "presenceAffectsLayout", "mode", "presenceChildren", "useConstant", "newChildrenMap", "memoizedOnExitComplete", "te", "childId", "isComplete", "context", "se", "_", "key", "ue", "PresenceContext", "getChildKey", "child", "onlyElements", "filtered", "j", "J", "AnimatePresence", "exitBeforeEnter", "invariant", "presentChildren", "presentKeys", "isInitialRender", "pendingPresentChildren", "exitComplete", "diffedChildren", "setDiffedChildren", "ye", "renderedChildren", "setRenderedChildren", "useIsomorphicLayoutEffect", "i", "exitingChildren", "nextChildren", "forceRender", "LayoutGroupContext", "l", "onExit", "isEveryExitComplete", "isExitComplete", "MotionConfig", "isValidProp", "config", "loadExternalIsValidProp", "DeprecatedLayoutGroupContext", "z", "useIsMounted", "isMounted", "pe", "useIsomorphicLayoutEffect", "useForceUpdate", "forcedRenderCount", "setForcedRenderCount", "ye", "forceRender", "te", "frame", "notify", "node", "nodeGroup", "nodes", "subscriptions", "dirtyAll", "unsubscribe", "shouldInheritGroup", "inherit", "shouldInheritId", "LayoutGroup", "children", "id4", "layoutGroupContext", "re", "LayoutGroupContext", "deprecatedLayoutGroupContext", "key", "context", "upstreamId", "memoizedContext", "se", "p", "domMin", "createDomVisualElement", "animations", "domAnimation", "gestureAnimations", "domMax", "drag", "layout", "useMotionValue", "initial", "value", "useConstant", "motionValue", "isStatic", "MotionConfigContext", "setLatest", "ue", "useCombineMotionValues", "values", "combineValues", "updateValue", "scheduleUpdate", "v", "cancelFrame", "isCustomValueType", "v", "getMixer2", "transform", "args", "useImmediate", "argOffset", "inputValue", "inputRange", "outputRange", "options", "interpolator", "interpolate", "useComputed", "compute", "collectMotionValues", "value", "useCombineMotionValues", "useTransform", "input", "inputRangeOrTransformer", "transformer", "useListTransform", "latest", "values", "useConstant", "numValues", "toNumber", "useSpring", "source", "config", "isStatic", "re", "MotionConfigContext", "activeSpringAnimation", "pe", "useMotionValue", "isMotionValue", "latestValue", "latestSetter", "startAnimation", "animation", "frameData", "stopAnimation2", "animateValue", "ie", "set", "frame", "useIsomorphicLayoutEffect", "resolveElements", "elements", "scope", "selectorCache", "_a", "root", "invariant", "resizeHandlers", "observer", "getElementSize", "target", "borderBoxSize", "inlineSize", "blockSize", "notifyTarget", "contentRect", "handler", "notifyAll", "entries", "createResizeObserver", "resizeElement", "element", "elementHandlers", "windowCallbacks", "windowResizeHandler", "createWindowResizeHandler", "size", "window", "info", "callback", "resizeWindow", "resize", "a", "b", "maxElapsed2", "createAxisInfo", "createScrollInfo", "keys", "updateAxisInfo", "axisName", "time2", "axis", "length", "position", "prev", "prevTime", "progress", "elapsed", "velocityPerSecond", "updateScrollInfo", "calcInset", "container", "inset", "current", "svgBoundingBox", "parentBoundingBox", "x", "y", "svg", "parent", "ScrollOffset", "namedEdges", "resolveEdge", "edge", "delta", "asNumber2", "defaultOffset2", "resolveOffset", "offset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "point", "getTargetSize", "resolveOffsets", "options", "lengthLabel", "targetSize", "containerSize", "hasChanged", "numOffsets", "i", "interpolate", "defaultOffset", "measure", "node", "createOnScrollHandler", "onScroll", "scrollListeners", "resizeListeners", "onScrollHandlers", "getEventTarget", "scrollInfo", "containerHandlers", "containerHandler", "measureAll", "updateAll", "frameData", "notifyAll2", "listener2", "frame", "listener", "cancelFrame", "currentHandlers", "scrollListener", "observeTimeline", "update", "timeline", "prevProgress", "onFrame", "currentTime", "progress2", "scrollTimelineFallback", "source", "cancel", "timelineCache", "getTimeline", "elementCache", "supportsScrollTimeline", "isOnScrollWithInfo", "needsElementTracking", "scrollFunction", "scrollAnimation", "animation", "valueAnimation", "scroll", "optionsWithDefaults", "refWarning", "name", "ref", "warning", "createScrollMotionValues", "motionValue", "useScroll", "layoutEffect", "values", "useConstant", "useIsomorphicLayoutEffect", "ue", "_progress", "useReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "shouldReduceMotion", "ye", "prefersReducedMotion", "useReducedMotionConfig", "reducedMotionPreference", "reducedMotion", "re", "MotionConfigContext", "stopAnimation", "visualElement", "value", "setVariants", "variantLabels", "key", "variant", "setTarget", "child", "setValues", "definition", "animationControls", "hasMounted", "subscribers", "controls", "transitionOverride", "invariant", "animations2", "animateVisualElement", "wrap", "min", "max", "v", "rangeSize", "createGeneratorEasing", "options", "scale2", "createGenerator", "generator", "duration", "calcGeneratorDuration", "maxGeneratorDuration", "progress2", "millisecondsToSeconds", "isDOMKeyframes", "keyframes2", "resolveSubjects", "subject", "scope", "selectorCache", "resolveElements", "calcNextTime", "current", "next", "prev", "labels", "_a", "getEasingForSegment", "easing", "i", "isEasingArray", "eraseKeyframes", "sequence", "startTime", "endTime", "keyframe", "removeItem", "addKeyframes", "offset", "mixNumber", "compareByTime", "a", "b", "defaultSegmentEasing", "createAnimationsFromSequence", "defaultTransition", "sequenceTransition", "generators2", "defaultDuration", "animationDefinitions", "sequences", "elementCache", "timeLabels", "prevTime", "currentTime", "totalDuration", "segment", "transition", "maxDuration3", "resolveValueSequence", "valueKeyframes", "valueTransition", "valueSequence", "elementIndex", "numSubjects", "valueKeyframesAsList", "keyframesAsList", "delay2", "times", "defaultOffset", "type", "remainingTransition", "ease2", "calculatedDelay", "numKeyframes", "isGenerator", "absoluteDelta", "isNumberKeyframesArray", "delta", "springTransition", "secondsToMilliseconds", "springEasing", "targetTime", "remainder", "fillOffset", "isMotionValue", "subjectSequence", "getSubjectSequence", "getValueSequence", "subjects", "subjectIndex", "thisSubject", "key", "getValueTransition2", "valueSequences", "element", "valueOffset", "valueEasing", "at", "value", "progress", "definition", "name", "isNumber", "isObjectKey", "object", "ObjectVisualElement", "VisualElement", "instance", "renderState", "createBox", "latestValues", "output", "createDOMVisualElement", "node", "isSVGElement", "SVGVisualElement", "HTMLVisualElement", "visualElementStore", "createObjectVisualElement", "isSingleValue", "animateSubject", "animations2", "animateSingleValue", "invariant", "createVisualElement", "visualElement", "animateTarget", "animateSequence", "spring", "isSequence", "createScopedAnimate", "scopedAnimate", "subjectOrSequence", "optionsOrKeyframes", "animation", "GroupPlaybackControls", "animate", "useAnimationControls", "controls", "useConstant", "animationControls", "useIsomorphicLayoutEffect", "useAnimation", "thresholds", "inView", "elementOrSelector", "onStart", "root", "rootMargin", "amount", "elements", "resolveElements", "activeIntersections", "onIntersectionChange", "entries", "entry", "onEnd", "newOnEnd", "observer2", "element", "useInView", "ref", "margin", "once", "isInView", "setInView", "ye", "ue", "onEnter", "options", "isMotionComponent", "component", "motionComponentSymbol", "unwrapMotionComponent", "useInstantLayoutTransition", "startTransition", "callback", "rootProjectionNode", "useInstantTransition", "forceUpdate", "forcedRenderCount", "useForceUpdate", "startInstantLayoutTransition", "unlockOnFrameRef", "pe", "ue", "frame", "instantAnimationState", "useResetProjection", "te", "root", "rootProjectionNode", "createObject", "useVisualState", "makeUseVisualState", "createObject", "namespace_exports", "__export", "ReorderGroup", "ReorderItem", "ReorderContext", "z", "checkReorder", "order", "value", "offset", "velocity", "index", "item2", "nextOffset", "nextItem", "item", "nextLayout", "nextItemCenter", "mixNumber", "moveItem", "ReorderGroupComponent", "children", "as", "axis", "onReorder", "values", "props", "externalRef", "Component3", "useConstant", "motion", "isReordering", "pe", "invariant", "context", "layout2", "idx", "entry", "compareMin", "newOrder", "getValue", "ue", "p", "Y", "a", "b", "useDefaultMotionValue", "defaultValue", "isMotionValue", "useMotionValue", "ReorderItemComponent", "style", "onDrag", "re", "point2", "zIndex", "useTransform", "latestX", "latestY", "registerItem", "updateOrder", "event", "gesturePoint", "measured", "getOriginIndex", "from", "total", "lastIndex", "stagger", "duration", "startDelay", "ease2", "fromIndex", "distance2", "delay2", "maxDelay", "easingDefinitionToFunction", "cancelSync", "stepsOrder", "acc", "key", "process2", "cancelFrame", "npm_react_dom_18_2_exports", "__export", "$a", "Ga", "Ja", "Ha", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "npm_scheduler_0_23_exports", "__export", "e", "F", "E", "N", "j", "q", "B", "U", "W", "Y", "D", "z", "A", "L", "O", "Q", "S", "V", "X", "Z", "e", "f", "n", "t", "a", "l", "g", "h", "k", "r", "i", "u", "o", "s", "c", "b", "d", "_", "v", "navigator", "G", "H", "I", "J", "K", "m", "M", "p", "y", "w", "P", "R", "x", "C", "T", "L", "F", "E", "N", "j", "q", "B", "U", "W", "Y", "D", "z", "A", "O", "Q", "S", "V", "X", "Z", "u", "npm_react_18_2_exports", "e", "o", "npm_scheduler_0_23_exports", "s", "w", "x", "p", "a", "i", "C", "z", "fa", "ha", "N", "window", "_", "j", "P", "T", "oa", "pa", "qa", "v", "M", "F", "sa", "ta", "R", "O", "I", "U", "V", "A", "B", "H", "$", "K", "Y", "Z", "X", "ee", "le", "Ka", "ae", "ie", "Ma", "ce", "Oa", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "ab", "bb", "cb", "db", "fe", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "de", "pe", "ob", "be", "ye", "rb", "sb", "we", "ub", "vb", "Se", "xb", "xe", "ze", "_e", "Bb", "Cb", "Db", "Eb", "Fb", "Gb", "Hb", "Pe", "Jb", "Kb", "Te", "Re", "Nb", "We", "Qe", "He", "$e", "Ye", "Tb", "Ub", "Vb", "Wb", "Xb", "Yb", "Zb", "$b", "qe", "Xe", "en", "nn", "tn", "rn", "ln", "an", "un", "on", "sn", "cn", "fn", "mc", "dn", "nc", "pn", "hn", "gn", "mn", "tc", "uc", "vc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "vn", "Dc", "bn", "yn", "kn", "wn", "Sn", "En", "xn", "Cn", "zn", "Nn", "Ln", "_n", "jn", "Pn", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "$c", "ad", "bd", "b", "Tn", "Dn", "ed", "fd", "gd", "hd", "Mn", "jd", "Fn", "Rn", "On", "nd", "od", "pd", "qd", "rd", "In", "Un", "Vn", "Wn", "Qn", "An", "Bn", "Hn", "zd", "$n", "Kn", "Yn", "Zn", "Gn", "qn", "Xn", "Jn", "et", "nt", "tt", "rt", "lt", "at", "Pd", "it", "ut", "ot", "st", "ct", "ft", "dt", "pt", "ht", "gt", "mt", "vt", "bt", "yt", "kt", "wt", "St", "ge", "he", "Et", "je", "ke", "xt", "me", "ne", "oe", "Ct", "zt", "re", "se", "te", "ue", "ve", "Nt", "_t", "jt", "Lt", "Ae", "Be", "Ce", "De", "Ee", "Fe", "Ge", "Pt", "Ie", "Je", "Ke", "Le", "Me", "Ne", "Oe", "Tt", "Dt", "Mt", "Ft", "Rt", "Ue", "Ve", "Ot", "It", "Ut", "Ze", "Vt", "Wt", "Qt", "At", "Bt", "Ht", "ff", "$t", "Kt", "Yt", "Zt", "Gt", "qt", "nf", "D", "fr", "pf", "qf", "Xt", "sf", "tf", "cr", "vf", "wf", "Jt", "er", "zf", "Af", "Bf", "nr", "tr", "Ef", "rr", "lr", "ar", "ir", "If", "Kf", "Lf", "Mf", "ur", "or", "sr", "dr", "pr", "hr", "gr", "Uf", "E", "G", "mr", "vr", "br", "yr", "Yf", "Zf", "$f", "ag", "bg", "cg", "dg", "kr", "wr", "Sr", "hg", "ig", "jg", "Er", "xr", "Cr", "zr", "Nr", "Lr", "_r", "jr", "Pr", "tg", "ug", "vg", "wg", "Tr", "Dr", "Mr", "Fr", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Rr", "Lg", "Or", "Ir", "Ur", "Vr", "Qg", "Rg", "Sg", "Tg", "Tl", "Vg", "Wr", "Xg", "Yg", "Zg", "Qr", "ah", "bh", "ch", "dh", "Zl", "eh", "fh", "gh", "aa", "ih", "Ar", "kh", "Br", "L", "lh", "mh", "oh", "ph", "qh", "rh", "sh", "th", "uh", "vh", "c", "d", "wh", "f", "g", "h", "xh", "k", "m", "yh", "l", "zh", "Ah", "q", "r", "y", "n", "t", "J", "Hr", "$r", "Kr", "Yr", "Zr", "Gr", "Hh", "Ih", "Jh", "Kh", "Lh", "qr", "Mh", "Xr", "Oh", "Jr", "tl", "ll", "ul", "vl", "yl", "wl", "Sl", "El", "xl", "Q", "Wh", "Xh", "zl", "Nl", "Ll", "Cl", "bi", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "li", "mi", "Gl", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "Bi", "Ci", "Di", "Ei", "Fi", "Gi", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "_l", "Oi", "ba", "ya", "Ri", "ka", "Ti", "Ui", "Vi", "Wi", "Pl", "Yi", "Zi", "$i", "aj", "bj", "cj", "dj", "ej", "na", "ea", "hj", "ij", "jj", "kj", "lj", "mj", "Dl", "oj", "pj", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Ml", "Fl", "Rl", "Ol", "Ej", "S", "Fj", "Gj", "ra", "ma", "Ij", "Jj", "Il", "Ul", "Vl", "Wl", "Mj", "W", "Nj", "Ql", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "Wj", "Xj", "Al", "Bl", "Zj", "ak", "bk", "ck", "dk", "ek", "fk", "ga", "hk", "ik", "jk", "kk", "lk", "Hl", "$l", "Kl", "Yl", "Xl", "Jl", "la", "ia", "ua", "ca", "da", "va", "wa", "Ea", "xa", "Ca", "za", "Na", "La", "Dk", "Ek", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "Mk", "Nk", "Ok", "Pk", "Qk", "Rk", "Sk", "Tk", "Uk", "Vk", "_a", "Xk", "Yk", "Zk", "$k", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "jl", "kl", "ja", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "Da", "Fa", "Ia", "Aa", "checkDCE", "Ba", "Ha", "$a", "Ga", "Ja", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "require_hsluv", "__commonJS", "exports", "Hsluv2", "c", "Y", "L", "chan", "digit2", "digit1", "hex", "offset", "slope", "intercept", "angle", "d", "f1", "f2", "f3", "f4", "f5", "f6", "lr", "lg", "lb", "divider", "varU", "varV", "hrad", "l", "sub1", "sub2", "s1r", "s2r", "s3r", "s1g", "s2g", "s3g", "s1b", "s2b", "s3b", "r0", "r1", "g0", "g1", "b0", "b1", "h", "hueRad", "max", "require_eventemitter3", "module", "has", "prefix2", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events", "name", "handlers", "i", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_browser", "process5", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "Item", "array", "noop4", "dir", "require_resize_observer_umd", "global", "factory", "exports2", "resizeObservers", "hasActiveObservations", "ro", "hasSkippedObservations", "msg", "deliverResizeLoopError", "window", "ResizeObserverBoxOptions", "ResizeObserverBoxOptions2", "freeze", "obj", "ResizeObserverSize", "ResizeObserverSize2", "inlineSize", "blockSize", "DOMRectReadOnly", "DOMRectReadOnly2", "x", "y", "width", "height", "_a", "top", "right", "bottom", "left", "rectangle", "isSVG", "target", "isHidden", "_b", "offsetWidth", "offsetHeight", "isElement", "scope", "isReplacedElement", "cache2", "scrollRegexp", "verticalRegexp", "IE", "parseDimension", "pixel", "size", "switchSizes", "zeroBoxes", "calculateBoxSizes", "forceRecalculation", "cs", "svg", "removePadding", "canScrollVertically", "canScrollHorizontally", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "borderTop", "borderRight", "borderBottom", "borderLeft", "horizontalPadding", "verticalPadding", "horizontalBorderArea", "verticalBorderArea", "horizontalScrollbarThickness", "verticalScrollbarThickness", "widthReduction", "heightReduction", "contentWidth", "contentHeight", "borderBoxWidth", "borderBoxHeight", "boxes", "calculateBoxSize", "observedBox", "borderBoxSize", "contentBoxSize", "devicePixelContentBoxSize", "ResizeObserverEntry", "ResizeObserverEntry2", "calculateDepthForNode", "node", "depth", "parent", "broadcastActiveObservations", "shallowestDepth", "callbacks2", "entries", "ot", "entry", "targetDepth", "_i", "callbacks_1", "callback", "gatherActiveObservationsAtDepth", "trigger", "callbacks", "notify", "cb", "queueMicroTask", "toggle_1", "el_1", "config", "queueResizeObserver", "watching", "isWatching", "CATCH_PERIOD", "observerConfig", "time", "scheduled", "Scheduler", "Scheduler2", "_this", "until", "elementsHaveResized", "scheduler2", "updateCount", "n", "skipNotifyOnElement", "ResizeObservation", "ResizeObservation2", "size2", "ResizeObserverDetail", "ResizeObserverDetail2", "resizeObserver", "observerMap", "getObservationIndex", "observationTargets", "ResizeObserverController", "ResizeObserverController2", "detail", "options", "firstObservation", "index", "lastObservation", "ResizeObserver", "ResizeObserver2", "require_react_is_production_min", "b", "e", "f", "g", "k", "m2", "p", "q", "r", "t", "v", "w", "z", "a", "u", "A", "require_react_is", "require_hoist_non_react_statics_cjs", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys3", "targetStatics", "sourceStatics", "key7", "descriptor", "require_fontfaceobserver_standalone", "B", "C", "D", "E", "F", "G", "J", "K", "H", "b2", "M", "b3", "c2", "N", "I", "preloadKey", "isLazyComponentType", "componentType", "lazy", "LazyComponent", "factoryPromise", "LoadedComponent", "Component18", "props", "ref", "getRouteElementId", "route", "hash2", "yieldToMain", "resolve", "yieldBefore", "interactionResponse", "useAfterPaintEffect", "effectFn", "deps", "opts", "useEffectFn", "fe", "runAfterPaint", "runPromise", "cleanup", "EMPTY_ARRAY", "requestIdleCallback", "objectKeys", "hasProp", "o", "prop", "equalsKey", "withEquals", "valueEqual", "arrayShallowEqual", "arrayDeepEqual", "equal", "mapShallowEqual", "aValue", "mapDeepEqual", "setEqual", "objectShallowEqual", "objectDeepEqual", "deep", "typeA", "aIsArray", "bIsArray", "aIsMap", "bIsMap", "aIsSet", "bIsSet", "dateA", "dateB", "regexpA", "regexpB", "isEqual", "error", "useGetRouteCallback", "routes", "routeId", "RouterContext", "RouterAPIProvider", "api", "children", "useRouter", "RoutesProvider", "getRoute", "CurrentRouteContext", "useCurrentRoute", "router", "override", "re", "id", "useCurrentRouteKey", "currentRoute", "useOnRouteChange", "cb", "currentRoute", "useCurrentRoute", "lastRoute", "setLastRoute", "e", "isEqual", "useRoute", "routeId", "_a", "routerAPI", "useRouter", "useRouteElementId", "id", "targetRouteId", "route", "getRouteElementId", "useCurrentPathVariables", "isFunction", "value", "isBoolean", "isString", "isNumber", "isArray", "isObject", "isUndefined", "isNull", "isNullish", "isValidDate", "isGenerator", "noop", "isBot", "window", "navigator", "shouldPreloadBasedOnUA", "useRoutePreloader", "routeIds", "enabled", "getRoute", "ue", "preloadRoute", "component", "isLazyComponentType", "yieldToMain", "mockWindow", "query", "_url", "_target", "_features", "safeWindow", "window", "timezone", "visitorLocale", "setTimezoneAndLocaleForTracking", "resolvedDateTimeOptions", "requestIdleCallback", "sendTrackingEvent", "eventType", "eventData", "computeRelativePath", "from", "to", "fromDir", "getDirAndFile", "toDir", "toFile", "relativePath", "relative", "path", "index", "CHAR_DOT", "CHAR_FORWARD_SLASH", "StringPrototypeCharCodeAt", "str", "StringPrototypeLastIndexOf", "searchString", "StringPrototypeSlice", "start", "end", "normalizeString", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "length", "lastCommonSep", "i", "fromCode", "out", "allowAboveRoot", "separator", "isPathSeparator", "code", "res", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "customNotFoundPagePaths", "pathVariablesRegExpRaw", "pathVariablesRegExp", "fillPathVariables", "variables", "match", "name", "value", "forwardCurrentQueryParams", "href", "queryParamsString", "forwardQueryParams", "startOfHash", "hrefWithoutHash", "hash2", "startOfSearch", "currentSearchParams", "newSearchString", "newSearchParams", "key7", "replacePathVariables", "currentLocale", "nextLocale", "defaultLocale", "collectionId", "pathVariables", "collectionUtils", "_a", "resultPath", "isMissingInLocale", "resultPathVariables", "matches", "replacements", "_a2", "pathVariableWithDelimiter", "pathVariableValue", "currentSlug", "isString", "utils", "recordId", "nextSlug", "defaultLocaleSlug", "lastIndex", "replacedPath", "hasMatch", "replacement", "getLocalizedNavigationPath", "route", "preserveQueryParams", "result", "getSitePrefix", "siteCanonicalURL", "url", "defaultSitePageEffects", "PageEffectsContext", "e", "PageEffectsProvider", "children", "p", "usePageEffects", "getPageEffectForRoute", "currentRouteId", "nextRouteId", "global", "routes", "step", "maxDuration", "createLinearEasing", "generator", "time", "state", "keyframes2", "cssVariable", "parseUnit", "calcMaskPosition", "mask", "innerWidth", "innerHeight", "x", "xUnit", "y", "yUnit", "conic", "progress2", "page", "percentage", "offsetToken", "isTransparentToBlack", "firstColor", "secondColor", "gradient", "circle", "inset", "bottom", "right", "blinds", "unit", "width", "widthToken", "wipe", "_mask", "offset", "maskGenerators", "restState", "valuesToCSSKeyframes", "values", "maskGenerator", "getMaskGenerator", "type", "createPageTransitionRules", "transition", "settings", "isSpringTransition", "easing", "duration", "spring", "getSpringOptions", "startKeyframes", "endKeyframes", "VIEW_TRANSITION_STYLES_ID", "defaultPageTransition", "createViewTransitionStylesheet", "exit", "enter", "styleElement", "styleContent", "removeViewTransitionStylesheet", "frame", "element", "noop2", "supportsViewTransitions", "addVTStylesheetAfterInRender", "effect", "resolve", "startViewTransition", "updateView", "signal", "useViewTransition", "sitePageEffects", "resolveHasPainted", "pe", "ue", "te", "update", "yieldBeforeFreezePeriod", "pageEffect", "hasPainted", "asyncUpdate", "yieldBeforeViewTransition", "interactionResponse", "noop", "useMonitorNextPaintAfterRender", "label", "startLabel", "endLabel", "useAfterPaintEffect", "pushRouteState", "routeId", "currentRoutePath", "currentPathVariables", "localeId", "enableAsyncURLUpdate", "isNavigationTransition", "newPath", "getPathForRoute", "pushHistoryState", "updateCanonicalURL", "prevUrl", "canonical", "newURL", "isHistoryState", "data2", "routeIdKey", "isObject", "replaceHistoryState", "ignoreReplaceStateWrapper", "maybeHasPopstateBug", "isImpactedPopstateBugChromiumVersion", "navigator", "userAgent", "chromePos", "chromiumVersion", "awaitPaintBeforeUpdate", "popstateCalled", "popstateListener", "msg", "useReplaceInitialState", "disabled", "initialPathVariables", "initialLocaleId", "fe", "usePopStateHandler", "setCurrentRouteId", "startViewTransition2", "monitorNextPaintAfterRender", "viewTransitionReady", "popStateHandler", "_b", "_c", "_d", "_e", "_f", "changeRoute", "traversalHandler", "event", "reject", "getHashForRoute", "hashVariables", "resolvedHash", "getRouteElementId", "m2", "p1", "relative2", "onlyHash", "currentPath", "isSamePageHashNavigation", "sitePrefix", "handleRedirectForMissingSlugs", "nextLocaleWithDefaultSlugPath", "switchLocale", "options", "useNativeLoadingSpinner", "navigationPromise", "pe", "navigationController", "navigateListener", "te", "navigateEvent", "controller", "promise", "updateURL", "window", "noop", "noopAsync", "defaultLocaleInfo", "LocaleInfoContext", "e", "useLocaleInfo", "eventsToStop", "stopFn", "event", "_a", "_b", "shouldTurnOnEventHandling", "turnOffReactEventHandling", "options", "TurnOnReactEventHandling", "ue", "hydrationRunning", "setInitialHydrationState", "setHydrationDone", "useIsHydrationOrSSR", "isHydrationOrSSR", "pe", "window", "measureSafe", "name", "start", "end", "e", "shouldMark", "markHydrationStart", "routerHydrationInsertionEffectStartHasRun", "routerHydrationLayoutEffectStartHasRun", "routerHydrationEffectStartHasRun", "useMarkRouterEffects", "hydrationMarkPrefix", "ie", "fe", "hydrationInsertionEffectStartHasRun", "hydrationLayoutEffectStartHasRun", "hydrationEffectStartHasRun", "wasInBackground", "useMarkSuspenseEffectsStart", "hydrationLayoutEffectsEnd", "hydrationEffectsEnd", "hydrationBrowserRenderStart", "hydrationRenderEnd", "hydrationEffectsStart", "hydrationInsertionEffectHasRun", "hydrationLayoutEffectHasRun", "hydrationEffectHasRun", "useMarkSuspenseEffectEnd", "hydrationStart", "hydrationInsertionEffectsEnd", "hydrationFP", "hydrationAnimationFrameEnd", "yieldBefore", "MarkSuspenseEffectsStart", "MarkSuspenseEffectsEnd", "MarkSuspenseEffects", "renderPage", "Page4", "defaultPageStyle", "props", "NotFoundError", "NotFoundErrorBoundaryCaughtError", "__publicField", "NotFoundErrorBoundary", "I", "error", "nextProps", "prevState", "newState", "notFoundPage", "memoPathRoutes", "memoPaths", "lastRoutes", "getRouteInfoMemo", "routes", "routeId", "path", "pathDepth", "depth1", "depth2", "inferInitialRouteFromPath", "decodedLocationPath", "fallback", "locales", "pathRoutes", "paths", "activeLocale", "localeId", "locationPath", "firstPathSegment", "slug", "defaultLocale", "exactMatch", "match", "matchPath", "rootPath", "firstRoute", "pathWithTrimmedSlashes", "routePath", "pathVariablesKeys", "routePathRegExpString", "escapeStringRegExp", "pathVariablesRegExp", "_", "routePathRegExp", "matches", "pathVariables", "pathVariablesValues", "i", "key7", "value", "existingValue", "string", "warningMessages", "warnOnce", "keyMessage", "rest", "deprecationWarning", "removedItem", "removalVersion", "replacement", "replacementText", "warningText", "Observers", "observer", "isCalled", "change", "transaction", "accumulatedChange", "finishObservers", "Animatable", "Animatable2", "isAnimatable", "AnimatableValue", "update", "transactionId", "updatedValues", "animatable", "finish", "defaultValue", "object", "result", "onUpdateKey", "finishTransactionKey", "animatableInterpolation", "currentInterpolation", "from", "to", "fromValue", "toValue", "progress2", "v", "oldValue", "handler", "roundedNumber", "decimals", "multiplier", "roundWithOffset", "value", "offset", "Point", "x", "y", "Point2", "points", "args", "previousValue", "currentValue", "a", "b", "point", "deltaX", "deltaY", "lastValue", "diff", "maxDiff", "nTimes", "center", "centroid", "sumX", "sumY", "centroidX", "centroidY", "sortClockwise", "centerPoint", "angles", "i", "cssNames", "modulate", "value", "rangeA", "rangeB", "limit", "fromLow", "fromHigh", "toLow", "toHigh", "fromDelta", "toDelta", "result", "isNumeric", "percentToFraction", "val", "digits", "numberFromString", "input", "match", "Hsluv", "require_hsluv", "hsluvConverter", "rgbToHsluv", "r", "g", "b", "rgbaFromHusl", "h", "s", "l", "a", "hsvToStr", "v", "_h", "_s", "_v", "rgbToRgb", "isNumeric", "bound01", "rgbToHex", "allow3Char", "hex", "pad2", "rgbToHsl", "_r", "_g", "_b", "max", "min", "d", "hue2rgb", "p", "q", "t", "hslToRgb", "rgbToHsv", "hsvToRgb", "i", "f", "mod", "n", "_max", "_n", "isOnePointZero", "processPercent", "isPercentage", "char", "matchers", "cssInteger", "cssUnit", "permissiveMatch3", "permissiveMatch4", "stringToObject", "inputColor", "trimLeft", "color2", "namedColor", "cssNames", "match", "percentToFraction", "parseIntFromHex", "convertHexToDecimal", "cache", "Color", "Color2", "c", "createColor", "created", "colorData", "getCompleteColorStrategy", "newColor", "ColorMixModel", "colorModel", "initialValue", "colorString", "hsl", "hsv", "key7", "amount", "rgb", "angle", "alphaValue", "colorA", "colorB", "model", "progress2", "from", "toColor", "fromColor", "mixer", "fraction2", "limit", "result", "modulate", "hslA", "hslB", "fromH", "toH", "deltaH", "tween", "gen", "name", "value", "deltaR", "deltaG", "deltaB", "deltaR2", "deltaG2", "deltaB2", "tolerance", "channelToDecimal", "interpolate", "convertChannelToLinearRgb", "channel", "abs", "l1", "l2", "colorOrR", "completeColor", "getCompleteColorFromRGB", "getCompleteColorFromString", "getCompleteColorFromHSL", "getCompleteColorFromHSV", "correctAlpha", "numberFromString", "isMotionValue2", "v", "MotionValue", "EventEmitter3", "require_eventemitter3", "EventEmitter", "__publicField", "listeners", "eventName", "fn", "once", "unique", "context", "name", "handler", "count", "args", "_raf", "f", "__raf", "safeWindow", "raf", "LoopTimeStep", "Loop", "start", "task", "_a", "postEventTasks", "length", "i", "value", "MainLoop", "RenderEnvironment", "RenderTarget", "RenderEnvironment", "target", "correctBorderScale", "axis", "latest", "delta", "treeScale", "corrected", "addScaleCorrector", "assert", "condition", "msg", "_a", "_b", "e", "lines", "assertNever", "x", "error", "LayoutIdContext", "args", "LayoutIdProvider", "children", "re", "p", "l", "cache2", "pe", "screen", "usedIds", "getLayoutId", "te", "id", "name", "duplicatedFrom", "cacheKey", "previousId", "nodeIdentifier", "possibleMatch", "index", "duplicatedId", "match", "byLastIdMatch", "matchedLayoutId", "shouldUseNamedLastIdMatch", "previousLayoutId", "shouldUseNamedMatch", "last", "possible", "rootDuplicatedId", "identifier", "value", "layoutId", "nextValue", "nextLayoutId", "lastId", "possibleId", "persistLayoutIdCache", "contextValue", "initialValue", "AutomaticLayoutIds", "enabled", "props", "context", "se", "useConstant", "init", "ref", "baseStyle", "errorStyle", "textStyle", "titleStyle", "messageStyle", "ErrorPlaceholder", "file", "title", "stripSlash", "message", "u", "isFiniteNumber", "value", "isEmpty", "obj", "isReactElement", "test", "isReactChild", "degreesToRadians", "degrees", "Line", "Line2", "a", "b", "line", "offset", "angle", "Point", "rad", "x", "y", "lineA", "lineB", "segments", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "b1", "c1", "alpha", "beta", "deltaAX", "deltaAY", "deltaBX", "deltaBY", "pointOnLine", "deltaX", "deltaY", "pointB", "point", "perp", "distance2", "hypotenuse", "r", "Rect", "rect", "other", "size", "n", "delta", "xOffset", "yOffset", "value", "doubleValue", "rectMaxX", "rectMaxY", "width", "height", "decimals", "roundedNumber", "ps", "minX", "maxX", "minY", "maxY", "i", "tl", "tr", "_", "bl", "min", "max", "rect1", "rect2", "matrix", "rectA", "rectB", "aMax", "bMax", "rects", "comparingRect", "rectMinX", "rectMinY", "rectMidX", "rectMidY", "defaults", "pointA", "minSize", "minWidth", "minHeight", "diffX", "diffY", "br", "anchorRect", "direction", "alignment", "rebasedRect", "assertNever", "ConstraintMask", "constraints", "isFiniteNumber", "valueToDimensionType", "value", "trimmedValue", "ConstraintValues", "props", "left", "right", "top", "bottom", "width", "height", "centerX", "centerY", "aspectRatio", "autoSize", "isAnimatable", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "Animatable", "parsedHeight", "centerAnchorX", "centerAnchorY", "values", "parentSizeInfo", "freeSpace", "parentWidth", "parentHeight", "hOpposingPinsOffset", "pinnedOffset", "assertNever", "vOpposingPinsOffset", "sizeAfterApplyingConstraintsAndAspectRatio", "pixelAlign", "x", "y", "parentSizeForPositioning", "positioningParentWidth", "positioningParentHeight", "f", "Rect", "defaultWidth", "defaultHeight", "getConstraintValue", "constraint", "parentSize", "viewport", "constraintValueForUncalculatedViewport", "constrainHeight", "constrainWidth", "w", "h", "start", "end", "containsInvalidStringValues", "constraintsEnabled", "sizeFromFiniteNumberProps", "size", "rectFromFiniteNumberProps", "calculateRect", "parentSizeDisabled", "constraintValues", "getConstraintValues", "enabledParentSize", "deprecatedParentSize", "center", "_constraints", "constraintMask", "ConstraintsContext", "e", "deprecatedParentSize", "parentSize", "useParentSize", "isSize", "o", "ProvideParentSize", "props", "currentParentSize", "children", "value", "getParentWidth", "getParentHeight", "p", "l", "useProvideParentSize", "node", "useConstraints", "calculateRect", "isAutoSized", "width", "height", "ControlType", "ControlType2", "isFlexboxGapSupportedCached", "isFlexboxGapSupported", "flex", "isSupported", "flexboxGapNotSupportedClass", "initialized", "installFlexboxGapWorkaroundIfNeeded", "richTextStylesRule", "richTextParagraphSpacingStylesRule", "richTextBackgroundMaskStylesRule", "richTextLinkStylesRule", "richTextLinkHoverStylesRule", "richTextLinkCurrentStylesRule", "richTextLinkCurrentHoverStylesRule", "richTextBoldStylesRule", "richTextItalicStylesRule", "richTextImageRule", "richTextBlockElementResetRule", "richTextStylesPresetResetRule", "richTextStylesList", "richTextStylesListItem", "richTextStylesNumberedListMarker", "richTextStylesBulletedListMarker", "deprecatedRichTextCSSRules", "richTextCSSRules", "defaultCache", "defaultSheet", "injectCSSRule", "cssRule", "sheet", "cache2", "styleElement", "componentCSSRules", "textAlignmentRule", "textBlockSpanRule", "textInlineSpanRule", "renderTextStylesRule", "textStylesRule", "linkStylesRule", "linkHoverStylesRule", "linkCurrentStylesRule", "textCSSRules", "stackPositionRule", "nativeStackGapRules", "stackGapRule", "stackDirectionRuleVertical", "stackDirectionRuleHorizontal", "stackCSSRules", "navigationCSSRules", "scrollCSSRules", "nativeScrollCSSRules", "deviceComponentCSSRules", "pageContentWrapperWrapperCSSRules", "presenceCSS", "cursorCSS", "frameCSS", "resetCSS", "hideScrollbars", "willChangeOverrideCSSVariable", "willChangeEffectOverrideCSSVariable", "anySafariVersion", "safari16OrGreater", "willChangeTransformRules", "isPreview", "frameCSSRules", "svgCSSRules", "combineCSSRules", "combinedCSSRules", "combinedCSSRulesForPreview", "didInject", "injectComponentCSSRules", "styles4", "RenderTarget", "rule", "isReactComponent", "component", "isObject", "isFunction", "optionalKey", "controlIsOptional", "control", "getControlDefaultValue", "control", "isString", "isBoolean", "isUndefined", "isNumber", "isObject", "value", "applyControlDefaultsToDefaultProps", "isArray", "defaultProps", "controls", "controlKey", "currentDefault", "controlIsOptional", "defaultValue", "getDefaultProps", "component", "applyControlDefaultsToReactDefaultProps", "isReactComponent", "addPropertyControls", "propertyControls", "getPropertyControls", "isStaticRenderer", "currentTarget", "RenderTarget", "useIsStaticRenderer", "isStatic", "ye", "asRecord", "object", "memoize", "fn", "cache2", "arg", "reactPropsRegex", "isPropValid", "prop", "mockWithWarning", "message", "warnOnce", "mockWithoutWarning", "implementation", "image", "rect", "nodeId", "element", "runtime", "isRuntimeInjected", "runtimeProxy", "target", "key7", "reciever", "wrapperStyle", "placeholderStyle", "cssObjectFit", "imageFit", "cssObjectPosition", "positionX", "positionY", "x", "y", "getImageStyle", "image", "StaticImage", "containerSize", "nodeId", "alt", "draggable", "syncDecoding", "source", "runtime", "imageStyle", "imageRef", "e", "p", "CanvasImage", "wrapperRef", "imageElement", "wrapper", "OptimizedCanvasImage", "BackgroundImageComponent", "layoutId", "props", "fallbackWrapperStyles", "imageNode", "isString", "backgroundSize", "isNumber", "tileSize", "imageSource", "RenderTarget", "motion", "collectBorderStyleForProps", "style", "collapseEqualBorders", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderBottom", "borderLeft", "borderRight", "Border", "key", "BackgroundImage", "applyForwardOverrides", "background", "_forwardedOverrideId", "_forwardedOverrides", "id", "forwardedOverrideId", "src", "backgroundImageFromProps", "backgroundImage", "Animatable", "htmlElementAsMotionComponent", "asElem", "import_process", "__toESM", "require_browser", "safeNavigator", "navigator", "isBrowser2", "isChrome", "safeNavigator", "isEdge", "isSafari", "isFirefox", "isFramerX", "isIOS", "safeNavigator", "isTest", "import_process", "isChrome2", "isChrome", "collectLayoutHintDataProps", "props", "center", "layoutHintDataPropsForCenter", "RenderTarget", "nodeIdFromString", "str", "processOverrideForwarding", "props", "children", "_forwardedOverrides", "e", "child", "transformTemplate", "center", "_", "generated", "useLayoutId", "specificLayoutId", "postfix", "name", "layoutIdKey", "duplicatedFrom", "__fromCodeComponentNode", "drag", "getLayoutId", "enabled", "re", "LayoutIdContext", "se", "existingLayoutId", "layoutIdCandidate", "useIsomorphicLayoutEffect2", "fe", "ue", "ComponentContainerContext", "useForceUpdate2", "setForcedRenderCount", "v", "ResizeObserverPolyfill", "require_resize_observer_umd", "SharedObserver", "__publicField", "ResizeObserver", "safeWindow", "ResizeObserverPolyfill", "entries", "entry", "callbackForElement", "element", "callback", "sharedResizeObserver", "isBrowser2", "useRerenderOnResize", "ref", "update", "useForceUpdate2", "ue", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "getMeasurableCodeComponentChildren", "element", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "isMeasurable", "unwrapInlinedDisplayContents", "firstMeasurableChild", "useMeasureLayout", "props", "ref", "getChildren", "options", "id", "visible", "_needsMeasure", "skipHook", "inCodeComponent", "re", "ComponentContainerContext", "onCanvas", "RenderTarget", "useIsomorphicLayoutEffect2", "runtime", "nodeIdFromString", "measureClosestComponentContainer", "container", "smallValue", "translateZ", "useTranslateZHack", "isFramerX", "isSafari", "isTest", "forceLayerBackingWithMotionStyle", "motionStyle", "forceLayerBackingWithCSSProperties", "cssProperties", "setTranslateZHack", "style", "enabled", "transform2", "isString", "resetSetStyle", "key7", "toValue", "microtask", "asRecord", "value", "reset", "Layer", "Layer2", "I", "__publicField", "usingMotionStyle", "nextProps", "nextState", "isEqual", "prevProps", "manageCache", "cache2", "maxEntries", "i", "memoize2", "create", "r", "g", "hash", "hasher", "chr", "ConvertColor", "color2", "angle", "Color", "alpha", "obj", "stringToObject", "hsv", "hsvToStr", "h", "a", "b", "input", "CSSVariableRegExp", "colorCache", "cachedMultiplyAlpha", "s", "gradientColorStops", "gradient", "stops", "stop", "gradientColorStopsHash", "result", "multiStopGradientKeys", "isMultiStopGradient", "simpleGradientKeys", "isSimpleGradient", "linearGradientKeys", "LinearGradient", "linearGradient", "overrideAngle", "cssStops", "radialGradientKeys", "RadialGradient", "radialGradient", "widthFactor", "heightFactor", "centerAnchorX", "centerAnchorY", "index", "nextStop", "position", "collectBackgroundFromProps", "background", "backgroundColor", "isMotionValue2", "Animatable", "extractStyleFromProps", "name", "styleRef", "into", "hasLeftAndRight", "hasTopAndBottom", "getStyleForFrameProps", "hasEvents", "pointerEvents", "pointerEventsSet", "event", "getCursorFromEvents", "overflowKey", "hasScrollableContent", "hasScrollingOverflow", "unwrapFrameProps", "frameProps", "left", "top", "bottom", "right", "width", "height", "center", "_constraints", "size", "widthType", "heightType", "positionFixed", "positionAbsolute", "minWidth", "resolveMotionValue", "minHeight", "maxWidth", "maxHeight", "defaultFrameRect", "useStyleAndRect", "e", "injectComponentCSSRules", "_initialStyle", "__fromCanvasComponent", "unwrappedProps", "constraintsRect", "useConstraints", "defaultStyle", "shouldDisablePointerEvents", "safeToEditPointerEvents", "centerTextStyle", "child", "propsStyle", "constraintsStyle", "constraintsEnabled", "isAutoSized", "resultStyle", "isRenderingStaticContent", "isStaticRenderer", "filteredProps", "getMotionProps", "motionProps", "isValidMotionProp", "isPropValid", "hasDataFramerName", "VisibleFrame", "Y", "forwardedRef", "border", "_border", "__portal", "propsWithOverrides", "children", "processOverrideForwarding", "layoutId", "useLayoutId", "cursor", "fallbackRef", "pe", "dataProps", "currentStyle", "rect", "autoSized", "transformTemplate", "layoutHintDataPropsForCenter", "backgroundImage", "backgroundImageFromProps", "parentSize", "resolveParentSize", "wrappedContent", "useProvideParentSize", "u", "l", "p", "BackgroundImageComponent", "Border", "MotionComponent", "htmlElementAsMotionComponent", "radius", "shadow", "FrameWithMotion", "_usesDOMRect", "TREE_ROOT_ID", "SharedLayoutContext", "e", "SharedLayoutRoot", "I", "__publicField", "tree", "transition", "shouldAnimate", "_a", "needsReset", "projectionNode", "_a2", "_b", "p", "rootStyles", "MagicMotionCrossfadeRoot", "props", "motion", "setRef", "ref", "value", "isFunction", "isMutableRef", "isObject", "useStableRefWithObserver", "callbacks", "useConstant", "cleanups", "ref", "refCallback", "value", "needsCleanup", "callback", "cleanup", "fn", "skipCall", "_a", "useObserverRef", "forwardedRef", "fallbackRef", "pe", "createStableRefWithObserver", "isMutableRef", "isFunction", "useRefEffect", "effect", "deps", "effectRef", "depsChangedRef", "se", "depsChanged", "SharedIntersectionObserver", "options", "__publicField", "entries", "observer", "entry", "callbackForElement", "element", "SharedIntersectionObserverContext", "z", "_useSharedIntersectionObserver", "key7", "observers", "re", "enabled", "root", "rootMargin", "threshold", "useSharedIntersectionObserver", "noop", "thresholds", "_", "i", "ViewportContext", "e", "useAppearEffect", "appearCallback", "internalState", "animateOnce", "isInView", "hasAnimatedOnce", "isIntersecting", "isIntersectingWithThreshold", "calculatedIntersection", "intersectionRect", "boundingClientRect", "safeWindow", "import_hoist_non_react_statics2", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics", "__toESM", "require_hoist_non_react_statics_cjs", "hasOwnProperty", "obj", "prop", "$private", "ObservableObject", "ObservableObject2", "initial", "makeAnimatables", "observeAnimatables", "unproxiedState", "Observers", "key7", "state", "value", "asRecord", "sharedProxyHandler", "target", "observer", "ObservableObjectProxyHandler", "__publicField", "receiver", "privateObject", "animatable", "rawValue", "isAnimatable", "Animatable", "transactions", "change", "transaction", "result", "changed", "targetValue", "rawValueIsObject", "keys3", "privateIndex", "key2", "withOpacity", "target", "collectOpacityFromProps", "props", "style", "opacity", "Animatable", "shadowsAsFilter", "shadows", "filters", "dropShadows", "shadowItem", "collectTextShadowsForProps", "props", "style", "textShadow", "shadow", "collectLayerFilters", "props", "style", "filters", "isFiniteNumber", "shadowsAsFilter", "collectBackgroundFilters", "collectFiltersFromProps", "LayoutTree", "I", "__publicField", "child", "TREE_ROOT_ID", "nextProps", "isLead", "isExiting", "isOverlayed", "animatesLayout", "transition", "sharedLayoutContext", "hasBecomeLead", "hasExitBeenCancelled", "shouldPromote", "shouldDemote", "overlayChanged", "projection", "layoutId", "p", "SwitchLayoutGroupContext", "SharedLayoutTree", "props", "e", "SharedLayoutContext", "NavigationContainerContext", "useIsInCurrentNavigationTarget", "re", "newMap", "useMap", "useConstant", "NavigationTargetContext", "z", "NavigationTargetWrapper", "isCurrent", "children", "callbacks", "register", "te", "fn", "deregister", "cleanup", "value", "pe", "ue", "_", "cb", "newCleanup", "isFunction", "useOnCurrentTargetChange", "callback", "deps", "NavigationContainer", "isLayeredContainer", "isPrevious", "visible", "transitionProps", "backdropColor", "onTapBackdrop", "backfaceVisible", "exitBackfaceVisible", "animation", "exitAnimation", "instant", "initialProps", "exitProps", "position", "withMagicMotion", "index", "areMagicMotionLayersPresent", "id", "isInitial", "animate3", "useAnimation", "presence", "PresenceContext", "persistLayoutIdCache", "LayoutIdContext", "previousState", "getOriginProps", "viewportRef", "isBeingRemoved", "wasPrevious", "wasCurrent", "shouldAnimateIn", "shouldAnimateOut", "origins", "wasReset", "allAnimatableProperties", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "u", "FrameWithMotion", "ViewportContext", "shouldUsePreviousValue", "prevProps", "currentOriginProps", "result", "isFiniteNumber", "containerProps", "_a", "_b", "_c", "toPropsContain3d", "fromPropsContain3d", "NavigatorMock", "warnOnce", "navigatorMock", "NavigationContext", "TransitionDefaults", "pushTransition", "options", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "key7", "component", "currentOverlay", "overlayItemId", "overlayStack", "currentItem", "isCurrentScreen", "nextIndex", "removed", "shouldMoveForward", "isNextTargetForward", "current", "previous", "containerKey", "findLatestHistoryIndex", "containerVisualIndex", "containerIsRemoved", "magicMotionPropsForAdd", "transitionForContainer", "updateTransitions", "containers", "nextState", "nextItem", "history", "target", "assert", "item", "previousTransition", "visualIndex", "magicMotionPropsForRemove", "nextKey", "update", "nextVisualIndex", "validTargets", "nextValidTarget", "targetVisualIndex", "currentVisualIndex", "shouldRemoveLastKey", "containerIndex", "transitions", "screenIndex", "transitionForScreen", "stackState", "sequence", "allAnimatableKeys", "objectKeys", "direction", "from", "property", "transitionTo", "transitionFrom", "asRecord", "NavigationCallbackContext", "e", "IsInitialNavigationContext", "e", "Navigation", "_lastEventTimeStamp", "_a", "_getStackState", "getStackState_fn", "_isSameEventTransition", "isSameEventTransition_fn", "_navigationAction", "_transition", "transition_fn", "I", "props", "_a2", "__privateAdd", "__publicField", "defaultState", "action", "newState", "reduceNavigationStateForAction", "skipLayoutAnimation", "historyItem", "withMagicMotion", "updateState", "__privateMethod", "__privateSet", "__privateGet", "component", "isReactChild", "isReactElement", "transition", "TransitionDefaults", "key7", "_b", "options", "pushTransition", "overlayTransition", "flipTransition", "_c", "_d", "_e", "stackState", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "isInitial", "contentContainers", "index", "assert", "visualIndex", "removed", "transitionProps", "isCurrent", "isPrevious", "areMagicMotionLayersPresent", "p", "NavigationContainer", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "MagicMotionCrossfadeRoot", "containerContent", "overlayContainers", "item", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "FrameWithMotion", "NavigationContext", "u", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "SharedLayoutRoot", "AnimatePresence", "current", "previous", "currentOverlay", "previousOverlay", "transitionTraits", "transitionOptions", "NavigationCallbackContext", "animationDefault", "overlayStack", "currentOverlayItem", "previousOverlayItem", "containerIndex", "history", "navigationItem", "screenIndex", "overlayIndex", "containerCurrent", "overCurrentContext", "child", "position", "shouldStretchWidth", "shouldStretchHeight", "canStretchStyle", "isObject", "goBackAction", "NavigationWrapper", "resetProjection", "useResetProjection", "useInstantLayoutTransition", "injectComponentCSSRules", "import_hoist_non_react_statics3", "__toESM", "require_hoist_non_react_statics_cjs", "import_process2", "__toESM", "require_browser", "debounce", "fn", "time", "timeout", "debounced", "args", "safeWindow", "cancel", "cx", "classNames", "data", "Data2", "initial", "_data", "ObservableObject", "target", "observer", "Data", "initialState", "DataObserverContext", "e", "DataObserver", "I", "__publicField", "initialState", "MainLoop", "cancel", "Data", "children", "d", "observer", "p", "DataObserverContext", "import_hoist_non_react_statics4", "__toESM", "require_hoist_non_react_statics_cjs", "prefix", "prefixLength", "stripPrefixFromPrefixedKey", "key7", "prefix", "prefixLength", "GeneratedComponentContext", "e", "cloneChildrenWithProps", "children", "props", "asNode", "cloned", "j", "child", "J", "q", "p", "l", "useCloneChildrenWithPropsAndRef", "forwardedRef", "hook", "useConstant", "createHook", "state", "createRefFunction", "updateIfNeeded", "nextForwardedRef", "ref", "shouldUpdate", "preventNextCall", "cloneChildrenWithPropsAndRef", "ownRef", "newProps", "isFunction", "cloneAsElement", "newRef", "prevForwardedRef", "prevChildRef", "value", "setRef", "StyleSheetContext", "framerPostSSRCSSSelector", "componentsWithServerRenderedStyles", "_a", "isBrowser2", "componentsWithSSRStylesAttr", "framerCSSMarker", "withCSS", "Component18", "escapedCSS", "componentSerializationId", "sheet", "cache2", "id", "RenderTarget", "concatenatedCSS", "u", "ie", "rule", "injectCSSRule", "SSRParentVariantsContext", "SSRVariantClassName", "renderBranchedChildrenFromPropertyOverrides", "overrides", "variantClassNames", "primaryVariantId", "parentVariants", "cloneChildren", "activeVariantId", "childrenArray", "branches", "nonOverriddenVariants", "variantId", "propOverrides", "arePropOverridesEffectivelyDifferent", "effectiveVariants", "intersection", "remainingVariants", "effectiveRemainingVariants", "renderedBranches", "variants", "element", "hiddenClassNames", "generateHiddenClassNames", "assert", "variantHashFromClassName", "className2", "generateHiddenClassNames", "showOnlyInVariantIds", "parentVariants", "variantClassNames", "classNames", "variantId", "variantClassName", "alreadyHiddenInParent", "intersection", "variants", "variant", "arePropOverridesEffectivelyDifferent", "props", "propOverrides", "key7", "isEqual", "propsForBreakpoint", "overrides", "PropertyOverridesWithoutCSS", "e", "breakpoint", "children", "ref", "cloneWithRefs", "useCloneChildrenWithPropsAndRef", "SSRParentVariantsContext", "isHydrationOrSSR", "useIsHydrationOrSSR", "action", "useConstant", "isBrowser2", "generatedComponentContext", "GeneratedComponentContext", "primaryVariantId", "renderBranchedChildrenFromPropertyOverrides", "cloneChildrenWithProps", "assertNever", "PropertyOverrides2", "withCSS", "SSRVariantClassName", "defaultVariantKey", "defaultVariants", "_variantHashes", "AnimationCollector", "__publicField", "__privateAdd", "nodeId", "prop", "value", "variantHash", "assert", "id", "existing", "existingValue", "info", "__privateGet", "_a", "transformTemplate2", "isFunction", "framerAppearTransformTemplateToken", "initial", "animate3", "config", "isObject", "isString", "framerAppearEffects", "withOptimizedAppearEffect", "Component18", "optimized", "framerAppearIdKey", "disabledProps", "getDisabledFXPropsInStaticRenderer", "p", "framerAppearTransformTemplateToken", "framerAppearIdKey", "framerAppearAnimationScriptKey", "getDisabledFXPropsInStaticRenderer", "props", "isStaticRenderer", "isVariantOrVariantList", "value", "isString", "effectValuesKeys", "makeFXValues", "defaults", "motionValue", "defaultFXValues", "isFXValuesKey", "key7", "effectEnabledStyle", "effectDisabledStyle", "useFXValues", "values", "enabled", "effect", "useConstant", "e", "isUndefined", "loopOptionsKeys", "useDelay", "timeoutRef", "pe", "ue", "d", "resolve", "useLoop", "loopEffectEnabled", "loopRepeatDelay", "loopTransition", "loopRepeatType", "loop", "loopPauseOffscreen", "ref", "shouldReduceMotion", "useReducedMotionConfig", "mirrorStateRef", "delay2", "animateValues", "te", "transition", "mirror", "to", "from", "opts", "target", "animate", "isRunning", "setIsRunning", "ye", "shouldRunRef", "animateLoop", "start", "Z", "stop", "overrideRunRef", "hasLoop", "startStopTabVisibilityListener", "startAndStopBasedOnIntersection", "entry", "useSharedIntersectionObserver", "addWillChange", "se", "parallaxTransform", "scrollY", "originalPosition", "speed", "offset", "adjustPosition", "speedFactor", "initialPosition", "scrollOffset", "parallaxOptionsKeys", "useParallax", "options", "visibilityStyle", "parallaxTransformEnabled", "transform2", "yValue", "useScroll", "parallaxY", "useTransform", "visibility", "useMotionValue", "defaultValue", "useRefEffect", "element", "frame", "_a", "useOnRouteChange", "getTransition", "isObject", "runEffectAnimation", "appearId", "instant", "motionValue2", "isMotionValue", "isNumber", "visualElement", "visualElementStore", "startTime", "safeWindow", "handoffAnimationStartTime", "presenceOptionsKeys", "usePresenceAnimation", "motionInitial", "motionAnimate", "motionExit", "presenceInitial", "presenceAnimate", "presenceExit", "style", "initial", "animateConfig", "exit", "isPresent", "safeToRemove", "usePresence", "internalState", "base", "hasMounted", "lastAnimate", "running", "isEqual", "effectEnabled", "calcOffsetTop", "container", "top", "current", "scrollObserverOffset", "createTransformInputRange", "transformTargets", "threshold", "callback", "starts", "inputRange", "index", "targetRef", "height", "previousTop", "end", "currentScrollDirection", "lastOffset", "scrollDirectionThreshold", "useScrollDirectionChange", "scrollDirection", "cb", "direction", "repeat", "currentRouteKey", "useCurrentRouteKey", "_", "directionChangeOffset", "lastDirection", "currentTarget", "scrollInfo", "hasDirectionChanged", "nextTarget", "styleAppearOptionsKeys", "defaultOutputRange", "defaultRanges", "createInputOutputRange", "targets", "hasExit", "outputRange", "firstRange", "idx", "last", "makeStyle", "useAnimationVariants", "opacity", "targetOpacity", "transformPerspective", "enter", "animateVariant", "defaultStyles", "useStyleAppearEffect", "variants", "playState", "animation", "runAnimation", "fromInitial", "transitionWithFallback", "toValue", "hasAnimatedOnce", "animateWithIntersectionObserver", "useAppearEffect", "appears", "isPlaying", "lastAppearState", "animateWithScrollInfo", "playedState", "lastVariant", "variant", "transform", "variantAnimation", "asRecord", "styleTransformOptionsKeys", "defaultValues", "defaultRanges2", "useAttachOptionalSpring", "spring2", "springs", "objectKeys", "m2", "v", "set", "active", "animateValue", "frameData", "delta", "createInputOutputRanges", "effectKeyOutputRange", "_b", "_c", "previousTarget", "createPageOutputRange", "keyOutputRange", "pageInputRange", "useStyleTransform", "transformTrigger", "styleTransformEffectEnabled", "transformViewportThreshold", "effectDisabled", "triggerOnScroll", "fe", "scrollYInputRange", "groups", "groupValues", "backwardsCompatibleEnabledCheck", "secondaryKey", "object", "extractFXOptions", "result", "strippedKey", "stripPrefixFromPrefixedKey", "group", "keys3", "add2", "sum", "multiply", "reactRefObjectKey", "isReactRefObject", "addMotionValueStyle", "isVariantOrVariantList2", "withFX", "Component18", "forwardedRef", "p", "disabledProps", "parallax", "styleAppear", "styleTransform", "presence", "forwardedProps", "targetOpacityValue", "withPerspective", "inSmartComponent", "observerRef", "useObserverRef", "presenceEffectValues", "presenceEffectStyle", "optimizedAppearDataAttribute", "parallaxValues", "parallaxStyle", "transformValues2", "scrollStyle", "appearEffectValues", "scrollAppearStyle", "loopValues", "loopStyle", "fxValues", "scale", "x", "y", "rotate", "rotateX", "rotateY", "skewX", "skewY", "drag", "dragConstraints", "useRerenderOnResize", "motionValueStyle", "animate3", "motionGestures", "Context", "z", "ComponentPresetsProvider", "presets", "children", "lastPresets", "pe", "isEqual", "p", "ComponentPresetsConsumer", "componentIdentifier", "presetProps", "re", "ComponentViewportContext", "e", "useComponentViewport", "ComponentViewportProvider", "width", "height", "y", "rest", "ref", "componentViewport", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "withGeneratedLayoutId", "Component18", "props", "layoutId", "useLayoutId", "SuspenseErrorBoundary", "I", "__publicField", "error", "errorInfo", "componentStack", "stack", "sendTrackingEvent", "NotFoundErrorBoundaryCaughtError", "window", "L", "suspendPromise", "Suspend", "SuspenseThatPreservesDom", "NullFallback", "nullFallback", "collectErrorToAnalytics", "logError", "args", "shouldEnableCodeBoundaries", "RenderTarget", "CodeComponentBoundary", "errorMessage", "fallback", "ServerSideErrorBoundary", "ClientSideErrorBoundary", "hasError", "DeprecatedContainerErrorBoundary", "ExternalComponentContext", "useNearestExternalComponent", "useFurthestExternalComponent", "nearestExternalComponent", "item", "IsExternalComponent", "scopeId", "nodeId", "parent", "newValue", "CRASH_ERROR_MESSAGE_PREFIX", "formatCodeCrashLocationFromSourceNode", "getErrorMessageForComponent", "getErrorMessageFor", "getErrorMessageFor", "element", "scopeId", "nodeId", "formatCodeCrashLocationFromSourceNode", "shouldWrapComponentWithBoundary", "scopeIdOfThisComponent", "scopeIdOfNearestExternalComponent", "externalComponentLevel", "isAuthoredByUser", "isExternalComponent", "inComponentSlot", "isLocalComponentInstance", "isNodeLocalToProject", "isNodeLocalToProject", "scopeIdOfThisNode", "scopeIdOfNearestExternalComponent", "externalComponentLevel", "inComponentSlot", "isUndefined", "useMaybeWrapComponentWithCodeBoundary", "children", "scopeId", "nodeId", "isAuthoredByUser", "isModuleExternal", "nearestExternalComponent", "useNearestExternalComponent", "p", "DeprecatedContainerErrorBoundary", "shouldWrapComponentWithBoundary", "CodeComponentBoundary", "getErrorMessageForComponent", "IsExternalComponent", "ContainerInner", "e", "layoutId", "as", "props", "ref", "outerLayoutId", "useConstant", "MotionComponent", "htmlElementAsMotionComponent", "clonedChildren", "child", "childrenWithCodeBoundary", "ComponentContainerContext", "AutomaticLayoutIds", "LayoutGroup", "Container", "withGeneratedLayoutId", "SmartComponentScopedContainer", "rendersWithMotion", "otherProps", "tagName", "Component18", "layoutDependency", "plainHTMLRenderableProps", "CustomCursorContext", "z", "replaceCursorClassName", "cursorComponentClassName", "getActiveDefinitions", "map2", "previousDefinitions", "newDefinitions", "allCursors", "hashes", "hash2", "value", "CustomCursorContextProvider", "X", "events", "byCaller", "callback", "cursors", "id", "shouldReduceMotion", "useReducedMotionConfig", "u", "CustomCursorComponent", "CustomCursorHost", "withCSS", "staticCursorStyle", "customCursorReplacesNativeCursor", "cursor", "valueForCursorAlignment", "alignment", "assertNever", "getCenteringTransform", "placement", "portalIdAttribute", "getCursorHash", "x", "y", "el", "isEmptyObject", "object", "_", "onRegisterCursors", "re", "hasHoverCapability", "setHasHoverCapability", "ye", "pointerX", "useMotionValue", "pointerY", "opacity", "cursorRef", "pe", "internalState", "forceRender", "useForceUpdate2", "fe", "noHoverMQ", "safeWindow", "updateRender", "Z", "ue", "x2", "y2", "updateValues", "animate", "updateVariant", "frame", "updateCursor", "cancelFrame", "fireEventToTarget", "event", "_a", "hideCursor", "updateCursors", "newCursors", "unregister", "cursorHash", "replaceNativeCursor", "Cursor", "spring2", "sprungX", "useSpring", "sprungY", "useTransform", "transformTemplate2", "te", "t", "useCustomCursors", "webPageCursors", "registerCursors", "ae", "GracefullyDegradingErrorBoundary", "I", "__publicField", "error", "window", "isBot", "stack", "sendTrackingEvent", "_a", "_b", "unwrappedError", "closingHTMLComment", "closingHTMLCommentReplacement", "dom", "p", "LazyValue", "resolver", "value", "status", "promise", "assertNever", "LibraryFeaturesContext", "e", "LibraryFeaturesProvider", "useLibraryFeatures", "findAnchorElement", "target", "withinElement", "ChildrenCanSuspend", "children", "useGranularSuspense", "SuspenseThatPreservesDom", "withChildrenCanSuspend", "Component18", "Y", "props", "ref", "linkKey", "isLinkToWebPage", "link", "PRELOAD_AFTER_MS", "OBSERVER_THRESHOLD", "LOW_MEMORY_THRESHOLD", "MAX_CONCURRENT_PRELOADS_SLOW_NETWORK", "MAX_CONCURRENT_PRELOADS_FAST_NETWORK", "nodeToRoute", "preloadedRoutes", "routeToNodesInViewport", "getObserveRouteForPreloadingFn", "connection", "navigator", "lowDeviceMemory", "effectiveType", "preloadDisabled", "maxPreloadAmount", "updateConnection", "observer", "onPreloadIntersectionChange", "activePreloadsAmount", "preloadTimeout", "route", "nodesInViewport", "preloadDone", "preloadRoute", "node", "entries", "_a2", "entry", "nodes", "amountOfNodesInViewport", "observeRouteForPreloading", "shouldPreloadBasedOnUA", "noLocale", "resolveSlugCache", "resolveSlug", "unresolvedSlug", "utilsByCollectionId", "activeLocale", "cache2", "collectionCache", "collectionItemCache", "lazyValue", "getUtils", "utils", "resolveSlugs", "unresolvedPathSlugs", "unresolvedHashSlugs", "collectionUtils", "handleSlugs", "unresolvedSlugs", "result", "slugKey", "assert", "pathResult", "slugResult", "resolveSlugsWithSuspense", "promises", "result2", "isInternalURL", "href", "isValidURL", "isInternal", "findMatchingRouteAttributesForWebPageLink", "router", "currentRoute", "pageLink", "implicitPathVariables", "webPageId", "hash2", "pathVariables", "hashVariables", "resolvedSlugs", "getRouteAttributes", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "findMatchingRouteAttributesForResolvedPath", "path", "pathnameWithQueryParams", "pathname", "routeId", "inferInitialRouteFromPath", "combinedPathVariables", "combinedHashVariables", "resolvedHref", "getPathForRoute", "resolvedHash", "getRouteFromPageLink", "isString", "elementKey", "collectionKey", "collectionItemIdKey", "pathVariablesKey", "mediaType", "isFramerPageLink", "parseFramerPageLink", "link", "isFramerPageLink", "url", "target", "mediaType", "searchParams", "element", "elementKey", "collectionItem", "collection", "collectionKey", "collectionItemId", "collectionItemIdKey", "pathVariablesValue", "pathVariablesKey", "pathVariables", "navigateFromAttributes", "navigate", "element", "implicitPathVariables", "_a", "routeId", "elementId", "pathVariables", "pathVariablesRaw", "href", "link", "parseFramerPageLink", "smoothScroll", "linkFromFramerPageLink", "isFramerPageLink", "parsed", "target", "collectionItem", "createVariablesFromPageLinkCollectionItem", "variables", "pathVariablesKey2", "value", "pathVariablesRegExp2", "PathVariablesContext", "z", "useImplicitPathVariables", "contextPathVariables", "re", "currentPathVariables", "useCurrentRoute", "linkMatchesRoute", "route", "webPageId", "hash2", "combinedPathVariable", "key7", "propsForLink", "href", "openInNewTab", "trackLinkClick", "isInternal", "isInternalURL", "target", "getTargetAttrValue", "rel", "isValidURL", "linkInfoKey", "link", "_a", "_b", "NestedLinksCollector", "__publicField", "result", "outerLinkKey", "innerLinkKeys", "outerLinkInfo", "assert", "links", "innerLinkKey", "innerLinkInfo", "outerLink", "innerLink", "window", "outerLinkNestingInfo", "nestedLinksCollector", "useIsOnFramerCanvas", "RenderTarget", "OuterLinkContext", "z", "useReplaceNestedLinks", "children", "scopeId", "nodeId", "propsAddedByLink", "observerRef", "re", "furthestExternalComponent", "useFurthestExternalComponent", "se", "router", "useRouter", "currentRoute", "useCurrentRoute", "route", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "getRouteFromPageLink", "replaceNestedLinks", "useLibraryFeatures", "isOnFramerCanvas", "shouldReplaceLink", "onClick", "te", "event", "navigator", "openExternalLink", "onAuxClick", "onKeyDown", "useRefEffect", "node", "replacedChildren", "j", "child", "isChildReplaceable", "linkInfoIsCollectable", "tag", "maybeReplaceAnchorWithSpan", "childChildren", "childProps", "props", "ref", "B", "p", "linkInfo", "isUndefined", "J", "component", "isMotionComponent", "unwrapMotionComponent", "motion", "useTrackLinkClick", "newTrackingEventsEnabled", "clickTrackingId", "activeLocale", "hrefAttribute", "_c", "_d", "_e", "pageviewEventData", "sendTrackingEvent", "makeUrlAbsolute", "targetWebPageId", "targetRoute", "targetRoutePath", "targetCollectionItemId", "utils", "slug", "url", "safeWindow", "performNavigation", "routeId", "elementId", "combinedPathVariables", "smoothScroll", "isLazyComponentType", "createOnClickLinkHandler", "anchorElement", "findAnchorElement", "propsForRoutePath", "implicitPathVariables", "matchedRoute", "findMatchingRouteAttributesForResolvedPath", "pathVariables", "path", "getPathForRoute", "anchorTarget", "Link", "withChildrenCanSuspend", "Y", "motionChild", "restProps", "forwardedRef", "useImplicitPathVariables", "useLocaleInfo", "newTrackingEvents", "isString", "resolvedHref", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "linkMatchesRoute", "hasRef", "useObserverRef", "observeRouteForPreloading", "navigate", "propsAddedByLinkExceptNavigate", "isInternalNavigation", "useCloneChildrenWithPropsAndRef", "cloneChildPropsWithAggregatedEvents", "rebindEventHandlersIfNeeded", "linkProps", "aggregatedProps", "onTap", "childOnClick", "childOnTap", "isFunction", "info", "isIOS", "preventClickOnNativeAnchorLink", "resolveLinkInternal", "href", "router", "implicitPathVariables", "onlyHash", "resolveSlugs2", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "isString", "propsForLink", "currentRoute", "webPageId", "hash2", "pathVariables", "hashVariables", "unresolvedHashSlugs", "unresolvedPathSlugs", "route", "resolvedSlugs", "combinedPathVariables", "combinedHashVariables", "getPathForRoute", "IgnoreErrors", "I", "__publicField", "error", "salt", "difficulty", "tokenLength", "maxTime", "calculateProofOfWork", "target", "startTime", "processing", "timestamp", "nonce", "randomCharacters", "secret", "hash2", "sha256", "text", "buffer", "hashBuffer", "b", "count", "characters", "result", "charactersLength", "getEncodedFormFieldsHeader", "data2", "addUTMTagsToFormData", "document2", "matches", "parsed", "key7", "trackFormSubmit", "newTrackingEventsEnabled", "router", "nodeId", "submitTrackingId", "_a", "eventData", "sendTrackingEvent", "pendingState", "successState", "incompleteState", "completeState", "errorState", "formReducer", "state", "type", "assertNever", "stateCanSubmitForm", "preventDefault", "openExternalLinkInCurrentTab", "link", "formRef", "href", "isValidURL", "linkElement", "FormContext", "e", "FormContainer", "action", "children", "redirectUrl", "onSuccess", "onError", "onLoading", "props", "forwardedRef", "fallbackRef", "ref", "useRouter", "currentRoute", "useCurrentRoute", "implicitPathVariables", "useImplicitPathVariables", "dispatch", "activeLocale", "useLocaleInfo", "projectHash", "re", "callbacks", "newTrackingEvents", "useLibraryFeatures", "redirectTo", "_b", "isString", "matchingRoute2", "findMatchingRouteAttributesForResolvedPath", "routeId2", "elementId2", "pathVariables2", "assert", "isLinkToWebPage", "matchingRoute", "findMatchingRouteAttributesForWebPageLink", "routeId", "elementId", "pathVariables", "handleSubmit", "event", "_c", "_d", "_e", "_f", "interactionResponse", "safeWindow", "value", "submitForm", "Z", "handleKeyDown", "input", "form", "checkValidity", "anyEmptyRequiredFields", "p", "motion", "element", "child", "proofOfWork", "response", "body", "responseHasError", "isObject", "getPageviewEventData", "framerSiteId", "routePath", "collectionItemId", "localeCode", "isSamePage", "a", "aPathVariables", "bPathVariables", "defaultLocaleId", "useForceUpdate3", "_", "setForcedRenderCount", "v", "updateScrollPosition", "smoothScroll", "isHistoryTransition", "scrollElementIntoView", "window", "useScheduleRenderSideEffects", "dep", "actions", "pe", "fe", "te", "cb", "useNavigationTransition", "enableAsyncURLUpdates", "startNativeSpinner", "useNativeLoadingSpinner", "monitorNextPaintAfterRender", "useMonitorNextPaintAfterRender", "navigationController", "transitionFn", "updateURL", "isAbortable", "setHydrationDone", "hasUpdateURL", "resolve", "controller", "signal", "nextRender", "resolveNavigationPromise", "navigationPromise", "reject", "noop", "Router", "defaultPageStyle", "disableHistory", "initialPathVariables", "initialRoute", "notFoundPage", "collectionUtils", "routes", "initialLocaleId", "locales", "EMPTY_ARRAY", "preserveQueryParams", "LayoutTemplate", "editorBar", "siteCanonicalURL", "useMarkRouterEffects", "useReplaceInitialState", "startViewTransition2", "useViewTransition", "forceUpdate", "scheduleSideEffect", "startNavigation", "skipFirstPageView", "currentRouteRef", "currentPathVariablesRef", "currentLocaleIdRef", "currentLocaleId", "se", "id", "localeInfo", "localeOrLocaleId", "localeId", "defaultLocale", "nextLocale", "currentRouteId2", "currentRoute2", "localeResult", "switchLocale", "currentPathVariables2", "currentStatePaginationInfo", "isHistoryState", "currentPath", "ignorePushStateWrapper", "pushHistoryState", "setCurrentRouteId", "usePopStateHandler", "navigate", "newRoute", "inUse", "path", "match", "pathVariablesRegExp", "usedVariable", "routeElementId", "getRouteElementId", "currentRouteLocaleId", "route", "pushRouteState", "getRoute", "useGetRouteCallback", "currentRouteId", "currentPathVariables", "currentRoutePath", "pageviewEventData", "ue", "utils", "slug", "api", "pageExistsInCurrentLocale", "pathWithFilledVariables", "fillPathVariables", "remountKey", "templatePageStyle", "useConstant", "RouterAPIProvider", "LocaleInfoContext", "u", "SuspenseThatPreservesDom", "NotFoundErrorBoundary", "MarkSuspenseEffects", "WithLayoutTemplate", "inLayoutTemplate", "x", "renderPage", "TurnOnReactEventHandling", "style", "scrollIntoViewOptions", "preloadImage", "url", "image", "isObjectOrArray", "getPropertyByPath", "keyPath", "keyParts", "part", "current", "getRequestCacheKey", "loadingFetchResult", "isNumberString", "isValidFetchDataValueResult", "isNumber", "isBoolean", "resolveFetchDataValue", "request", "resolvedValue", "isUndefined", "isCacheExpired", "insertionTimestamp", "cacheDuration", "RenderTarget", "cacheDurationMs", "currentTimestamp", "expirationTimestamp", "noop3", "_subscribers", "_preloadedRequests", "_shortestCacheDurations", "_cachedAt", "_ongoingFetches", "_staleQueriesInterval", "_FetchClient", "__privateAdd", "debounce", "responseValue", "cacheConfig", "__privateGet", "storedAt", "interval", "cacheKey", "currentIntervalForRequest", "shortestCacheDuration", "cachedAt", "rawData", "cached", "cachedData", "subscribers", "subscriber", "isBrowser2", "ongoingFetch", "hasExpiredCache", "promise", "onlyIfPrefetched", "callback", "skipFetchRequest", "cacheDurationForUrl", "nextSubscribers", "FetchClient", "FetchClientContext", "z", "IsRestoringCacheContext", "FetchClientProvider", "initialClient", "client", "ye", "isRestoring", "setIsRestoring", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "PageRoot", "RootComponent", "isWebsite", "routeId", "framerSiteId", "pathVariables", "routes", "collectionUtils", "notFoundPage", "isReducedMotion", "includeDataObserver", "localeId", "locales", "preserveQueryParams", "EditorBar", "defaultPageStyle", "disableHistory", "LayoutTemplate", "siteCanonicalURL", "enableAsyncURLUpdates", "useLibraryFeatures", "e", "MainLoop", "p", "MotionConfig", "FetchClientProvider", "CustomCursorHost", "FormContext", "Router", "EditorBarLauncher", "Wrapper", "DataObserver", "RoutesProvider", "NavigationWrapper", "libraryFeatures", "mounted", "setMounted", "ye", "re", "editorBarFeatures", "se", "features", "key7", "ue", "Z", "IgnoreErrors", "L", "ResolveLinks", "withChildrenCanSuspend", "Y", "links", "children", "rest", "ref", "router", "useRouter", "activeLocale", "useLocaleInfo", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "promises", "resolvedLinks", "link", "isString", "resolveLinkInternal", "unresolvedPathSlugs", "unresolvedHashSlugs", "handleSlugs", "slugs", "result", "slugKey", "unresolvedSlug", "assert", "lazyValue", "resolveSlug", "promise", "resolvedValue", "childrenWithLinks", "getLogger", "name", "args", "_a", "runtime", "isAnyCollection", "value", "isAnyLegacyCollection", "isAnyDatabaseCollection", "isLegacyCollection", "isArray", "isObject", "isLegacyLocalizedCollection", "isFunction", "isDatabaseCollection", "isLocalizedDatabaseCollection", "getCollectionItems", "collection", "locale", "CompatibilityDatabaseCollection", "__publicField", "propertyControls", "getPropertyControls", "assert", "schema", "controlEntries", "key7", "controlDescription", "type", "item", "pointer", "data2", "isNullish", "definition", "isUndefined", "LazyValue", "promise", "index", "pointers", "items", "left", "right", "compareArray", "collation11", "leftLength", "rightLength", "i", "leftItem", "rightItem", "result", "compare", "castArray", "DatabaseValue", "compareBoolean", "castBoolean", "valueToBoolean", "cast", "compareColor", "castColor", "compareDate", "leftDate", "rightDate", "castDate", "date", "isValidDate", "compareEnum", "castEnum", "compareFile", "castFile", "compareLink", "leftEncoded", "rightEncoded", "castLink", "protocol", "compareNumber", "castNumber", "number", "valueToNumber", "compareObject", "leftKeys", "rightKeys", "leftKey", "rightKey", "leftValue", "rightValue", "castObject", "definitionEntries", "itemDefinition", "compareResponsiveImage", "castResponsiveImage", "compareRichText", "castRichText", "compareString", "castString", "valueToString", "assertNever", "isBoolean", "isNumber", "isString", "source", "target", "sourceValue", "targetValue", "isNull", "unknownDefinition", "getNetworkLatency", "getNetworkSpeed", "KB", "Cost", "network", "totalRequests", "transferredBytes", "latency", "speed", "cost", "Group", "id", "relational", "__publicField", "node", "required", "hash2", "existing", "winner", "Winner", "assert", "optimizer", "Cost", "cost", "evaluateSync", "generator", "state", "evaluateAsync", "value", "evaluateObject", "values", "result", "keys3", "promises", "key7", "isGenerator", "evaluateArray", "AbstractNode", "isSynchronous", "RelationalNode", "group", "isHashable", "value", "isObject", "isFunction", "calculateHash", "name", "values", "hashes", "isCollectionMetadata", "CollectionMetadata", "assert", "isFieldMetadata", "FieldMetadata", "isIndexMetadata", "IndexMetadata", "isRelationalNode", "RelationalNode", "isGroup", "Group", "RichText", "data2", "pointer", "__publicField", "VIRTUAL_INDEX_FIELD", "Metadata", "other", "item", "ids", "a", "b", "CollectionMetadata", "id", "name", "data2", "__publicField", "Indexes", "Fields", "IndexMetadata", "id", "data2", "collection", "lookupNodes", "constraint", "ordering", "__publicField", "Fields", "fieldName", "field", "Indexes", "Metadata", "FieldMetadata", "id", "name", "definition", "collection", "item", "assert", "value", "RichText", "Fields", "Metadata", "__publicField", "OrderingField", "field", "direction", "calculateHash", "Ordering", "ordering", "other", "fields", "VIRTUAL_INDEX_FIELD", "RequiredProps", "resolvedFields", "node", "Scope", "parent", "scopeField", "scope", "_a", "candidates", "namedFields", "Tuple", "result", "pointer", "tuple", "Relation", "tuples", "predicate", "callback", "start", "end", "keys3", "key7", "ProjectionField", "input", "RelationalProject", "RelationalNode", "projections", "passthrough", "isSynchronous", "projection", "projectionFields", "required", "optimizer", "inputRequired", "inputCost", "projectionsCost", "Cost", "projectionCost", "projectionInput", "context", "outputFields", "projectedValues", "evaluateArray", "evaluateObject", "index", "collation", "ScalarNode", "AbstractNode", "referencedFields", "referencedOuterFields", "generator", "evaluateSync", "evaluateAsync", "collation2", "CaseCondition", "when", "then", "ScalarCase", "conditions", "otherwise", "_b", "condition", "DatabaseValue", "valueToBoolean", "Builder", "normalizer", "query", "locale", "inScope", "select", "fromScope", "defaultOrdering", "orderProjections", "orderFields", "order", "isUndefined", "orderingField", "expression", "fieldId", "projectionScope", "offset", "limit", "selects", "outScope", "fieldName", "from", "assertNever", "collectionData", "getCollection", "collectionName", "collectionId", "CollectionMetadata", "indexData", "lookupNodes", "node2", "constraint", "indexId", "IndexMetadata", "leftScope", "rightScope", "leftOrdering", "rightOrdering", "left", "right", "isOuterField", "subquery", "unknownDefinition", "getArgument", "argument", "source", "target", "array", "Subquery", "data2", "isAnyLegacyCollection", "CompatibilityDatabaseCollection", "isDatabaseCollection", "isLocalizedDatabaseCollection", "RelationalFilter", "predicateCost", "predicates", "_", "RelationalIndexLookup", "isFullScan", "lookup", "KB", "RelationalIntersection", "leftOutputFields", "rightOutputFields", "leftRequired", "leftCost", "rightRequired", "rightCost", "ScalarEquals", "RelationalLeftJoin", "group", "constraintCost", "leftConstraint", "rightConstraint", "joinKeyMap", "rightTuple", "rightValue", "tuplesForKey", "leftTuple", "leftValue", "matches", "joinedTuple", "hasMatch", "RelationalRightJoin", "RelationalScan", "RelationalUnion", "ScalarAnd", "ScalarConstant", "collation3", "ScalarContains", "sourceCost", "targetCost", "collation4", "ScalarEndsWith", "ScalarGreaterThan", "ScalarGreaterThanOrEqual", "ScalarLessThan", "ScalarLessThanOrEqual", "ScalarNotEquals", "ScalarOr", "collation5", "ScalarStartsWith", "Explorer", "before", "after", "createIndexQueryAll", "length", "RelationalProps", "Memo", "relationalProps", "Group", "hash2", "existing", "relational", "RelationalLimit", "limitCost", "valueToNumber", "RelationalOffset", "offsetCost", "ScalarArray", "itemDefinitions", "namedFieldEntries", "namedFieldIds", "inputContext", "relation", "relationTuple", "ScalarCast", "ScalarFlatArray", "collation6", "ScalarIn", "collation7", "ScalarIndexOf", "ScalarLength", "ScalarNot", "collation8", "ScalarNotIn", "ScalarVariable", "Normalizer", "memo2", "pushedFilter", "pushedLimit", "nullableDefinition", "isLeftVariable", "arrayDefinition", "castConditions", "castWhen", "castCondition", "EnforcerNode", "EnforcerResolve", "collections", "collectionItems", "pointers", "items", "collation9", "EnforcerSort", "isAscending", "leftPointer", "leftItem", "rightPointer", "rightItem", "isNull", "Optimizer", "query", "locale", "__publicField", "Memo", "Normalizer", "Explorer", "outScope", "Builder", "group", "required", "optimized", "namedFields", "winner", "normalized", "assert", "node", "cost", "enforcer", "EnforcerResolve", "EnforcerSort", "stringifyIdentifier", "expression", "stringifyLiteralValue", "stringifyFunctionCall", "argument", "stringifyExpression", "stringifyCaseExpression", "caseString", "condition", "stringifyUnaryOperation", "value", "stringifyBinaryOperation", "left", "right", "operator", "stringifyTypeCast", "stringifyQuery", "assertNever", "stringifyCollection", "collection", "isDatabaseCollection", "stringifyJoin", "join", "result", "stringifyFrom", "from", "autoIndentSql", "sql", "formattedSql", "token", "queryString", "selectExpression", "expressionString", "orderExpression", "log", "getLogger", "QueryEngine", "optimizer", "root", "relation", "namedFieldEntries", "tuple", "resolvedFields", "name", "field", "resolved", "RichText", "item", "entries", "resolvedEntries", "key7", "QueryCache", "queryEngine2", "getCacheKey", "existing", "resolver", "LazyValue", "collectionIds", "getCollectionId", "id", "replaceCollection", "_", "isObject", "isAnyCollection", "localeId", "rejectPending", "pendingTimers", "pendingPromises", "t", "reject", "createSet", "useActiveVariantCallback", "baseVariant", "useConstant", "useOnCurrentTargetChange", "ue", "pe", "callback", "args", "resolve", "msDelay", "useAddVariantProps", "baseVariant", "gestureVariant", "variantProps", "e", "id", "_a", "_b", "_c", "activeMediaQueryFromWindow", "mediaQueries", "variant", "query", "safeWindow", "activeBreakpointHashesFromWindow", "breakpoints", "_a", "matches", "hash2", "mediaQuery", "defaultHash", "useHydratedBreakpointVariants", "initial", "hydratedWithInitial", "isInitialNavigation", "re", "IsInitialNavigationContext", "isStaticRenderer2", "useIsStaticRenderer", "usesMediaQueries", "isBrowser2", "baseVariant", "pe", "basePropsVariant", "forceUpdate", "useForceUpdate2", "instantTransition", "useInstantTransition", "setActiveVariantInstant", "te", "updateStateAndRerender2", "Z", "updateStateAndRerender", "useIsomorphicLayoutEffect2", "ue", "callbacks", "mql", "callback", "event", "addMQLCallback", "removeMQLCallback", "framerBreakpointCSSSelector", "requestIdleCallbackFallback", "callback", "removeHiddenBreakpointLayersV2", "breakpoints", "_a", "_b", "_c", "_d", "suspenseBoundaries", "activeBreakpointHashes", "activeBreakpointHashesFromWindow", "hash2", "hiddenLayer", "isSuspenseBoundaryStart", "safeWindow", "_a2", "ssrVariant", "suspenseBoundary", "isSuspenseBoundaryEnd", "node", "key4", "isRoute", "route", "isObject", "use", "promise", "queryEngine", "QueryEngine", "queryCache", "QueryCache", "useQueryData", "query", "activeLocale", "useLocaleInfo", "cached", "getWhereExpressionFromPathVariables", "pathVariables", "collection", "expressions", "value", "isUndefined", "isObject", "name", "result", "expression", "createGestureVariant", "variant", "type", "nextVariant", "allVariants", "currentVariant", "nextIndex", "nextVariant2", "assert", "activeTransition", "transitions", "variantTransition", "getGesture", "enabledGestures", "isHovered", "isPressed", "isLoading", "isError", "hover", "pressed", "loading", "error", "createVariantClassName", "baseVariant", "variantClassNames", "mappedClassName", "safeBaseVariant", "targetVariant", "fallbackVariant", "validBaseVariants", "CycleVariantState", "useRunCallbackIfPageIsVisible", "listenerRef", "pe", "callbackRef", "clean", "te", "ue", "callback", "listenerFn", "_a", "useRunCallbackIfElementIsInView", "observerRef", "isInViewRef", "ref", "observer", "entries", "isIntersecting", "i", "useUpdateIfVisible", "runUpdateIfPageIsVisible", "runUpdateIfElementIsInView", "checkViewport", "isBot", "useVariantState", "variant", "externalDefaultVariant", "externalTransitions", "externalEnabledGestures", "externalCycleOrder", "variantProps", "forceUpdate", "useForceUpdate2", "isCanvas", "useIsOnFramerCanvas", "useConstant", "wrapUpdatesInTransitions", "pauseOffscreenFeatureOn", "useLibraryFeatures", "update", "useTransition", "Z", "runUpdateIfVisible", "internalState", "resolveNextVariant", "targetBaseVariant", "isHovered2", "isPressed2", "isError2", "enabledGestures2", "defaultVariant2", "nextBaseVariant", "gesture", "nextGestureVariant", "createGestureVariant", "updateIfNeeded", "baseVariant2", "gestureVariant2", "highPriority", "clearError", "nextBase", "nextGesture", "setGestureState", "setVariant", "proposedVariant", "pauseOffscreen", "cycleOrder", "nextVariant", "clearLoadingGesture", "gestureVariant", "defaultVariant", "loadedBaseVariant", "addVariantProps", "useAddVariantProps", "se", "variants", "hasLoadingVariant", "gestures", "gestureHandlers", "activeTransition", "cx", "WindowContext", "e", "useProvidedWindow", "safeFonts", "fontAliases", "fontFamilies", "isSuccessfullyParsedFontVariant", "variant", "systemFontFamilyName", "LocalFontSource", "__publicField", "family", "fontFamily", "fonts", "fontFamilies", "members", "member", "selector", "weight", "font", "key7", "value", "fontAliases", "systemFontFamily", "aliases", "fontFamilies2", "weights", "styles4", "style", "createVariantName", "alias", "fontWeightNames", "friendlyStyle", "import_process3", "__toESM", "require_browser", "isVariableFont", "createFontFamilyName", "createVariableFontFamilyName", "familyName", "supportsOpenType", "openTypeData", "validateVariationAxes", "variationAxesData", "variationAxes", "axis", "isVariationAxis", "isOpenTypeFeature", "feature", "builtInFontSelectorPrefix", "BuiltInFontSource", "assets", "asset", "properties", "fontName", "variantNameToWeight", "getFontStyle", "a", "b", "weightA", "weightB", "kebabCaseVariant", "variantToKebabCase", "variantsNameToWeight", "createFont", "locator", "f", "foundryName", "version2", "existingFontFamily", "_a", "_b", "_", "selectorWithoutPrefix", "name", "customFontSelectorPrefix", "getCustomFontName", "fileName", "isAssetVariableFont", "CustomFontSource", "_c", "isVariableFont2", "possibleValues", "possibleValuesWithItalics", "lowerCaseFamily", "tokens", "foundToken", "char", "foundFontFamily", "getRelatedFontVariants", "currentVariant", "availableVariants", "pickBoldItalicVariants", "pickVariableVariants", "currentWeight", "currentStyle", "variantByWeightAndStyle", "boldVariantByStyle", "variantBold", "variantBoldItalic", "currentVariantWeight", "variantItalic", "loadFontsWithOpenType", "source", "supportedFonts", "loadFontToOpenTypeFeatures", "features", "knownFontshareCategories", "parseFontshareCategories", "categoriesField", "category", "isKnownFontshareCategory", "fontsharePrefix", "weightNameToNumber", "weightNames", "allowedVariantsRegex", "FontshareSource", "variantSplit", "weightName", "weightName2", "styleName", "fontshareFonts", "fontsWithOpenType", "fontshareFont", "fontVariants", "fontStyle", "fontMetadataSelector", "hasOpenTypeFeatures", "fontVariant", "variantVariable", "variantVariableItalic", "mapToKnownCategory", "fontToOpenTypeFeatures", "categoryString", "categoryMapping", "framerInterFontPrefix", "framerFontPrefix", "weightNameToNumber2", "FramerFontSource", "weightAndStyleInfo", "framerFonts", "framerFont", "rest", "isVariable", "googleFontSelectorPrefix", "GoogleFontSource", "match", "webFonts", "webFontsWithAxes", "fontsToVariationAxes", "webFontsMap", "mapBy", "webFont", "webFontsWithAxesMap", "webFontName", "staticVariants", "variantName", "variableFont", "variableVariants", "allVariants", "allSuccessfullyParsedVariants", "googleFontsVariantName", "linkedVariants", "mapToKnownCategory2", "array", "keyFn", "acc", "item", "import_fontfaceobserver", "require_fontfaceobserver_standalone", "FONT_LOADING_TIMEOUT", "MAX_RETRIES", "FontLoadingError", "message", "fontRequests", "fontReadyPromises", "loadFont", "data2", "doc", "loadFontWithRetries", "attempt", "url", "stretch", "unicodeRange", "requestId", "fontFace", "isString", "readyPromise", "isFontReady", "e", "readyPromiseId", "framer_default", "loadVariationAxes", "isValidVariationAxesData", "axes", "assertNever", "error", "isObject", "isValidVariationAxes", "isVariationAxis2", "FontStore", "staticFonts", "variableFonts", "runtime", "axesData", "builtInFonts", "info", "googleLocator", "fontshareLocator", "builtInFontLocator", "framerFontDraftProperties", "fontIsVariable", "selectors", "googleFontsRequested", "fontshareFontsRequested", "builtInFontsRequested", "warnOnce", "s", "fontSelectors", "result", "fontsLoadedCallback", "fontStore", "defaultFont", "assert", "FormInputStyleVariableNames", "FormInputStyleVariableNames2", "Var", "inputClassName", "inputWrapperClassName", "emptyValueClassName", "forcedFocusClassName", "cssValue", "value", "css", "selector", "declaration", "output", "key7", "css2", "variable", "variables", "lastItem", "index", "sharedInputCSS", "inputClassName", "Var", "inputWrapperCSS", "inputWrapperClassName", "inputBorderAllSides", "inputBorderCSS", "customValidityKey", "validKey", "isRelevantValidityStateKey", "isInvalid", "validity", "useCustomValidity", "onValid", "onInvalid", "onChange", "onBlur", "onFocus", "isValidRef", "e", "handleInvalid", "handleChange", "handleBlur", "iconSpacing", "iconSize", "inputIconCSSDeclaration", "passwordManagerIgnoreDataProps", "PlainTextInput", "Y", "props", "ref", "autoFocus", "className2", "inputName", "max", "min", "placeholder", "required", "step2", "style", "type", "maxLength", "defaultValue", "autofillEnabled", "rest", "hasValue", "setHasValue", "ye", "prevDefaultValue", "setPrevDefaultValue", "te", "interactionResponse", "newValue", "Z", "eventHandlers", "p", "motion", "dataProps", "cx", "textInputWrapperClassName", "B", "emptyValueClassName", "iconSize2", "defaultTextareaResizerIcon", "defaultDateIconMaskImage", "defaultTimeIconMaskImage", "styles", "forcedFocusClassName", "FormPlainTextInput2", "withCSS", "Image2", "e", "props", "ref", "background", "children", "alt", "draggable", "rest", "style", "MotionComponent", "htmlElementAsMotionComponent", "u", "p", "BackgroundImageComponent", "isShallowEqualArray", "a", "b", "v", "i", "nonSlugCharactersRegExp", "trimSlugRegExp", "slugify", "value", "htmlRegExp", "escapeHTML", "str", "tag", "regex", "replaceFramerPageLinks", "rawHTML", "getRoute", "currentRoute", "implicitPathVariables", "original", "pre1", "pre2", "value1", "value2", "post", "_a", "_b", "href", "pageLink", "parseFramerPageLink", "targetRoute", "isRoute", "targetPath", "currentPath", "attributes", "elementId", "getRouteElementId", "link", "linkFromFramerPageLink", "isString", "linkMatchesRoute", "relativePath", "pathVariables", "pathVariablesRegExp2", "_", "key7", "params", "computeRelativePath", "htmlEscapes", "reUnescapedHtml", "reHasUnescapedHtml", "escapeHTML2", "chr", "deprecatedRichTextPlaceholder", "richTextWrapperClassName", "DeprecatedRichText", "Y", "props", "forwardedRef", "id", "name", "html", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className2", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "willChangeTransform", "environment2", "RenderTarget", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "_children", "rest", "parentSize", "useParentSize", "layoutId", "useLayoutId", "fallbackLayoutRef", "pe", "layoutRef", "navigate", "useRouter", "useCurrentRoute", "useRoutePreloader", "useMeasureLayout", "inCodeComponent", "re", "ComponentContainerContext", "isOnCanvas", "useIsOnFramerCanvas", "textOrOverride", "forwardedOverrideId", "override", "innerHTML", "escapedText", "useImplicitPathVariables", "innerHTMLWithReplacedFramerPageLinks", "se", "ue", "container", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "useLoadFonts", "ie", "injectComponentCSSRules", "isHidden", "style", "convertVerticalAlignment", "restrictedRenderTarget", "frame2", "calculateRect", "isAutoSized2", "template", "transformTemplate", "rotate", "Animatable", "collectFiltersFromProps", "collectTextShadowsForProps", "forceLayerBackingWithCSSProperties", "p", "motion", "cx", "fromCanvasComponent", "containerRef", "prevFontsRef", "isShallowEqualArray", "fontStore", "newlyLoadedFontCount", "measureClosestComponentContainer", "newOverrideableRef", "patchAndWaitForChild", "ref", "controller", "current", "refCallbackResolve", "refCallbackPromise", "resolve", "reject", "element", "defaultValues2", "isEffectKey", "createKeyframes", "effect", "out", "effectValue", "defaultValue", "isUndefined", "emojiSplitRe", "tokenizeText", "tokenization", "elements", "words", "lastWordIndex", "word", "wordIndex", "isLastWord", "short", "u", "x", "char", "i", "tokenizationForEffect", "type", "assertNever", "transformString", "transforms", "isNumber", "getInitialEffectStyle", "canPlay", "canAnimate", "useTextEffect", "config", "preview", "useConstant", "isRenderingStaticContent", "isStaticRenderer", "state", "trigger", "target", "threshold", "play", "transition", "startDelay", "repeat", "tokenization2", "cleanupRef", "runAppearEffect", "inView", "effectEnabled", "hasMounted", "hasAnimatedOnce", "effectStyle", "mayAnimate", "r", "callback", "enter", "list", "createElementList", "animate", "stagger", "frame", "createLineGroups", "animations2", "group", "node", "groups2", "currentGroup", "lastOffset", "FitText", "viewBoxScale", "viewBox", "children", "RichTextContainer", "anchorLinkOffsetY", "_as", "_initialStyle", "stylesPresetsClassNames", "plainText", "fallbackRef", "textEffect", "processedChildren", "processRichTextChildren", "containerStyle", "positionStyle", "Component18", "htmlElementAsMotionComponent", "isFragment", "isLineBreak", "slugCounters", "tokenizer", "depth", "j", "onlyLineBreaks", "child", "J", "dataPresetTag", "isMotionComponent", "elementType", "unwrapMotionComponent", "stylesPresetClassName", "isHeading", "anchorLinkStylePresetClassName", "slug", "generateHeadingSlug", "anchorLink", "q", "headingText", "extractTextFromReactNode", "slugCounter", "RichText2", "content", "isObject", "contentProp", "h1", "h2", "h3", "a", "linearGradientLine", "angle", "rad", "offset", "anglePoint", "Point", "angleLine", "Line", "points", "Rect", "sortedPoints", "point", "a2", "b2", "b", "assert", "c", "start", "end", "elementPropertiesForLinearGradient", "gradient", "line", "stops", "gradientColorStops", "startPosition", "endPosition", "startPoint", "endPoint", "interpolator", "interpolate", "LinearGradient", "stop", "ConvertColor", "elementPropertiesForRadialGradient", "RadialGradient", "isRelativeNumber", "withoutLastChar", "float", "getRelativeNumberValue", "getPositionXFraction", "positionX", "getPositionYFraction", "positionY", "imagePatternPropsForFill", "fill", "includeTransform", "BackgroundImage", "imageWidth", "imageHeight", "transform2", "fit", "offsetX", "offsetY", "scaleX", "scaleY", "imageRatio", "realWidth", "realHeight", "validScaleX", "validScaleY", "layerPositionX", "layerPositionY", "extraOffsetX", "extraOffsetY", "mediaType2", "isAssetReference", "imageUrlForAsset", "asset", "pixelSize", "isExport", "runtime", "ImagePatternElement", "path", "parser", "supportsNativeParseHTML", "isFirefox", "domParser", "html", "type", "useDOM", "isBrowser2", "SharedSVGEntry", "id", "svg", "innerHTML", "viewBox", "count", "visuallyHiddenStyle", "SharedSVGManager", "__publicField", "generateUniqueIds", "contentId", "entry", "hash", "uniqueSVG", "svgSize", "svgDom", "parseSVG", "prefixIdsInSVG", "getSVGSize", "container", "size", "svgTemplates", "svgElement", "box", "output", "value", "sharedSVGManager", "node", "prefix2", "sanitizedPrefix", "sanitizeString", "recursivelyPrefixId", "str", "el", "prefixId", "attr", "base", "fragmentIdentifier", "URL_REF", "prefixedValue", "unitsToPixels", "parseLength", "_a", "m2", "width", "height", "SVG", "Y", "props", "forwardedRef", "parentSize", "useParentSize", "layoutId", "useLayoutId", "layoutRef", "e", "ref", "providedWindow", "useProvidedWindow", "useMeasureLayout", "p", "SVGComponent", "MAX_BACKGROUND_SVG_TEXT_LENGTH", "containsImageReference", "containsCustomPropertyReference", "hasBorderRadius", "style", "sizeSVG", "_b", "div", "localWindow", "safeWindow", "withExternalLayout", "constraintsEnabled", "intrinsicWidth", "intrinsicHeight", "_constraints", "isFiniteNumber", "SVGStyleSheet", "injectComponentCSSRules", "Layer", "element", "calculateRect", "svgContentId", "contentid", "prevProps", "fill", "BackgroundImage", "resetSetStyle", "innerStyle", "frame2", "rotation", "rotate", "Animatable", "RenderTarget", "xFactor", "yFactor", "zoom", "target", "RenderEnvironment", "zoomFactor", "left", "right", "top", "bottom", "visible", "title", "description", "className2", "variants", "innerRef", "_height", "_opacity", "_width", "rest", "identifier", "outerStyle", "collectOpacityFromProps", "collectFiltersFromProps", "fillElement", "Color", "fillColor", "LinearGradient", "gradient", "gradientId", "stops", "x1", "x2", "y1", "y2", "elementPropertiesForLinearGradient", "stop", "idx", "RadialGradient", "elementProperties", "elementPropertiesForRadialGradient", "imagePattern", "imagePatternPropsForFill", "ImagePatternElement", "dataProps", "hasTransformTemplate", "layoutHintDataPropsForCenter", "svgAsBackgroundImage", "content", "__html", "u", "l", "MotionComponent", "htmlElementAsMotionComponent", "href", "rel", "onClick", "onTap", "hasTitleOrDescription", "transformTemplate", "LOADING_LAZY_THRESHOLD", "getLoadingLazyAtYPosition", "offset", "addFonts", "component", "passedFonts", "flags", "fonts", "convertMixedFontArrayToFontBundles", "font", "getFonts", "getFontsFromSharedStyle", "getFontsFromComponentPreset", "oldFontBundle", "fontBundles", "fontOrBundle", "isComponentFontBundle", "upgradeComponentFontV1", "componentFontBundleKey", "source", "withPerformanceMarks", "prefix2", "callback", "markStart", "markEnd", "MotionValue", "transformer", "v", "child", "motionValue"]
}
