jspsych-tangram 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +25 -0
  2. package/dist/construct/index.browser.js +20431 -0
  3. package/dist/construct/index.browser.js.map +1 -0
  4. package/dist/construct/index.browser.min.js +42 -0
  5. package/dist/construct/index.browser.min.js.map +1 -0
  6. package/dist/construct/index.cjs +3720 -0
  7. package/dist/construct/index.cjs.map +1 -0
  8. package/dist/construct/index.d.ts +204 -0
  9. package/dist/construct/index.js +3718 -0
  10. package/dist/construct/index.js.map +1 -0
  11. package/dist/index.cjs +3920 -0
  12. package/dist/index.cjs.map +1 -0
  13. package/dist/index.d.ts +340 -0
  14. package/dist/index.js +3917 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/prep/index.browser.js +20455 -0
  17. package/dist/prep/index.browser.js.map +1 -0
  18. package/dist/prep/index.browser.min.js +42 -0
  19. package/dist/prep/index.browser.min.js.map +1 -0
  20. package/dist/prep/index.cjs +3744 -0
  21. package/dist/prep/index.cjs.map +1 -0
  22. package/dist/prep/index.d.ts +139 -0
  23. package/dist/prep/index.js +3742 -0
  24. package/dist/prep/index.js.map +1 -0
  25. package/package.json +77 -0
  26. package/src/core/components/README.md +249 -0
  27. package/src/core/components/board/BoardView.tsx +352 -0
  28. package/src/core/components/board/GameBoard.tsx +682 -0
  29. package/src/core/components/board/index.ts +70 -0
  30. package/src/core/components/board/useAnchorGrid.ts +110 -0
  31. package/src/core/components/board/useClickController.ts +436 -0
  32. package/src/core/components/board/useDragController.ts +1051 -0
  33. package/src/core/components/board/usePieceState.ts +178 -0
  34. package/src/core/components/board/utils.ts +76 -0
  35. package/src/core/components/index.ts +33 -0
  36. package/src/core/components/pieces/BlueprintRing.tsx +238 -0
  37. package/src/core/config/config.ts +85 -0
  38. package/src/core/domain/blueprints.ts +25 -0
  39. package/src/core/domain/layout.ts +159 -0
  40. package/src/core/domain/primitives.ts +159 -0
  41. package/src/core/domain/solve.ts +184 -0
  42. package/src/core/domain/types.ts +111 -0
  43. package/src/core/engine/collision/grid-snapping.ts +283 -0
  44. package/src/core/engine/collision/index.ts +4 -0
  45. package/src/core/engine/collision/sat-collision.ts +46 -0
  46. package/src/core/engine/collision/validation.ts +166 -0
  47. package/src/core/engine/geometry/bounds.ts +91 -0
  48. package/src/core/engine/geometry/collision.ts +64 -0
  49. package/src/core/engine/geometry/index.ts +19 -0
  50. package/src/core/engine/geometry/math.ts +101 -0
  51. package/src/core/engine/geometry/pieces.ts +290 -0
  52. package/src/core/engine/geometry/polygons.ts +43 -0
  53. package/src/core/engine/state/BaseGameController.ts +368 -0
  54. package/src/core/engine/validation/border-rendering.ts +318 -0
  55. package/src/core/engine/validation/complete.ts +102 -0
  56. package/src/core/engine/validation/face-to-face.ts +217 -0
  57. package/src/core/index.ts +3 -0
  58. package/src/core/io/InteractionTracker.ts +742 -0
  59. package/src/core/io/data-tracking.ts +271 -0
  60. package/src/core/io/json-to-tangram-spec.ts +110 -0
  61. package/src/core/io/quickstash.ts +141 -0
  62. package/src/core/io/stims.ts +110 -0
  63. package/src/core/types/index.ts +5 -0
  64. package/src/core/types/plugin-interfaces.ts +101 -0
  65. package/src/index.spec.ts +19 -0
  66. package/src/index.ts +2 -0
  67. package/src/plugins/tangram-construct/ConstructionApp.tsx +105 -0
  68. package/src/plugins/tangram-construct/index.ts +156 -0
  69. package/src/plugins/tangram-prep/PrepApp.tsx +182 -0
  70. package/src/plugins/tangram-prep/index.ts +122 -0
  71. package/tangram-construct.min.js +42 -0
  72. package/tangram-prep.min.js +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.min.js","sources":["../../node_modules/react/cjs/react.production.js","../../node_modules/react/index.js","../../node_modules/scheduler/cjs/scheduler.production.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/cjs/react-dom-client.production.js","../../node_modules/react-dom/client.js","../../src/core/config/config.ts","../../src/core/domain/blueprints.ts","../../src/core/engine/state/BaseGameController.ts","../../src/core/engine/geometry/math.ts","../../src/core/engine/geometry/collision.ts","../../src/core/engine/geometry/bounds.ts","../../src/core/engine/geometry/pieces.ts","../../src/core/domain/solve.ts","../../src/core/domain/layout.ts","../../src/core/engine/validation/border-rendering.ts","../../src/core/components/board/BoardView.tsx","../../src/core/engine/validation/complete.ts","../../src/core/components/board/utils.ts","../../src/core/components/board/usePieceState.ts","../../src/core/engine/collision/grid-snapping.ts","../../src/core/components/board/useAnchorGrid.ts","../../src/core/engine/validation/face-to-face.ts","../../src/core/components/board/useDragController.ts","../../src/core/components/board/useClickController.ts","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../src/core/io/InteractionTracker.ts","../../src/core/components/board/GameBoard.tsx","../../src/core/domain/primitives.ts","../../src/core/io/quickstash.ts","../../src/plugins/tangram-prep/PrepApp.tsx","../../src/plugins/tangram-prep/index.ts"],"sourcesContent":["/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n var dispatcher = ReactSharedInternals.H;\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.1\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 4194048;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextTransitionLane() {\n var lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n 0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n return lane;\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$5 = 31 - clz32(remainingLanes),\n lane = 1 << index$5;\n entanglements[index$5] = 0;\n expirationTimes[index$5] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$5];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$5] = null, index$5 = 0;\n index$5 < hiddenUpdatesForLane.length;\n index$5++\n ) {\n var update = hiddenUpdatesForLane[index$5];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$6 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$6;\n (lane & entangledLanes) | (root[index$6] & entangledLanes) &&\n (root[index$6] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentSuspenseInstance(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentSuspenseInstance(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[: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]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$8 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$9) {\n control = x$9;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$10) {\n control = x$10;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\";\n do\n (info += describeFiber(workInProgress)),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\",\n descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n ),\n currentValue = \"\" + node[valueField];\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n )\n return;\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$282;\n if (canUseDOM) {\n var isSupported$jscomp$inline_417 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_417) {\n var element$jscomp$inline_418 = document.createElement(\"div\");\n element$jscomp$inline_418.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_417 =\n \"function\" === typeof element$jscomp$inline_418.oninput;\n }\n JSCompiler_inline_result$jscomp$282 = isSupported$jscomp$inline_417;\n } else JSCompiler_inline_result$jscomp$282 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$282 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle 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(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(formatProdErrorMessage(418, \"\"));\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n track(instance);\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children),\n track(instance);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n a: {\n fiber = fiber.nextSibling;\n for (tag = 0; fiber; ) {\n if (8 === fiber.nodeType)\n if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n if (0 === tag) {\n nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n break a;\n }\n tag--;\n } else\n (\"$\" !== JSCompiler_temp &&\n \"$!\" !== JSCompiler_temp &&\n \"$?\" !== JSCompiler_temp) ||\n tag++;\n fiber = fiber.nextSibling;\n }\n nextHydratableInstance = null;\n }\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter$1 = 0,\n thenableState$1 = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter$1 = 0;\n thenableState$1 = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n thenableIndexCounter$1 = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter$1 = localIdCounter = 0;\n thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n thenable = trackUsedThenable(thenableState$1, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$32 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$32 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$32 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$32 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n updateEffectImpl(2048, 8, create, [subscribe]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 124) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$38) {\n onActionError(actionQueue, node, error$38);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((createDeps = create.next),\n (create.next = tag),\n (tag.next = createDeps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction createEffectInstance() {\n return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n var hook = mountWorkInProgressHook();\n createDeps = void 0 === createDeps ? null : createDeps;\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n createEffectInstance(),\n create,\n createDeps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, createDeps) {\n mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (0 === (renderLanes & 42))\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop$2\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$41 = enqueueUpdate(provider, fiber, lane);\n null !== root$41 &&\n (scheduleUpdateOnFiber(root$41, provider, lane),\n entangleTransitions(root$41, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n },\n HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 124) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"\\u00ab\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"\\u00bb\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"\\u00ab\" +\n identifierPrefix +\n \"r\" +\n JSCompiler_inline_result.toString(32) +\n \"\\u00bb\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n },\n HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n },\n thenableState = null,\n thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction resolveLazy(lazyType) {\n var init = lazyType._init;\n return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return createChild(returnFiber, newChild, lanes);\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n if (22 === fiber.tag) {\n if (\n (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary)\n ) {\n var current = fiber.alternate;\n null !== current &&\n null !== current.memoizedState &&\n (shellBoundary = fiber);\n }\n } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n \"$?\" === state.data ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n nextProps =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextChildren = workInProgress.child = current.child;\n for (prevState = 0; null !== nextChildren; )\n (prevState =\n prevState | nextChildren.lanes | nextChildren.childLanes),\n (nextChildren = nextChildren.sibling);\n workInProgress.childLanes = prevState & ~nextProps;\n } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (workInProgress.lanes = workInProgress.childLanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n return null;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n if (isHydrating) {\n var nextInstance = nextHydratableInstance,\n JSCompiler_temp$jscomp$0;\n if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n c: {\n JSCompiler_temp$jscomp$0 = nextInstance;\n for (\n nextInstance = rootOrSingletonContext;\n 8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n ) {\n if (!nextInstance) {\n nextInstance = null;\n break c;\n }\n JSCompiler_temp$jscomp$0 = getNextHydratable(\n JSCompiler_temp$jscomp$0.nextSibling\n );\n if (null === JSCompiler_temp$jscomp$0) {\n nextInstance = null;\n break c;\n }\n }\n nextInstance = JSCompiler_temp$jscomp$0;\n }\n null !== nextInstance\n ? ((workInProgress.memoizedState = {\n dehydrated: nextInstance,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n 18,\n null,\n null,\n 0\n )),\n (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n (JSCompiler_temp$jscomp$0.return = workInProgress),\n (workInProgress.child = JSCompiler_temp$jscomp$0),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (JSCompiler_temp$jscomp$0 = !0))\n : (JSCompiler_temp$jscomp$0 = !1);\n }\n JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n }\n nextInstance = workInProgress.memoizedState;\n if (\n null !== nextInstance &&\n ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n )\n return (\n isSuspenseInstanceFallback(nextInstance)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912),\n null\n );\n popSuspenseHandler(workInProgress);\n }\n nextInstance = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextInstance = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextInstance },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextInstance.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextInstance.sibling = nextProps),\n (workInProgress.child = nextInstance),\n (showFallback = workInProgress.child),\n (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n }\n JSCompiler_temp$jscomp$0 = current.memoizedState;\n if (\n null !== JSCompiler_temp$jscomp$0 &&\n ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n null !== nextInstance)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n nextInstance\n )),\n (showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2),\n (nextProps.return = workInProgress),\n (showFallback.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = showFallback));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextInstance))\n ) {\n JSCompiler_temp =\n nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = renderLanes & -renderLanes),\n (nextProps =\n 0 !== (nextProps & 42)\n ? 1\n : getBumpedLaneForHydrationByLane(nextProps)),\n (nextProps =\n 0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n ? 0\n : nextProps),\n 0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n )\n throw (\n ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n \"$?\" === nextInstance.data\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = JSCompiler_temp$jscomp$0.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextInstance.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n ((idStack[idStackIndex++] = treeContextId),\n (idStack[idStackIndex++] = treeContextOverflow),\n (idStack[idStackIndex++] = treeContextProvider),\n (treeContextId = current.id),\n (treeContextOverflow = current.overflow),\n (treeContextProvider = workInProgress)),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (JSCompiler_temp$jscomp$0 = current.child),\n (digest = JSCompiler_temp$jscomp$0.sibling),\n (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags =\n JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),\n null !== digest\n ? (showFallback = createWorkInProgress(digest, showFallback))\n : ((showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2)),\n (showFallback.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n (nextProps = showFallback),\n (showFallback = workInProgress.child),\n (nextInstance = current.child.memoizedState),\n null === nextInstance\n ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n null !== JSCompiler_temp$jscomp$0\n ? ((digest = CacheContext._currentValue),\n (JSCompiler_temp$jscomp$0 =\n JSCompiler_temp$jscomp$0.parent !== digest\n ? { parent: digest, pool: digest }\n : JSCompiler_temp$jscomp$0))\n : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n (nextInstance = {\n baseLanes: nextInstance.baseLanes | renderLanes,\n cachePool: JSCompiler_temp$jscomp$0\n })),\n (showFallback.memoizedState = nextInstance),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n offscreenProps.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n };\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n nextProps = suspenseStackCursor.current;\n if (0 !== (nextProps & 2))\n (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n else {\n if (null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n nextProps &= 1;\n }\n push(suspenseStackCursor, nextProps);\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode\n );\n break;\n case \"backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode\n );\n break;\n case \"together\":\n initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 13:\n var state = workInProgress.memoizedState;\n if (null !== state) {\n if (null !== state.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state = 0 !== (renderLanes & workInProgress.childLanes);\n state ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state) break;\n else return null;\n case 22:\n case 23:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(current, workInProgress, renderLanes)\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n current = workInProgress.pendingProps;\n var lazyComponent = workInProgress.elementType,\n init = lazyComponent._init;\n lazyComponent = init(lazyComponent._payload);\n workInProgress.type = lazyComponent;\n if (\"function\" === typeof lazyComponent)\n shouldConstruct(lazyComponent)\n ? ((current = resolveClassComponentProps(lazyComponent, current)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )));\n else {\n if (void 0 !== lazyComponent && null !== lazyComponent)\n if (\n ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n ) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n } else if (init === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n }\n workInProgress =\n getComponentNameFromType(lazyComponent) || lazyComponent;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (lazyComponent = workInProgress.type),\n (init = resolveClassComponentProps(\n lazyComponent,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n lazyComponent,\n init,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n lazyComponent = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n init = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, lazyComponent, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n lazyComponent = nextState.cache;\n pushProvider(workInProgress, CacheContext, lazyComponent);\n lazyComponent !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n lazyComponent = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: lazyComponent,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n );\n break a;\n } else if (lazyComponent !== init) {\n init = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError(init);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (lazyComponent === init) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n );\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (lazyComponent = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (lazyComponent[internalInstanceKey] = workInProgress),\n (lazyComponent[internalPropsKey] = current),\n setInitialProperties(lazyComponent, renderLanes, current),\n markNodeAsHoistable(lazyComponent),\n (workInProgress.stateNode = lazyComponent))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((lazyComponent = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n (init = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = init),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n )))\n : (nextHydratableInstance = init)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if ((init = lazyComponent = nextHydratableInstance))\n (lazyComponent = canHydrateInstance(\n lazyComponent,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== lazyComponent\n ? ((workInProgress.stateNode = lazyComponent),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n )),\n (rootOrSingletonContext = !1),\n (init = !0))\n : (init = !1);\n init || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n init = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n lazyComponent = prevState.children;\n shouldSetTextContent(init, prevState)\n ? (lazyComponent = null)\n : null !== nextState &&\n shouldSetTextContent(init, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n ((init = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = init));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (lazyComponent = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n ))\n : reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n ),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (lazyComponent = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 9:\n return (\n (init = workInProgress.type._context),\n (lazyComponent = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n (init = readContext(init)),\n (lazyComponent = lazyComponent(init)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return (\n (lazyComponent = workInProgress.pendingProps),\n (renderLanes = workInProgress.mode),\n (lazyComponent = {\n mode: lazyComponent.mode,\n children: lazyComponent.children\n }),\n null === current\n ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n lazyComponent,\n renderLanes\n )),\n (renderLanes.ref = workInProgress.ref),\n (workInProgress.child = renderLanes),\n (renderLanes.return = workInProgress),\n (workInProgress = renderLanes))\n : ((renderLanes = createWorkInProgress(current.child, lazyComponent)),\n (renderLanes.ref = workInProgress.ref),\n (workInProgress.child = renderLanes),\n (renderLanes.return = workInProgress),\n (workInProgress = renderLanes)),\n workInProgress\n );\n case 22:\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (lazyComponent = readContext(CacheContext)),\n null === current\n ? ((init = peekCacheFromPool()),\n null === init &&\n ((init = workInProgressRoot),\n (prevState = createCache()),\n (init.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && (init.pooledCacheLanes |= renderLanes),\n (init = prevState)),\n (workInProgress.memoizedState = {\n parent: lazyComponent,\n cache: init\n }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, init))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n (init = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n init.parent !== lazyComponent\n ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n (workInProgress.memoizedState = init),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n init),\n pushProvider(workInProgress, CacheContext, lazyComponent))\n : ((lazyComponent = prevState.cache),\n pushProvider(workInProgress, CacheContext, lazyComponent),\n lazyComponent !== init.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n resource = suspenseHandlerStackCursor.current;\n if (\n null !== resource &&\n ((workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null !== shellBoundary\n : ((workInProgressRootRenderLanes & 62914560) !==\n workInProgressRootRenderLanes &&\n 0 === (workInProgressRootRenderLanes & 536870912)) ||\n resource !== shellBoundary)\n )\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n workInProgress.flags |= 8192;\n }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$113 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$113 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$113\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$113.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$114 = completedWork.child; null !== child$114; )\n (newChildLanes |= child$114.lanes | child$114.childLanes),\n (subtreeFlags |= child$114.subtreeFlags & 65011712),\n (subtreeFlags |= child$114.flags & 65011712),\n (child$114.return = completedWork),\n (child$114 = child$114.sibling);\n else\n for (child$114 = completedWork.child; null !== child$114; )\n (newChildLanes |= child$114.lanes | child$114.childLanes),\n (subtreeFlags |= child$114.subtreeFlags),\n (subtreeFlags |= child$114.flags),\n (child$114.return = completedWork),\n (child$114 = child$114.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 31:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n return (\n (renderLanes = workInProgress.memoizedState),\n null === current\n ? (markUpdate(workInProgress),\n null !== renderLanes\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)))\n : renderLanes\n ? renderLanes !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)),\n null\n );\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n var type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n renderLanes = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, current);\n else {\n type = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (current) {\n case 1:\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case 2:\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n default:\n switch (renderLanes) {\n case \"svg\":\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case \"math\":\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n case \"script\":\n current = type.createElement(\"div\");\n current.innerHTML = \"<script>\\x3c/script>\";\n current = current.removeChild(current.firstChild);\n break;\n case \"select\":\n current =\n \"string\" === typeof newProps.is\n ? type.createElement(\"select\", { is: newProps.is })\n : type.createElement(\"select\");\n newProps.multiple\n ? (current.multiple = !0)\n : newProps.size && (current.size = newProps.size);\n break;\n default:\n current =\n \"string\" === typeof newProps.is\n ? type.createElement(renderLanes, { is: newProps.is })\n : type.createElement(renderLanes);\n }\n }\n current[internalInstanceKey] = workInProgress;\n current[internalPropsKey] = newProps;\n a: for (type = workInProgress.child; null !== type; ) {\n if (5 === type.tag || 6 === type.tag)\n current.appendChild(type.stateNode);\n else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n type.child.return = type;\n type = type.child;\n continue;\n }\n if (type === workInProgress) break a;\n for (; null === type.sibling; ) {\n if (null === type.return || type.return === workInProgress)\n break a;\n type = type.return;\n }\n type.sibling.return = type.return;\n type = type.sibling;\n }\n workInProgress.stateNode = current;\n a: switch (\n (setInitialProperties(current, renderLanes, newProps), renderLanes)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n current = !!newProps.autoFocus;\n break a;\n case \"img\":\n current = !0;\n break a;\n default:\n current = !1;\n }\n current && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n workInProgress.flags &= -16777217;\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n if (renderLanes) {\n newProps = workInProgress.child;\n type = null;\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool);\n var cache$127 = null;\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (cache$127 = newProps.memoizedState.cachePool.pool);\n cache$127 !== type && (newProps.flags |= 2048);\n }\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n type = workInProgress.memoizedState;\n if (null === type) return bubbleProperties(workInProgress), null;\n newProps = 0 !== (workInProgress.flags & 128);\n cache$127 = type.rendering;\n if (null === cache$127)\n if (newProps) cutOffTailIfNeeded(type, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n cache$127 = findFirstSuspended(current);\n if (null !== cache$127) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(type, !1);\n current = cache$127.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== type.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (newProps = !0),\n cutOffTailIfNeeded(type, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!newProps)\n if (((current = findFirstSuspended(cache$127)), null !== current)) {\n if (\n ((workInProgress.flags |= 128),\n (newProps = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(type, !0),\n null === type.tail &&\n \"hidden\" === type.tailMode &&\n !cache$127.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - type.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (newProps = !0),\n cutOffTailIfNeeded(type, !1),\n (workInProgress.lanes = 4194304));\n type.isBackwards\n ? ((cache$127.sibling = workInProgress.child),\n (workInProgress.child = cache$127))\n : ((current = type.last),\n null !== current\n ? (current.sibling = cache$127)\n : (workInProgress.child = cache$127),\n (type.last = cache$127));\n }\n if (null !== type.tail)\n return (\n (workInProgress = type.tail),\n (type.rendering = workInProgress),\n (type.tail = workInProgress.sibling),\n (type.renderingStartTime = now()),\n (workInProgress.sibling = null),\n (current = suspenseStackCursor.current),\n push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n workInProgress\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$143) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$143);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1024) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset,\n JSCompiler_temp.elementType === JSCompiler_temp.type\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$142) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$142\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearSuspenseBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n retryCache.has(wakeable) ||\n (retryCache.add(wakeable), wakeable.then(retry, retry));\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13878)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$144 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$144, \"\"), (hostParentFiber.flags &= -33));\n var before$145 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$145, parent$144);\n break;\n case 3:\n case 4:\n var parent$146 = hostParentFiber.stateNode.containerInfo,\n before$147 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$147,\n parent$146\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256)\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(fiber);\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(fiber);\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(fiber);\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(fiber),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(fiber));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(fiber);\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n if (null !== ReactSharedInternals.T) {\n var actionScopeLane = currentEntangledLane;\n return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n }\n return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n 0 === workInProgressDeferredLane &&\n (workInProgressDeferredLane =\n 0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n ? claimNextTransitionLane()\n : 536870912);\n var suspenseHandler = suspenseHandlerStackCursor.current;\n null !== suspenseHandler && (suspenseHandler.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 124) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n 2,\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n 0,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n )\n if (\n ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n accumulateSuspenseyCommitOnFiber(finishedWork),\n (suspendedCommitReason = waitForCommitToBeReady()),\n null !== suspendedCommitReason)\n ) {\n root.cancelPendingCommit = suspendedCommitReason(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n 1,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$4 = 31 - clz32(lanes),\n lane = 1 << index$4;\n didAttemptEntireTree[index$4] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState = null),\n (thenableIndexCounter = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$2 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$2;\n lanes |= root[index$2];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (resource ? preloadResource(resource) : 1) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$169) {\n handleThrow(root, thrownValue$169);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState = null;\n thenableIndexCounter = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects(!0);\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$174 = firstScheduledRoot; null !== root$174; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$174.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$174.suspendedLanes,\n pingedLanes = root$174.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$174,\n root$174 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$174.cancelPendingCommit ||\n -1 !== root$174.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$174, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n root$174 = root$174.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n (shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane),\n (currentEventTransitionLane = 0));\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$3 = 31 - clz32(lanes),\n lane = 1 << index$3,\n expirationTime = expirationTimes[index$3];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$3] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n 0 === currentEventTransitionLane &&\n (currentEventTransitionLane = claimNextTransitionLane());\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1528 = 0;\n i$jscomp$inline_1528 < simpleEventPluginEvents.length;\n i$jscomp$inline_1528++\n) {\n var eventName$jscomp$inline_1529 =\n simpleEventPluginEvents[i$jscomp$inline_1528],\n domEventName$jscomp$inline_1530 =\n eventName$jscomp$inline_1529.toLowerCase(),\n capitalizedEvent$jscomp$inline_1531 =\n eventName$jscomp$inline_1529[0].toUpperCase() +\n eventName$jscomp$inline_1529.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1530,\n \"on\" + capitalizedEvent$jscomp$inline_1531\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"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(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = SyntheticEventCtor;\n reactEventName = reactEventType;\n instance = 0;\n for (\n lastHostComponent = inCapturePhase;\n lastHostComponent;\n lastHostComponent = getParent(lastHostComponent)\n )\n instance++;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = getParent(_instance)\n )\n lastHostComponent++;\n for (; 0 < instance - lastHostComponent; )\n (inCapturePhase = getParent(inCapturePhase)), instance--;\n for (; 0 < lastHostComponent - instance; )\n (reactEventName = getParent(reactEventName)),\n lastHostComponent--;\n for (; instance--; ) {\n if (\n inCapturePhase === reactEventName ||\n (null !== reactEventName &&\n inCapturePhase === reactEventName.alternate)\n )\n break b;\n inCapturePhase = getParent(inCapturePhase);\n reactEventName = getParent(reactEventName);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$188 = props[hasSrc];\n if (null != propValue$188)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$188;\n break;\n case \"type\":\n propValue = propValue$188;\n break;\n case \"checked\":\n checked = propValue$188;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$188;\n break;\n case \"value\":\n propKey = propValue$188;\n break;\n case \"defaultValue\":\n defaultValue = propValue$188;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$188)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$188, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n track(domElement);\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n track(domElement);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$188 in props)\n props.hasOwnProperty(propValue$188) &&\n ((hasSrc = props[propValue$188]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$188,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$205 in nextProps) {\n var propKey = nextProps[propKey$205];\n lastProp = lastProps[propKey$205];\n if (\n nextProps.hasOwnProperty(propKey$205) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$205) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$205,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$205 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$205 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$205\n ? updateOptions(domElement, !!lastProps, propKey$205, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$205 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$205 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$205, propKey);\n return;\n case \"option\":\n for (var propKey$221 in lastProps)\n if (\n ((propKey$205 = lastProps[propKey$221]),\n lastProps.hasOwnProperty(propKey$221) &&\n null != propKey$205 &&\n !nextProps.hasOwnProperty(propKey$221))\n )\n switch (propKey$221) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$221,\n null,\n nextProps,\n propKey$205\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$205 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$205 !== propKey &&\n (null != propKey$205 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$205 &&\n \"function\" !== typeof propKey$205 &&\n \"symbol\" !== typeof propKey$205;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$205,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$226 in lastProps)\n (propKey$205 = lastProps[propKey$226]),\n lastProps.hasOwnProperty(propKey$226) &&\n null != propKey$205 &&\n !nextProps.hasOwnProperty(propKey$226) &&\n setProp(domElement, tag, propKey$226, null, nextProps, propKey$205);\n for (checked in nextProps)\n if (\n ((propKey$205 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$205 !== propKey &&\n (null != propKey$205 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$205)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$205,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$231 in lastProps)\n (propKey$205 = lastProps[propKey$231]),\n lastProps.hasOwnProperty(propKey$231) &&\n void 0 !== propKey$205 &&\n !nextProps.hasOwnProperty(propKey$231) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$231,\n void 0,\n nextProps,\n propKey$205\n );\n for (defaultChecked in nextProps)\n (propKey$205 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$205 === propKey ||\n (void 0 === propKey$205 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$205,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$236 in lastProps)\n (propKey$205 = lastProps[propKey$236]),\n lastProps.hasOwnProperty(propKey$236) &&\n null != propKey$205 &&\n !nextProps.hasOwnProperty(propKey$236) &&\n setProp(domElement, tag, propKey$236, null, nextProps, propKey$205);\n for (lastProp in nextProps)\n (propKey$205 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$205 === propKey ||\n (null == propKey$205 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$205, nextProps, propKey);\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n var node = suspenseInstance,\n possiblePreambleContribution = 0,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node)) {\n if (\n 0 < possiblePreambleContribution &&\n 8 > possiblePreambleContribution\n ) {\n node = possiblePreambleContribution;\n var ownerDocument = parentInstance.ownerDocument;\n node & 1 && releaseSingletonInstance(ownerDocument.documentElement);\n node & 2 && releaseSingletonInstance(ownerDocument.body);\n if (node & 4)\n for (\n node = ownerDocument.head,\n releaseSingletonInstance(node),\n ownerDocument = node.firstChild;\n ownerDocument;\n\n ) {\n var nextNode$jscomp$0 = ownerDocument.nextSibling,\n nodeName = ownerDocument.nodeName;\n ownerDocument[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === ownerDocument.rel.toLowerCase()) ||\n node.removeChild(ownerDocument);\n ownerDocument = nextNode$jscomp$0;\n }\n }\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(suspenseInstance);\n return;\n }\n depth--;\n } else\n \"$\" === node || \"$?\" === node || \"$!\" === node\n ? depth++\n : (possiblePreambleContribution = node.charCodeAt(0) - 48);\n else possiblePreambleContribution = 0;\n node = nextNode;\n } while (node);\n retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"complete\" === instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$?\" !== instance.data || \"complete\" === ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getParentSuspenseInstance(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n if (0 === depth) return targetInstance;\n depth--;\n } else \"/$\" === data && depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$244 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$245 = styles$244.get(type);\n resource$245 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$245 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$244.set(type, resource$245),\n (styles$244 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$244._p &&\n ((resource$245.instance = styles$244),\n (resource$245.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$244 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$245.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$245;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$250 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$250)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$250),\n markNodeAsHoistable(instance$250),\n instance$250\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$250 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$250);\n var linkInstance = instance$250;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$250, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$250, props.precedence, hoistableRoot);\n return (resource.instance = instance$250);\n case \"script\":\n instance$250 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$250)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$250)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n var state = suspendedState;\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nfunction waitForCommitToBeReady() {\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n var state = suspendedState;\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4);\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count)\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n formState\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"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\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n if (13 === nearestMounted.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n null !== root &&\n scheduleUpdateOnFiber(root, nearestMounted, lane);\n markRetryLaneIfNotHydrated(nearestMounted, lane);\n }\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1785 = React.version;\nif (\n \"19.1.1\" !==\n isomorphicReactPackageVersion$jscomp$inline_1785\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1785,\n \"19.1.1\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2256 = {\n bundleType: 0,\n version: \"19.1.1\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.1.1\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2257 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2257.isDisabled &&\n hook$jscomp$inline_2257.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2257.inject(\n internals$jscomp$inline_2256\n )),\n (injectedHook = hook$jscomp$inline_2257);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n transitionCallbacks = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.unstable_transitionCallbacks &&\n (transitionCallbacks = options.unstable_transitionCallbacks));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n null\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n transitionCallbacks = null,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.unstable_transitionCallbacks &&\n (transitionCallbacks = options.unstable_transitionCallbacks),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n formState\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.1.1\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","// src/core/config/config.ts\nexport type Config = {\n color: {\n bands: {\n silhouette: { fillEven: string; fillOdd: string; stroke: string };\n workspace: { fillEven: string; fillOdd: string; stroke: string };\n };\n completion: { fill: string; stroke: string };\n silhouetteMask: string;\n anchors: { invalid: string; valid: string };\n piece: { draggingFill: string; validFill: string; invalidFill: string; invalidStroke: string; selectedStroke: string; allGreenStroke: string; borderStroke: string };\n ui: { light: string; dark: string };\n blueprint: { fill: string; selectedStroke: string; badgeFill: string; labelFill: string };\n };\n opacity: {\n blueprint: number;\n silhouetteMask: number;\n anchors: { invalid: number; valid: number };\n piece: { invalid: number; dragging: number; locked: number; normal: number };\n };\n size: {\n stroke: { bandPx: number; pieceSelectedPx: number; allGreenStrokePx: number; pieceBorderPx: number };\n anchorRadiusPx: { valid: number; invalid: number };\n badgeFontPx: number;\n centerBadge: { fractionOfOuterR: number; minPx: number; marginPx: number };\n };\n layout: {\n grid: { stepPx: number; unitPx: number };\n paddingPx: number;\n /** renamed from capacity → constraints */\n constraints: {\n workspaceDiamAnchors: number;\n quickstashDiamAnchors: number;\n primitiveDiamAnchors: number;\n };\n defaults: { maxQuickstashSlots: number };\n };\n game: {\n snapRadiusPx: number;\n showBorders: boolean;\n hideTouchingBorders: boolean;\n };\n};\n\nexport const CONFIG: Config = {\n color: {\n bands: {\n silhouette: { fillEven: \"#eef2ff\", fillOdd: \"#f6f7fb\", stroke: \"#c7d2fe\" },\n workspace: { fillEven: \"#f3f4f6\", fillOdd: \"#f9fafb\", stroke: \"#e5e7eb\" }\n },\n completion: { fill: \"#dcfce7\", stroke: \"#86efac\" },\n silhouetteMask: \"#94a3b8\",\n anchors: { invalid: \"#7dd3fc\", valid: \"#475569\" },\n piece: { draggingFill: \"#1d4ed8\", validFill: \"#60a5fa\", invalidFill: \"#ef4444\", invalidStroke: \"#dc2626\", selectedStroke: \"#111827\", allGreenStroke: \"#86efac\", borderStroke: \"#374151\" },\n ui: { light: \"#60a5fa\", dark: \"#1d4ed8\" },\n blueprint: { fill: \"#374151\", selectedStroke: \"#111827\", badgeFill: \"#eef2ff\", labelFill: \"#374151\" }\n },\n opacity: {\n blueprint: 0.95,\n silhouetteMask: 0.45,\n anchors: { valid: 0.80, invalid: 0.50 },\n piece: { invalid: 0.35, dragging: 0.60, locked: 0.70, normal: 0.95 },\n },\n size: {\n stroke: { bandPx: 1, pieceSelectedPx: 1.5, allGreenStrokePx: 6, pieceBorderPx: 1 },\n anchorRadiusPx: { valid: 1.0, invalid: 1.0 },\n badgeFontPx: 12,\n centerBadge: { fractionOfOuterR: 0.15, minPx: 20, marginPx: 4 }\n },\n layout: {\n grid: { stepPx: 20, unitPx: 40 },\n paddingPx: 1,\n constraints: {\n workspaceDiamAnchors: 10, // num anchors req'd to be on diagonal\n quickstashDiamAnchors: 7, // num anchors req'd to be in single quickstash slot\n primitiveDiamAnchors: 5,\n },\n defaults: { maxQuickstashSlots: 1 }\n },\n game: {\n snapRadiusPx: 15,\n showBorders: true,\n hideTouchingBorders: true\n }\n};","import type {\n Blueprint, PrimitiveBlueprint, CompositeBlueprint, TanKind\n} from \"./types\";\n\nexport function isComposite(bp: Blueprint): bp is CompositeBlueprint {\n return (bp as CompositeBlueprint).parts !== undefined;\n}\nexport function isPrimitive(bp: Blueprint): bp is PrimitiveBlueprint {\n return !isComposite(bp);\n}\n\nexport class BlueprintRegistry {\n private byId = new Map<string, Blueprint>();\n private primitivesByKind = new Map<TanKind, PrimitiveBlueprint>();\n\n registerAll(bps: Blueprint[]) {\n for (const bp of bps) this.register(bp);\n }\n register(bp: Blueprint) {\n this.byId.set(bp.id, bp);\n if (isPrimitive(bp)) this.primitivesByKind.set(bp.kind, bp);\n }\n get(id: string) { return this.byId.get(id); }\n getPrimitive(kind: TanKind | string) { return this.primitivesByKind.get(kind as TanKind); }\n}\n","/**\n * BaseGameController with dependency injection - PHASE 2 MILESTONE\n * \n * Maintains compatibility with existing RoundController API while implementing\n * clean separation between configuration and data. All game content is injected\n * via constructor parameters, no hardcoded defaults.\n */\n\nimport type { \n Blueprint, \n Sector, \n LayoutMode,\n PlacementTarget,\n InputMode,\n RoundState,\n SectorState,\n TanKind,\n PrimitiveBlueprint\n} from '../../domain/types';\nimport { CONFIG } from '../../config/config';\nimport { BlueprintRegistry } from '../../domain/blueprints';\n\nexport interface GameConfig {\n n: number;\n layout: LayoutMode;\n target: PlacementTarget; // CRITICAL: \"workspace\" | \"silhouette\"\n input: InputMode; // CRITICAL: \"click\" | \"drag\"\n timeLimitMs: number;\n maxQuickstashSlots: number;\n maxCompositeSize?: number; // Optional - only used in prep mode\n mode: \"construction\" | \"prep\"; // NEW: Distinguishes prep vs construction behavior\n minPiecesPerMacro?: number; // NEW: Minimum pieces required per macro (prep mode)\n requireAllSlots?: boolean; // NEW: Whether all slots must be filled (prep mode)\n}\n\nlet PID = 0;\nconst newId = () => `p_${++PID}`;\nconst NOW = () => performance.now();\n\n// Event tracking callbacks (optional - set by InteractionTracker)\nexport interface TrackingCallbacks {\n onPiecePickup?: (pieceId: string, blueprintId: string, blueprintType: 'primitive' | 'composite', source: 'blueprint' | 'sector', position: { x: number; y: number }, vertices: number[][][], sectorId?: string) => void;\n onPiecePlacedown?: (outcome: 'placed' | 'deleted', sectorId?: string, position?: { x: number; y: number }, vertices?: number[][][], anchorId?: string, wasValid?: boolean, wasOverlapping?: boolean) => void;\n onClickEvent?: (location: { x: number; y: number }, anchorX: number, anchorY: number, clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt', metadata?: any) => void;\n onMouseMove?: (anchorX: number, anchorY: number, sectorId?: string) => void;\n onSectorCompleted?: (sectorId: string) => void;\n}\n\nexport class BaseGameController {\n // Core data - injected, not hardcoded\n private sectors: Sector[];\n private quickstash: Blueprint[];\n private primitives: PrimitiveBlueprint[];\n\n // Configuration\n private config: GameConfig;\n\n // State and registry\n public state: RoundState;\n private t0: number;\n private registry = new BlueprintRegistry();\n\n // React state update tracking\n private _updateCount = 0;\n public get updateCount() { return this._updateCount; }\n private notifyStateChange() { this._updateCount++; }\n\n // Event tracking (optional)\n private trackingCallbacks: TrackingCallbacks | null = null;\n \n constructor(\n sectors: Sector[],\n quickstash: Blueprint[],\n primitives: PrimitiveBlueprint[],\n config: GameConfig\n ) {\n // Validate required inputs - fail fast\n if (!sectors || sectors.length === 0) {\n throw new Error(\"BaseGameController: sectors array is required and cannot be empty\");\n }\n if (!primitives || primitives.length === 0) {\n throw new Error(\"BaseGameController: primitives array is required and cannot be empty\");\n }\n if (!config) {\n throw new Error(\"BaseGameController: config is required\");\n }\n\n // CRITICAL: All data is injected, no defaults\n this.sectors = sectors;\n this.quickstash = quickstash || [];\n this.primitives = primitives;\n this.config = config;\n \n // Initialize registry\n this.registry.registerAll(primitives);\n this.registry.registerAll(quickstash);\n \n // Initialize state\n this.t0 = NOW();\n this.state = this.initializeState();\n }\n \n private initializeState(): RoundState {\n // Create state that matches existing RoundController structure\n const sectors: Record<string, SectorState> = {};\n for (const s of this.sectors) {\n sectors[s.id] = { sectorId: s.id, pieces: [] };\n }\n\n return {\n cfg: {\n n: this.config.n,\n layout: this.config.layout,\n target: this.config.target,\n input: this.config.input,\n maxQuickstashSlots: this.config.maxQuickstashSlots,\n timeLimitMs: this.config.timeLimitMs,\n snapRadiusPx: CONFIG.game.snapRadiusPx,\n maxCompositeSize: this.config.maxCompositeSize ?? 0, // Default to 0 for legacy compatibility\n sectors: this.sectors,\n mode: this.config.mode\n },\n blueprintView: this.config.mode === \"prep\" ? \"primitives\" : \"quickstash\", // Start with primitives in prep mode\n primitives: this.primitives,\n quickstash: this.quickstash,\n sectors,\n startedAt: this.t0\n };\n }\n\n // ===== Event Tracking =====\n // Methods for InteractionTracker integration\n\n /**\n * Set tracking callbacks for data collection\n * Called by InteractionTracker to register itself\n */\n setTrackingCallbacks(callbacks: TrackingCallbacks | null): void {\n this.trackingCallbacks = callbacks;\n }\n\n // ===== RoundController Compatibility Interface =====\n // These methods maintain compatibility with Board.tsx expectations\n\n getState(): RoundState {\n return this.state;\n }\n\n getSnapRadius(): number {\n return CONFIG.game.snapRadiusPx;\n }\n\n // CRITICAL: Preserve target and input mode access\n getTarget(): PlacementTarget {\n return this.config.target;\n }\n\n getInputMode(): InputMode {\n return this.config.input;\n }\n\n // ===== Blueprint and Piece Management =====\n // Methods that Board.tsx expects\n\n getBlueprint(id: string): Blueprint | undefined {\n return this.registry.get(id);\n }\n\n getPrimitive(kind: TanKind | string): PrimitiveBlueprint | undefined {\n return this.registry.getPrimitive(kind);\n }\n\n getPiecesInSector(sectorId: string): any[] {\n const sectorState = this.state.sectors[sectorId];\n return sectorState ? sectorState.pieces : [];\n }\n\n // ===== Completion Management =====\n // Critical for Board.tsx validation\n\n isSectorCompleted(sectorId: string): boolean {\n return !!this.state.sectors[sectorId]?.completedAt;\n }\n\n markSectorCompleted(sectorId: string): void {\n const ss = this.state.sectors[sectorId];\n if (!ss || ss.completedAt) return;\n\n ss.completedAt = NOW();\n\n // Notify tracking system\n if (this.trackingCallbacks?.onSectorCompleted) {\n this.trackingCallbacks.onSectorCompleted(sectorId);\n }\n\n const allDone = Object.values(this.state.sectors).every((s: SectorState) => !!s.completedAt);\n if (allDone && !this.state.endedAt) {\n this.state.endedAt = NOW();\n console.log(\"[BaseGameController] all sectors complete\");\n }\n }\n\n // ===== Piece Operations =====\n // Methods that Board.tsx uses for drag/drop\n\n spawnFromBlueprint(bp: Blueprint, at: { x: number; y: number }): string {\n const id = newId();\n const piece = { id, blueprintId: bp.id, pos: { ...at } };\n this.getFloating().pieces.push(piece);\n this.notifyStateChange();\n return id;\n }\n\n move(id: string, to: { x: number; y: number }): void {\n const p = this.findPiece(id);\n if (!p) {\n return;\n }\n p.pos = { ...to };\n this.notifyStateChange();\n }\n\n drop(id: string, sectorId?: string): void {\n const p = this.findPiece(id);\n if (!p) {\n return;\n }\n\n // Remove from current location\n const where = this.findPieceLocation(id);\n this.removeFromCurrent(id);\n if (where?.sectorId) delete p.sectorId;\n\n // Inner-hole or no sector → float\n if (!sectorId) {\n this.getFloating().pieces.push(p);\n this.notifyStateChange();\n return;\n }\n\n // Completed sector → delete (already removed above)\n if (this.isSectorCompleted(sectorId)) {\n this.notifyStateChange();\n return;\n }\n\n // Place in sector\n const sector = this.state.sectors[sectorId];\n if (!sector) {\n return;\n }\n \n sector.pieces.push(p);\n p.sectorId = sectorId;\n this.notifyStateChange();\n }\n\n remove(id: string): void {\n const loc = this.findPieceLocation(id);\n if (!loc) return;\n loc.array.splice(loc.index, 1);\n this.notifyStateChange();\n }\n\n // ===== Helper Methods =====\n // Internal methods that support the public API\n\n findPiece(id: string): any {\n for (const s of Object.values(this.state.sectors)) {\n const sectorState = s as SectorState;\n const p = sectorState.pieces.find((pp) => pp.id === id);\n if (p) return p;\n }\n return this.getFloating().pieces.find((pp) => pp.id === id) ?? null;\n }\n\n private getFloating(): SectorState {\n if (!(this as any)._floating) {\n (this as any)._floating = { sectorId: \"-floating-\", pieces: [] } as SectorState;\n }\n return (this as any)._floating;\n }\n\n private findPieceLocation(id: string): \n | { sectorId?: string; array: SectorState[\"pieces\"]; index: number }\n | null {\n for (const s of Object.values(this.state.sectors)) {\n const sectorState = s as SectorState;\n const idx = sectorState.pieces.findIndex((pp) => pp.id === id);\n if (idx >= 0) return { sectorId: sectorState.sectorId, array: sectorState.pieces, index: idx };\n }\n const f = this.getFloating();\n const i = f.pieces.findIndex((pp) => pp.id === id);\n return i >= 0 ? { array: f.pieces, index: i } : null;\n }\n\n private removeFromCurrent(id: string): void {\n const loc = this.findPieceLocation(id);\n if (!loc) return;\n loc.array.splice(loc.index, 1);\n }\n\n // ===== Additional Compatibility Methods =====\n\n switchBlueprintView(): void {\n // Disable toggle in prep mode - keep primitives always visible\n if (this.config.mode === \"prep\") return;\n \n const to = this.state.blueprintView === \"primitives\" ? \"quickstash\" : \"primitives\";\n this.state.blueprintView = to;\n }\n\n /**\n * Check if submit button should be enabled in prep mode\n * Validates macro completion based on piece count and slot requirements\n */\n isSubmitEnabled(): boolean {\n if (this.config.mode !== \"prep\") return true; // Not applicable to construction mode\n \n const minPieces = this.config.minPiecesPerMacro ?? 2;\n const maxPieces = this.config.maxCompositeSize ?? Infinity; // No upper limit if not specified\n const requireAll = this.config.requireAllSlots ?? false;\n \n // Get all sectors (macro slots)\n const allSectors = Object.values(this.state.sectors);\n \n // Check each sector for valid piece count\n let validSectorCount = 0;\n for (const sector of allSectors) {\n const pieceCount = sector.pieces.length;\n \n // Valid if between min and max pieces (inclusive)\n if (pieceCount >= minPieces && pieceCount <= maxPieces) {\n validSectorCount++;\n }\n // Invalid if has pieces but not enough or too many\n else if (pieceCount > 0) {\n return false; // Has pieces but invalid count\n }\n // Empty sector (pieceCount === 0) is allowed, will be checked below\n }\n \n if (requireAll) {\n // All slots must have valid macros\n return validSectorCount === allSectors.length;\n } else {\n // At least 0 valid macros (can submit nothing)\n return true; // No invalid sectors found above, so can submit\n }\n }\n\n snapshot(): any {\n const perSector = Object.values(this.state.sectors).map((s) => {\n const sectorState = s as SectorState;\n const base = {\n sectorId: sectorState.sectorId,\n pieceCount: sectorState.pieces.length,\n };\n return sectorState.completedAt ? { ...base, completedAt: sectorState.completedAt } : base;\n });\n return {\n perSector,\n events: [], // TODO: Will be implemented in validation separation phase\n timeMs: NOW() - this.t0,\n completed: !!this.state.endedAt,\n };\n }\n}","/**\n * Pure vector and polygon mathematical operations\n * No game logic dependencies - just geometric math\n */\n\nimport type { Vec, Poly } from '@/core/domain/types';\n\n// ===== Constants =====\n\nexport const EPS = 1e-6;\n\n// ===== Vector Operations =====\n\nexport const vsub = (a: Vec, b: Vec): Vec => ({ x: a.x - b.x, y: a.y - b.y });\nexport const vlen = (v: Vec) => Math.hypot(v.x, v.y);\nexport const vscale = (v: Vec, s: number): Vec => ({ x: v.x * s, y: v.y * s });\nexport const vadd = (a: Vec, b: Vec): Vec => ({ x: a.x + b.x, y: a.y + b.y });\n\n/** Squared distance between two points (faster than full distance) */\nexport const dist2 = (a: Vec, b: Vec): number => {\n const dx = a.x - b.x, dy = a.y - b.y;\n return dx * dx + dy * dy;\n};\n\n/**\n * Check if point p lies on the line segment from a to b (within epsilon tolerance)\n */\nexport function pointOnSegment(p: Vec, a: Vec, b: Vec, eps = 1e-9): boolean {\n // collinear?\n const cross = (b.y - a.y) * (p.x - a.x) - (b.x - a.x) * (p.y - a.y);\n if (Math.abs(cross) > eps) return false;\n // within bounding box?\n const minX = Math.min(a.x, b.x) - eps, maxX = Math.max(a.x, b.x) + eps;\n const minY = Math.min(a.y, b.y) - eps, maxY = Math.max(a.y, b.y) + eps;\n return p.x >= minX && p.x <= maxX && p.y >= minY && p.y <= maxY;\n}\n\n/**\n * Return an array of points subdividing the segment [a,b] into `n` equal parts (excluding `a`).\n */\nexport function subdivideSegment(a: Vec, b: Vec, n: number): Vec[] {\n if (n <= 1) return [b];\n const ab = vsub(b, a);\n const step = 1 / n;\n const pts: Vec[] = [];\n for (let i = 1; i <= n; i++) pts.push(vadd(a, vscale(ab, step * i)));\n return pts;\n}\n\n// ===== Polygon Operations =====\n\n/** Boundary-inclusive even–odd point-in-polygon test */\nexport function pointInPolygon(pt: Vec, poly: Poly): boolean {\n // 1) On-edge / on-vertex counts as inside\n for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {\n const vertexJ = poly[j];\n const vertexI = poly[i];\n if (!vertexJ || !vertexI) continue;\n if (pointOnSegment(pt, vertexJ, vertexI)) return true;\n }\n\n // 2) Standard even–odd ray casting (edges strictly above/below pivot)\n // Using the common (yi > y) !== (yj > y) test avoids counting horizontal edges twice.\n let inside = false;\n for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {\n const vertexI = poly[i];\n const vertexJ = poly[j];\n if (!vertexI || !vertexJ) continue;\n const xi = vertexI.x, yi = vertexI.y;\n const xj = vertexJ.x, yj = vertexJ.y;\n\n const intersects = (yi > pt.y) !== (yj > pt.y)\n && pt.x < ((xj - xi) * (pt.y - yi)) / (yj - yi + 1e-12) + xi;\n\n if (intersects) inside = !inside;\n }\n return inside;\n}\n\n/** Project a polygon onto axis (nx, ny) and return min/max projection values */\nexport function project(poly: Poly, nx: number, ny: number) {\n let min = Infinity, max = -Infinity;\n for (const p of poly) {\n const s = p.x * nx + p.y * ny;\n if (s < min) min = s;\n if (s > max) max = s;\n }\n return { min, max };\n}\n\n/** Calculate axis-aligned bounding box for a polygon */\nexport function polygonAABB(poly: Poly) {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const pt of poly) {\n if (pt.x < minX) minX = pt.x;\n if (pt.y < minY) minY = pt.y;\n if (pt.x > maxX) maxX = pt.x;\n if (pt.y > maxY) maxY = pt.y;\n }\n return { minX, minY, maxX, maxY };\n}\n","/**\n * SAT (Separating Axis Theorem) collision detection for convex polygons\n * Extracted from polygon.ts for better organization\n */\n\nimport type { Poly } from '@/core/domain/types';\nimport { project } from './math';\n\nconst SEP_EPS = 1e-6; // allow touching within this tolerance\n\n/** SAT for convex polygons. Edges/vertices touching are allowed (non-overlap). */\nexport function convexIntersects(a: Poly, b: Poly): boolean {\n const polys = [a, b];\n for (const poly of polys) {\n for (let i = 0; i < poly.length; i++) {\n const p0 = poly[i], p1 = poly[(i + 1) % poly.length];\n if (!p0 || !p1) continue;\n const ex = p1.x - p0.x, ey = p1.y - p0.y;\n const nx = -ey, ny = ex; // outward normal\n const pa = project(a, nx, ny);\n const pb = project(b, nx, ny);\n // Treat touching (zero overlap) as separated: allow edges/vertices to touch.\n if (pa.max <= pb.min + SEP_EPS || pb.max <= pa.min + SEP_EPS) return false;\n }\n }\n return true;\n}\n\n/** True if any poly from A overlaps any poly from B (fast AABB short-circuit). */\nexport function polysOverlap(aPolys: Poly[], bPolys: Poly[]): boolean {\n // quick AABB test to skip obvious separations\n const aabbsA = aPolys.map(p => {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const pt of p) {\n if (pt.x < minX) minX = pt.x;\n if (pt.y < minY) minY = pt.y;\n if (pt.x > maxX) maxX = pt.x;\n if (pt.y > maxY) maxY = pt.y;\n }\n return { minX, minY, maxX, maxY };\n });\n const aabbsB = bPolys.map(p => {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const pt of p) {\n if (pt.x < minX) minX = pt.x;\n if (pt.y < minY) minY = pt.y;\n if (pt.x > maxX) maxX = pt.x;\n if (pt.y > maxY) maxY = pt.y;\n }\n return { minX, minY, maxX, maxY };\n });\n\n for (let i = 0; i < aPolys.length; i++) {\n for (let j = 0; j < bPolys.length; j++) {\n const A = aPolys[i], B = bPolys[j];\n const aa = aabbsA[i], bb = aabbsB[j];\n if (!A || !B || !aa || !bb) continue;\n if (aa.maxX <= bb.minX + SEP_EPS || bb.maxX <= aa.minX + SEP_EPS ||\n aa.maxY <= bb.minY + SEP_EPS || bb.maxY <= aa.minY + SEP_EPS) continue;\n if (convexIntersects(A, B)) return true;\n }\n }\n return false;\n}\n","import type { Poly, Vec, PrimitiveBlueprint, CompositeBlueprint, Blueprint } from \"@/core/domain/types\";\n\nexport type AABB = { min: Vec; max: Vec; width: number; height: number };\n\n/** AABB of a single polygon (numeric). */\nexport function aabbOf(poly: Poly): { minX: number; minY: number; maxX: number; maxY: number } {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const p of poly) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n return { minX, minY, maxX, maxY };\n}\n\n/** AABB of one or more polygons with width/height and center. */\nexport function polysAABB(polys: Poly[]) {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const poly of polys) {\n for (const p of poly) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n }\n const width = Math.max(1, maxX - minX);\n const height = Math.max(1, maxY - minY);\n return { min: { x: minX, y: minY }, max: { x: maxX, y: maxY }, width, height, cx:(minX+maxX)/2, cy:(minY+maxY)/2 };\n}\n\n/** Bounds of multiple polygons at the origin. */\nexport function boundsOfShapes(shapes: Poly[]): AABB {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const poly of shapes) {\n for (const p of poly) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n }\n const width = Math.max(0, maxX - minX);\n const height = Math.max(0, maxY - minY);\n return { min: { x: minX, y: minY }, max: { x: maxX, y: maxY }, width, height };\n}\n\n/** Bounds of a primitive blueprint (uses its canonical shape). */\nexport function boundsOfPrimitive(bp: PrimitiveBlueprint): AABB {\n return boundsOfShapes(bp.shape);\n}\n\n/**\n * Bounds of a composite blueprint.\n * If `shape` is provided as precomputed union polygons, we use that.\n * Otherwise we bound the parts’ primitives at their offsets (loose but safe).\n */\nexport function boundsOfComposite(\n bp: CompositeBlueprint,\n primitiveLookup: (kind: string) => PrimitiveBlueprint | undefined\n): AABB {\n if (bp.shape && bp.shape.length) return boundsOfShapes(bp.shape);\n\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const part of bp.parts) {\n const prim = primitiveLookup(part.kind);\n if (!prim) continue;\n const b = boundsOfPrimitive(prim);\n const pMinX = part.offset.x + b.min.x;\n const pMinY = part.offset.y + b.min.y;\n const pMaxX = part.offset.x + b.max.x;\n const pMaxY = part.offset.y + b.max.y;\n if (pMinX < minX) minX = pMinX;\n if (pMinY < minY) minY = pMinY;\n if (pMaxX > maxX) maxX = pMaxX;\n if (pMaxY > maxY) maxY = pMaxY;\n }\n const width = Math.max(0, maxX - minX);\n const height = Math.max(0, maxY - minY);\n return { min: { x: minX, y: minY }, max: { x: maxX, y: maxY }, width, height };\n}\n\n/** Unified bounds helper. */\nexport function boundsOfBlueprint(\n bp: Blueprint,\n primitiveLookup: (kind: string) => PrimitiveBlueprint | undefined\n): AABB {\n if (\"parts\" in bp) return boundsOfComposite(bp, primitiveLookup);\n return boundsOfPrimitive(bp);\n}\n","/**\n * Game-specific piece geometry operations\n * Includes: piece positioning, placement, grid snapping, and anchor generation\n *\n * Consolidated from: piece.ts, placement.ts, grid.ts, anchors.ts\n */\n\nimport type { Blueprint, Vec, Poly, Anchor } from \"@/core/domain/types\";\nimport type { CircleLayout, SectorGeom } from \"@/core/domain/layout\";\nimport { polysAABB } from \"./bounds\";\nimport { pointInPolygon, dist2 } from \"./math\";\nimport { CONFIG } from \"@/core/config/config\";\n\nconst GRID_PX = CONFIG.layout.grid.stepPx;\n\n// ===== Piece Positioning (from piece.ts) =====\n\n/** Translate blueprint polys to world coords for a given top-left (TL). */\nexport function piecePolysAt(\n bp: Blueprint,\n bb: { min: { x: number; y: number } },\n tl: { x: number; y: number }\n) {\n const ox = tl.x - bb.min.x;\n const oy = tl.y - bb.min.y;\n const polys = (\"shape\" in bp && bp.shape) ? bp.shape : [];\n return polys.map(poly => poly.map(p => ({ x: p.x + ox, y: p.y + oy })));\n}\n\n/** Build support offsets: each vertex relative to the AABB center. */\nexport function computeSupportOffsets(\n bp: Blueprint,\n bb: { min: { x: number; y: number }; width: number; height: number }\n) {\n const cx = bb.min.x + bb.width / 2;\n const cy = bb.min.y + bb.height / 2;\n\n const polys = (\"shape\" in bp && bp.shape && bp.shape.length)\n ? bp.shape\n : [[\n { x: bb.min.x, y: bb.min.y },\n { x: bb.min.x + bb.width, y: bb.min.y },\n { x: bb.min.x + bb.width, y: bb.min.y + bb.height },\n { x: bb.min.x, y: bb.min.y + bb.height },\n ]];\n\n const offs: Vec[] = [];\n for (const poly of polys) for (const v of poly) offs.push({ x: v.x - cx, y: v.y - cy });\n return offs;\n}\n\n/** Clamp using directional vertex support → exact contact with the ring. */\nexport function clampTopLeftBySupport(\n tlx: number,\n tly: number,\n d: {\n aabb: { width: number; height: number };\n support: { x: number; y: number }[];\n },\n layout: CircleLayout,\n target: \"workspace\" | \"silhouette\",\n pointerInsideCenter: boolean\n) {\n const cx0 = tlx + d.aabb.width / 2;\n const cy0 = tly + d.aabb.height / 2;\n\n const vx = cx0 - layout.cx;\n const vy = cy0 - layout.cy;\n const r = Math.hypot(vx, vy);\n if (r === 0) return { x: tlx, y: tly };\n\n const ux = vx / r, uy = vy / r;\n\n let h_out = -Infinity, h_in = -Infinity;\n for (const o of d.support) {\n const outProj = o.x * ux + o.y * uy;\n if (outProj > h_out) h_out = outProj;\n const inProj = -(o.x * ux + o.y * uy);\n if (inProj > h_in) h_in = inProj;\n }\n\n if (target === \"workspace\") {\n const [rIn, rOut] = layout.bands.workspace;\n const minR = pointerInsideCenter ? 0 : (rIn + h_in);\n const maxR = rOut - h_out;\n const rClamped = Math.min(Math.max(r, minR), maxR);\n if (Math.abs(rClamped - r) < 1e-6) return { x: tlx, y: tly };\n const newCx = layout.cx + rClamped * ux;\n const newCy = layout.cy + rClamped * uy;\n return { x: newCx - d.aabb.width / 2, y: newCy - d.aabb.height / 2 };\n } else {\n const rOut = layout.bands.silhouette[1];\n const maxR = rOut - h_out;\n if (r <= maxR) return { x: tlx, y: tly };\n const newCx = layout.cx + maxR * ux;\n const newCy = layout.cy + maxR * uy;\n return { x: newCx - d.aabb.width / 2, y: newCy - d.aabb.height / 2 };\n }\n}\n\n// ===== Placement (from placement.ts) =====\n\n/** gcd for positive integers */\nfunction igcd(a: number, b: number) {\n a = Math.round(Math.abs(a)); b = Math.round(Math.abs(b));\n while (b) [a, b] = [b, a % b];\n return a || 1;\n}\n\n/** Infer the base lattice unit in raw silhouette coordinates. */\nexport function inferUnitFromPolys(polys: Poly[]): number {\n let g = 0;\n for (const poly of polys) {\n for (let i = 0; i < poly.length; i++) {\n const a = poly[i], b = poly[(i + 1) % poly.length];\n if (!a || !b) continue;\n const dx = Math.round(Math.abs(b.x - a.x));\n const dy = Math.round(Math.abs(b.y - a.y));\n if (dx) g = g ? igcd(g, dx) : dx;\n if (dy) g = g ? igcd(g, dy) : dy;\n }\n }\n return g || 1;\n}\n\n/**\n * Place polys using scale S, re-centered, and translation snapped to GRID_PX; returns polys.\n * The center is snapped to the grid so the lattice points under the silhouette stay invariant.\n */\nexport function placeSilhouetteGridAlignedAsPolys(\n polys: Poly[],\n S: number,\n rectCenter: { cx: number; cy: number }\n): Poly[] {\n if (!polys || polys.length === 0) return [];\n const a = polysAABB(polys);\n const cx0 = (a.min.x + a.max.x) / 2;\n const cy0 = (a.min.y + a.max.y) / 2;\n const cx = Math.round(rectCenter.cx / GRID_PX) * GRID_PX;\n const cy = Math.round(rectCenter.cy / GRID_PX) * GRID_PX;\n const tx = cx - S * cx0;\n const ty = cy - S * cy0;\n const stx = Math.round(tx / GRID_PX) * GRID_PX;\n const sty = Math.round(ty / GRID_PX) * GRID_PX;\n return polys.map(poly => poly.map(p => ({ x: S * p.x + stx, y: S * p.y + sty })));\n}\n\n// ===== Grid Operations (from grid.ts) =====\n\nexport function nearestGridNode(p: Vec): Vec {\n return { x: Math.round(p.x / GRID_PX) * GRID_PX, y: Math.round(p.y / GRID_PX) * GRID_PX };\n}\n\n/** Generate grid nodes inside an AABB. */\nexport function gridNodesInAABB(min: Vec, max: Vec): Vec[] {\n const out: Vec[] = [];\n const x0 = Math.ceil(min.x / GRID_PX) * GRID_PX;\n const y0 = Math.ceil(min.y / GRID_PX) * GRID_PX;\n for (let y = y0; y <= max.y; y += GRID_PX) {\n for (let x = x0; x <= max.x; x += GRID_PX) out.push({ x, y });\n }\n return out;\n}\n\n/** Keep nodes in a band (and optional sector wedge). */\nexport function filterNodesToBandAndSector(\n nodes: Vec[],\n layout: CircleLayout,\n band: \"workspace\" | \"silhouette\",\n sector?: SectorGeom\n): Vec[] {\n const [rIn, rOut] = layout.bands[band];\n const out: Vec[] = [];\n for (const n of nodes) {\n const dx = n.x - layout.cx, dy = n.y - layout.cy;\n const r = Math.hypot(dx, dy);\n if (r < rIn || r > rOut) continue;\n\n if (sector) {\n let theta = Math.atan2(dy, dx);\n if (layout.mode === \"circle\") {\n if (theta < -Math.PI / 2) theta += 2 * Math.PI;\n } else {\n if (theta < Math.PI) theta += 2 * Math.PI;\n }\n if (theta < sector.start || theta >= sector.end) continue;\n }\n out.push(n);\n }\n return out;\n}\n\n/** Keep nodes that lie inside any of the polygons. */\nexport function filterNodesInPolys(\n nodes: Vec[],\n polys: Poly[],\n pointInPolyFn: (pt: Vec, poly: Poly) => boolean = pointInPolygon\n): Vec[] {\n const out: Vec[] = [];\n node: for (const n of nodes) {\n for (const poly of polys) {\n if (pointInPolyFn(n, poly)) { out.push(n); continue node; }\n }\n }\n return out;\n}\n\n// ===== Anchor Operations (from anchors.ts) =====\n\n/**\n * Find the nearest anchor that \"accepts\" a piece signature (kind/compositeSignature).\n * Returns null if none within the optional radius.\n */\nexport function nearestAcceptingAnchor(\n anchors: Anchor[] | undefined,\n point: Vec,\n accepts: { kind?: string; compositeSignature?: string },\n withinPx: number = Infinity\n): { anchor: Anchor; d2: number } | null {\n if (!anchors || !anchors.length) return null;\n\n const { kind, compositeSignature } = accepts;\n const r2 = withinPx === Infinity ? Infinity : withinPx * withinPx;\n\n let best: { anchor: Anchor; d2: number } | null = null;\n for (const a of anchors) {\n const ok = a.accepts.some(acc =>\n (acc.kind === undefined || acc.kind === kind) &&\n (acc.compositeSignature === undefined || acc.compositeSignature === compositeSignature)\n );\n if (!ok) continue;\n\n const d2val = dist2(point, a.position);\n if (d2val <= r2 && (!best || d2val < best.d2)) {\n best = { anchor: a, d2: d2val };\n }\n }\n return best;\n}\n\n/** True if `point` is within `withinPx` of the given anchor. */\nexport function withinAnchor(anchor: Anchor, point: Vec, withinPx: number): boolean {\n const r2 = withinPx * withinPx;\n return dist2(point, anchor.position) <= r2;\n}\n\n// Node-grid helpers for anchor generation\nexport function workspaceNodes(layout: CircleLayout, sector: SectorGeom): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.outerR, y: layout.cy - layout.outerR - pad };\n const max = { x: layout.cx + layout.outerR, y: layout.cy + layout.outerR + pad };\n const nodes = gridNodesInAABB(min, max);\n return filterNodesToBandAndSector(nodes, layout, \"workspace\", sector);\n}\n\nexport function silhouetteNodes(layout: CircleLayout, sector: SectorGeom, fittedMask: Poly[]): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.outerR, y: layout.cy - layout.outerR - pad };\n const max = { x: layout.cx + layout.outerR, y: layout.cy + layout.outerR + pad };\n const nodes = gridNodesInAABB(min, max);\n const banded = filterNodesToBandAndSector(nodes, layout, \"silhouette\", sector);\n return filterNodesInPolys(banded, fittedMask);\n}\n\nexport function silhouetteBandNodes(layout: CircleLayout, sector: SectorGeom): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.outerR, y: layout.cy - layout.outerR - pad };\n const max = { x: layout.cx + layout.outerR, y: layout.cy + layout.outerR + pad };\n const nodes = gridNodesInAABB(min, max);\n return filterNodesToBandAndSector(nodes, layout, \"silhouette\", sector);\n}\n\n/** Generate anchor grid nodes for the inner ring (radius < innerR) */\nexport function innerRingNodes(layout: CircleLayout): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.innerR, y: layout.cy - layout.innerR - pad };\n const max = { x: layout.cx + layout.innerR, y: layout.cy + layout.innerR + pad };\n const nodes = gridNodesInAABB(min, max);\n // Filter to nodes within the inner circle\n const out: Vec[] = [];\n for (const n of nodes) {\n const dx = n.x - layout.cx, dy = n.y - layout.cy;\n const r = Math.hypot(dx, dy);\n if (r < layout.innerR) out.push(n);\n }\n return out;\n}\n\nexport const anchorsDiameterToPx = (anchorsDiag: number, gridPx: number = GRID_PX) =>\n anchorsDiag * Math.SQRT2 * gridPx;\n","// src/core/domain/solve.ts\nimport type { LayoutMode, PlacementTarget, Poly } from \"@/core/domain/types\";\nimport { anchorsDiameterToPx } from \"@/core/engine/geometry\";\nimport { CONFIG } from \"@/core/config/config\";\n\n// --- helpers to infer lattice unit and silhouette radius -------------------\nfunction igcd(a: number, b: number) {\n a = Math.round(Math.abs(a)); b = Math.round(Math.abs(b));\n while (b) [a, b] = [b, a % b];\n return a || 1;\n}\nfunction inferUnitFromPolys(polys: Poly[]): number {\n let g = 0;\n for (const poly of polys) {\n for (let i = 0; i < poly.length; i++) {\n const a = poly[i], b = poly[(i + 1) % poly.length];\n if (!a || !b) continue;\n const dx = Math.round(Math.abs(b.x - a.x));\n const dy = Math.round(Math.abs(b.y - a.y));\n if (dx) g = g ? igcd(g, dx) : dx;\n if (dy) g = g ? igcd(g, dy) : dy;\n }\n }\n return g || 1;\n}\nfunction polysAABB(polys: Poly[]) {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const poly of polys) for (const p of poly) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n const cx = (minX + maxX) / 2, cy = (minY + maxY) / 2;\n return { minX, minY, maxX, maxY, cx, cy };\n}\n\ntype RadiiParams = {\n n: number; // number of outer sectors\n layoutMode: LayoutMode; // \"circle\" | \"semicircle\"\n target: PlacementTarget; // \"workspace\" | \"silhouette\"\n qsMaxSlots: number; // number of quickstash slots on inner ring\n primitivesSlots: number; // number of primitive slots on inner ring\n gridPx?: number; // override GRID_PX (rare)\n reqWorkspaceDiamAnchors?: number; // override default capacity (rare)\n reqQuickstashDiamAnchors?: number; // override default capacity (rare)\n reqPrimitiveDiamAnchors?: number; // override defaults (rare)\n layoutPadPx?: number; // override outer pad (rare)\n masks?: Poly[][]; // raw silhouette polys per sector (for workspace fit calc)\n};\n\nexport type RadiiSolution = {\n innerR_min: number;\n dr_min: number;\n outerR_min: number;\n Tw_min: number; // minimal workspace-band thickness (px) (= required diagonal diameter)\n Tp_min: number; // minimal silhouette-plate thickness (px) (= 2*max silhouette radius or 0)\n Rshape_px_max: number; // max raw-shape radius after canonical unit scaling\n};\n\nexport function solveRadii(params: RadiiParams): RadiiSolution {\n const {\n n,\n layoutMode,\n target,\n qsMaxSlots,\n primitivesSlots,\n gridPx = CONFIG.layout.grid.stepPx,\n reqWorkspaceDiamAnchors = CONFIG.layout.constraints.workspaceDiamAnchors,\n reqQuickstashDiamAnchors = CONFIG.layout.constraints.quickstashDiamAnchors,\n reqPrimitiveDiamAnchors = CONFIG.layout.constraints.primitiveDiamAnchors,\n } = params;\n\n // Canonical lattice scale from raw masks (if provided)\n const allPolys: Poly[] = (params.masks ?? []).flat();\n const rawUnit = allPolys.length ? inferUnitFromPolys(allPolys) : 0;\n const unitScaleS = rawUnit ? (2 * gridPx) / rawUnit : 1;\n\n // Max silhouette radius (px) across all sectors, measured from each sector mask AABB center\n let Rshape_px_max = 0;\n if (params.masks && params.masks.length) {\n for (const sectorPolys of params.masks) {\n if (!sectorPolys?.length) continue;\n const a = polysAABB(sectorPolys);\n const { cx, cy } = a;\n for (const poly of sectorPolys) {\n for (const p of poly) {\n const rx = (p.x - cx) * unitScaleS;\n const ry = (p.y - cy) * unitScaleS;\n const r = Math.hypot(rx, ry);\n if (r > Rshape_px_max) Rshape_px_max = r;\n }\n }\n }\n }\n\n const sweep = layoutMode === \"circle\" ? Math.PI * 2 : Math.PI;\n const dOut = sweep / Math.max(1, n);\n const dIn = sweep / Math.max(1, qsMaxSlots);\n const dPrim = sweep / Math.max(1, primitivesSlots);\n const sinOut = Math.sin(dOut / 2);\n const sinIn = Math.sin(dIn / 2);\n const sinPrim = Math.sin(dPrim / 2);\n\n // Diagonal-based anchor diameters (so \"X anchors\" refers to the 45° lattice)\n const D_ws = anchorsDiameterToPx(reqWorkspaceDiamAnchors, gridPx);\n const D_bp = anchorsDiameterToPx(reqQuickstashDiamAnchors, gridPx);\n const D_prim = anchorsDiameterToPx(reqPrimitiveDiamAnchors, gridPx);\n\n // Inner-ring minimum from chord ≥ required diameter (blueprints + primitives)\n const innerR_min_bp = D_bp * (0.5 + 1 / (2 * Math.max(1e-9, sinIn)));\n const innerR_min_prim = D_prim * (0.5 + 1 / (2 * Math.max(1e-9, sinPrim)));\n const innerR_min_ws = D_ws / (2 * Math.max(1e-9, sinOut)) - D_ws / 2;\n\n const innerR_min = Math.max(innerR_min_bp, innerR_min_prim, innerR_min_ws);\n\n // Component minima: workspace band must be at least D_ws thick; silhouette plate\n // must be thick enough to contain the largest mask radius (both sides).\n const Tw_min = D_ws;\n const Tp_min = target === \"workspace\" ? (2 * Rshape_px_max) : 0;\n const dr_min = Tw_min + Tp_min;\n\n const outerR_min = innerR_min + dr_min;\n\n return { innerR_min, dr_min, outerR_min, Tw_min, Tp_min, Rshape_px_max };\n}\n\nexport function optimizeBandSplit(args: {\n outerRViewportBound: number;\n innerR_min: number;\n Tw_min: number;\n Tp_min: number;\n Rshape_px_max: number;\n D_ws_px: number; // anchorsDiameterToPx(REQ_WORKSPACE_DIAM_ANCHORS)\n}): { innerR: number; Tw: number; Tp: number; outerR: number } {\n const { outerRViewportBound, innerR_min, Tw_min, Tp_min, Rshape_px_max, D_ws_px } = args;\n\n const dr_min = Tw_min + Tp_min;\n\n // If the viewport can’t even accommodate the minima, clamp to the minimal feasible ring.\n if (outerRViewportBound < innerR_min + dr_min) {\n const outerR = innerR_min + dr_min;\n return { innerR: innerR_min, Tw: Tw_min, Tp: Tp_min, outerR };\n }\n\n // Maximize ring thickness by minimizing innerR (this maximizes anchor size everywhere).\n const outerR = outerRViewportBound;\n const innerR = innerR_min;\n const dr = outerR - innerR;\n\n // Distribute slack between bands with a gentle bias towards the silhouette plate\n // when masks have large radial extent (so they don’t look cramped).\n const slack = Math.max(0, dr - dr_min);\n const wWork = 1;\n const wSil = 1 + (Rshape_px_max / Math.max(1e-9, D_ws_px));\n const addWork = slack * (wWork / (wWork + wSil));\n const Tw = Tw_min + addWork;\n const Tp = dr - Tw;\n\n return { innerR, Tw, Tp, outerR };\n}\n\n/**\n * Compute the *logical* SVG viewBox (LOGICAL_W/H) from the minimal feasible\n * outer radius implied by the anchor-capacity constraints. The result ensures\n * lattice density is invariant across devices/zoom levels.\n *\n * NOTE: This should be called prior to computeCircleLayout and the returned\n * width/height must be passed as the viewport to computeCircleLayout so both\n * functions agree on the same bound.\n */\nexport function solveLogicalBox(params: RadiiParams & { layoutPadPx: number }): { LOGICAL_W: number; LOGICAL_H: number } {\n const { layoutMode, layoutPadPx } = params;\n const { outerR_min } = solveRadii(params);\n\n if (layoutMode === \"circle\") {\n const LOGICAL_W = 2 * (outerR_min + layoutPadPx);\n return { LOGICAL_W, LOGICAL_H: LOGICAL_W };\n } else {\n // semicircle: height is half the width; outerR computed against both axes ends up ~W/2\n const LOGICAL_W = 2 * (outerR_min + layoutPadPx);\n return { LOGICAL_W, LOGICAL_H: LOGICAL_W / 2 };\n }\n}","import type { LayoutMode, PlacementTarget, Poly } from \"./types\";\nimport { anchorsDiameterToPx } from \"@/core/engine/geometry\";\nimport { solveRadii, optimizeBandSplit } from \"@/core/domain/solve\";\nimport { CONFIG } from \"@/core/config/config\";\n\nexport type SectorGeom = { id: string; index: number; start: number; end: number; mid: number };\n\nexport type RingBands = {\n silhouette: [number, number];\n workspace: [number, number];\n};\n\nexport type CircleLayout = {\n mode: LayoutMode;\n cx: number; cy: number;\n innerR: number; outerR: number;\n sectors: SectorGeom[];\n bands: RingBands;\n sweepStart: number;\n sweepEnd: number;\n};\n\nexport function computeCircleLayout(\n viewport: { w: number; h: number },\n n: number,\n sectorIds: string[],\n mode: LayoutMode = \"circle\",\n target: PlacementTarget = \"workspace\",\n extras: { qsMaxSlots: number; primitivesSlots: number; masks?: Poly[][] }\n): CircleLayout {\n const pad = CONFIG.layout.paddingPx;\n\n // place the semicircle so its diameter sits on the bottom edge of the SVG\n const cx = viewport.w / 2;\n const cy = mode === \"semicircle\" ? viewport.h : viewport.h / 2;\n\n // The viewport bound must match the viewBox computed by solveLogicalBox so ring sizes stay consistent.\n // vertical radius must not cross the top padding\n const maxRVertical = mode === \"semicircle\" ? (viewport.h - pad) : cy;\n const outerRViewportBound = Math.min(cx, maxRVertical) - pad;\n\n // Solve *minimum* feasible radii and then optimize the band split within the viewport bound\n const sol = solveRadii({\n n,\n layoutMode: mode,\n target,\n qsMaxSlots: extras.qsMaxSlots,\n primitivesSlots: extras.primitivesSlots,\n masks: extras.masks ?? [],\n });\n\n let innerR: number, outerR: number, bands: RingBands;\n\n if (target === \"workspace\") {\n const D_ws_px = anchorsDiameterToPx(CONFIG.layout.constraints.workspaceDiamAnchors);\n const opt = optimizeBandSplit({\n outerRViewportBound,\n innerR_min: sol.innerR_min,\n Tw_min: sol.Tw_min,\n Tp_min: sol.Tp_min,\n Rshape_px_max: sol.Rshape_px_max,\n D_ws_px,\n });\n innerR = opt.innerR;\n outerR = opt.outerR;\n bands = {\n workspace: [opt.innerR, opt.innerR + opt.Tw],\n silhouette: [opt.innerR + opt.Tw, opt.outerR],\n };\n } else {\n // silhouette-only: maximize thickness; entire ring is silhouette\n outerR = Math.max(outerRViewportBound, sol.outerR_min);\n // minimize innerR to maximize thickness, but not below minimal requirement\n innerR = Math.min(sol.innerR_min, outerR);\n if (outerR < sol.outerR_min) { outerR = sol.outerR_min; innerR = sol.innerR_min; }\n bands = { silhouette: [innerR, outerR], workspace: [innerR, outerR] };\n }\n\n const sweep = mode === \"circle\" ? Math.PI * 2 : Math.PI;\n // semicircle: sweep the upper arc by anchoring the diameter on the bottom (π→2π)\n const sweepStart = mode === \"circle\" ? -Math.PI / 2 : Math.PI;\n const sweepEnd = sweepStart + sweep;\n const step = sweep / n;\n\n const sectors: SectorGeom[] = [];\n for (let i = 0; i < n; i++) {\n const id = sectorIds[i] ?? String(i);\n const start = sweepStart + i * step;\n const end = start + step;\n const mid = (start + end) / 2;\n sectors.push({ id, index: i, start, end, mid });\n }\n return { mode, cx, cy, innerR, outerR, sectors, bands, sweepStart, sweepEnd };\n}\n\n/** Ring wedge path helper */\nexport function wedgePath(\n cx: number, cy: number,\n innerR: number, outerR: number,\n start: number, end: number\n): string {\n const largeArc = end - start > Math.PI ? 1 : 0;\n const x0 = cx + innerR * Math.cos(start);\n const y0 = cy + innerR * Math.sin(start);\n const x1 = cx + outerR * Math.cos(start);\n const y1 = cy + outerR * Math.sin(start);\n const x2 = cx + outerR * Math.cos(end);\n const y2 = cy + outerR * Math.sin(end);\n const x3 = cx + innerR * Math.cos(end);\n const y3 = cy + innerR * Math.sin(end);\n return [\n `M ${x0} ${y0}`,\n `L ${x1} ${y1}`,\n `A ${outerR} ${outerR} 0 ${largeArc} 1 ${x2} ${y2}`,\n `L ${x3} ${y3}`,\n `A ${innerR} ${innerR} 0 ${largeArc} 0 ${x0} ${y0}`,\n \"Z\",\n ].join(\" \");\n}\n\n/** Sector hit-test (band optional) */\nexport function sectorAtPoint(\n x: number, y: number, layout: CircleLayout, band?: keyof RingBands\n): string | undefined {\n const dx = x - layout.cx;\n const dy = y - layout.cy;\n const r = Math.hypot(dx, dy);\n\n const [rIn, rOut] = band ? layout.bands[band] : [layout.innerR, layout.outerR];\n if (r < rIn || r > rOut) return undefined;\n\n let theta = Math.atan2(dy, dx); // [-π, +π]\n if (layout.mode === \"circle\") {\n if (theta < -Math.PI / 2) theta += 2 * Math.PI;\n } else {\n // semicircle covers [π, 2π]\n if (theta < Math.PI) theta += 2 * Math.PI;\n }\n\n for (const s of layout.sectors) {\n if (theta >= s.start && theta < s.end) return s.id;\n }\n return layout.sectors.at(-1)?.id;\n}\n\n/** Convenience: axis-aligned rect for fitting silhouettes in a band */\nexport function rectForBand(\n layout: CircleLayout, sector: SectorGeom, band: keyof RingBands, pad = 0.85\n) {\n const [rIn, rOut] = layout.bands[band];\n const rMid = (rIn + rOut) / 2;\n const dr = rOut - rIn;\n const arc = (sector.end - sector.start) * rMid * 0.9;\n const w = arc * pad;\n const h = dr * pad;\n const cx = layout.cx + rMid * Math.cos(sector.mid);\n const cy = layout.cy + rMid * Math.sin(sector.mid);\n return { cx, cy, w, h };\n}","/**\n * Border Rendering Utilities for Edge-Aware Piece Borders\n * \n * This module provides utilities for rendering piece borders with edge-aware logic.\n * Uses the same coordinate system and approach as face-to-face.ts for consistency.\n * Visual polish - hides borders between touching pieces\n */\n\nimport type { Vec, Piece, Blueprint } from \"../../domain/types\";\nimport { CONFIG } from \"../../config/config\";\nimport { boundsOfBlueprint } from \"../geometry\";\n\nexport interface UnitSegment {\n a: Vec;\n b: Vec;\n}\n\n/**\n * Generate SVG path data for individual edge strokes\n * Each edge becomes a separate path element for selective rendering\n */\nexport function generateEdgeStrokePaths(poly: Vec[]): string[] {\n const strokePaths: string[] = [];\n \n for (let i = 0; i < poly.length; i++) {\n const current = poly[i];\n const next = poly[(i + 1) % poly.length];\n \n if (current && next) {\n strokePaths.push(`M ${current.x} ${current.y} L ${next.x} ${next.y}`);\n }\n }\n \n return strokePaths;\n}\n\n/**\n * Convert a polygon edge into unit-length segments\n * Uses the same logic as face-to-face.ts for consistency\n */\nfunction edgeToUnitSegments(start: Vec, end: Vec, gridSize: number): UnitSegment[] {\n const segments: UnitSegment[] = [];\n \n // Convert to grid coordinates\n const startGrid = {\n x: Math.round(start.x / gridSize),\n y: Math.round(start.y / gridSize)\n };\n const endGrid = {\n x: Math.round(end.x / gridSize),\n y: Math.round(end.y / gridSize)\n };\n \n const dx = endGrid.x - startGrid.x;\n const dy = endGrid.y - startGrid.y;\n \n if (dx === 0 && dy === 0) return []; // Zero-length edge\n \n const steps = Math.max(Math.abs(dx), Math.abs(dy));\n const stepX = dx / steps;\n const stepY = dy / steps;\n \n for (let i = 0; i < steps; i++) {\n const aX = Math.round(startGrid.x + i * stepX);\n const aY = Math.round(startGrid.y + i * stepY);\n const bX = Math.round(startGrid.x + (i + 1) * stepX);\n const bY = Math.round(startGrid.y + (i + 1) * stepY);\n segments.push({ \n a: { x: aX, y: aY }, \n b: { x: bX, y: bY } \n });\n }\n \n return segments;\n}\n\n/**\n * Get all unit segments for a piece (same logic as face-to-face.ts)\n * Currently unused - kept for reference\n */\n/*\nfunction getPieceUnitSegments(\n piece: Piece, \n getBlueprint: (id: string) => Blueprint | undefined,\n getPrimitive: (kind: string) => any,\n gridSize: number\n): UnitSegment[] {\n // Defensive check: if getBlueprint fails, return empty segments\n let blueprint: Blueprint | undefined;\n try {\n blueprint = getBlueprint(piece.blueprintId);\n } catch (error) {\n console.warn('getBlueprint failed in getPieceUnitSegments:', error);\n return [];\n }\n\n if (!blueprint?.shape) return [];\n \n // Calculate offset using same logic as piecePolysAt\n const bb = boundsOfBlueprint(blueprint, getPrimitive);\n const ox = piece.pos.x - bb.min.x;\n const oy = piece.pos.y - bb.min.y;\n \n const allSegments: UnitSegment[] = [];\n \n // Translate polygons and convert edges to unit segments\n for (const poly of blueprint.shape) {\n const translatedPoly = poly.map((vertex: Vec) => ({\n x: vertex.x + ox,\n y: vertex.y + oy\n }));\n \n for (let i = 0; i < translatedPoly.length; i++) {\n const current = translatedPoly[i];\n const next = translatedPoly[(i + 1) % translatedPoly.length];\n \n if (!current || !next) continue;\n \n allSegments.push(...edgeToUnitSegments(current, next, gridSize));\n }\n }\n \n return allSegments;\n}\n*/\n\n/**\n * Check which edges should be hidden for a specific polygon within a piece\n * Handles both internal composite edges and external touching between pieces\n */\nexport function getHiddenEdgesForPolygon(\n piece: Piece,\n polyIndex: number,\n allPiecesInSector: Piece[],\n getBlueprint: (id: string) => Blueprint | undefined,\n getPrimitive: (kind: string) => any\n): boolean[] {\n // Defensive check: if getBlueprint fails, return no hidden edges\n let blueprint: Blueprint | undefined;\n try {\n blueprint = getBlueprint(piece.blueprintId);\n } catch (error) {\n console.warn('getBlueprint failed in getHiddenEdgesForPolygon:', error);\n return [];\n }\n\n if (!blueprint?.shape) {\n return [];\n }\n\n const poly = blueprint.shape[polyIndex];\n if (!poly) return [];\n\n const gridSize = CONFIG.layout.grid.stepPx;\n const bb = boundsOfBlueprint(blueprint, getPrimitive);\n const ox = piece.pos.x - bb.min.x;\n const oy = piece.pos.y - bb.min.y;\n \n const translatedPoly = poly.map((vertex: Vec) => ({\n x: vertex.x + ox,\n y: vertex.y + oy\n }));\n\n const hiddenEdges: boolean[] = [];\n\n // For each edge in this polygon\n for (let i = 0; i < translatedPoly.length; i++) {\n const current = translatedPoly[i];\n const next = translatedPoly[(i + 1) % translatedPoly.length];\n \n if (!current || !next) {\n hiddenEdges.push(false);\n continue;\n }\n\n // Get segments for this edge\n const edgeSegments = edgeToUnitSegments(current, next, gridSize);\n \n // Check if any of these segments are touching other pieces\n let isTouching = false;\n \n // 1. Check internal composite edges (if this is a composite)\n if (piece.blueprintId.startsWith('comp:')) {\n // Check against other polygons in the same composite\n for (let otherPolyIndex = 0; otherPolyIndex < blueprint.shape.length; otherPolyIndex++) {\n if (otherPolyIndex === polyIndex) continue; // Skip self\n \n const otherPoly = blueprint.shape[otherPolyIndex];\n if (!otherPoly) continue;\n \n const otherTranslatedPoly = otherPoly.map((vertex: Vec) => ({\n x: vertex.x + ox,\n y: vertex.y + oy\n }));\n\n // Check if this edge touches any edge of the other polygon\n for (let j = 0; j < otherTranslatedPoly.length; j++) {\n const otherCurrent = otherTranslatedPoly[j];\n const otherNext = otherTranslatedPoly[(j + 1) % otherTranslatedPoly.length];\n \n if (!otherCurrent || !otherNext) continue;\n\n const otherEdgeSegments = edgeToUnitSegments(otherCurrent, otherNext, gridSize);\n \n // Check if any segments are shared\n for (const edgeSeg of edgeSegments) {\n const isShared = otherEdgeSegments.some(otherSeg => \n // Check if segments share the same endpoints (identical or reversed)\n (edgeSeg.a.x === otherSeg.a.x && edgeSeg.a.y === otherSeg.a.y &&\n edgeSeg.b.x === otherSeg.b.x && edgeSeg.b.y === otherSeg.b.y) ||\n (edgeSeg.a.x === otherSeg.b.x && edgeSeg.a.y === otherSeg.b.y &&\n edgeSeg.b.x === otherSeg.a.x && edgeSeg.b.y === otherSeg.a.y)\n );\n \n if (isShared) {\n isTouching = true;\n break;\n }\n }\n \n if (isTouching) break;\n }\n \n if (isTouching) break;\n }\n }\n \n // 2. Check external touching between different pieces (if not already touching internally)\n // Only check external touching when hideTouchingBorders is true\n if (!isTouching && CONFIG.game.hideTouchingBorders) {\n for (const otherPiece of allPiecesInSector) {\n if (otherPiece.id === piece.id) continue; // Skip self\n \n const otherBlueprint = getBlueprint(otherPiece.blueprintId);\n if (!otherBlueprint?.shape) continue;\n\n const otherBb = boundsOfBlueprint(otherBlueprint, getPrimitive);\n const otherOx = otherPiece.pos.x - otherBb.min.x;\n const otherOy = otherPiece.pos.y - otherBb.min.y;\n\n // Check if this edge touches any edge of the other piece\n for (const otherPoly of otherBlueprint.shape) {\n const otherTranslatedPoly = otherPoly.map((vertex: Vec) => ({\n x: vertex.x + otherOx,\n y: vertex.y + otherOy\n }));\n\n for (let j = 0; j < otherTranslatedPoly.length; j++) {\n const otherCurrent = otherTranslatedPoly[j];\n const otherNext = otherTranslatedPoly[(j + 1) % otherTranslatedPoly.length];\n \n if (!otherCurrent || !otherNext) continue;\n\n const otherEdgeSegments = edgeToUnitSegments(otherCurrent, otherNext, gridSize);\n \n // Check if any segments are shared\n for (const edgeSeg of edgeSegments) {\n const isShared = otherEdgeSegments.some(otherSeg => \n // Check if segments share the same endpoints (identical or reversed)\n (edgeSeg.a.x === otherSeg.a.x && edgeSeg.a.y === otherSeg.a.y &&\n edgeSeg.b.x === otherSeg.b.x && edgeSeg.b.y === otherSeg.b.y) ||\n (edgeSeg.a.x === otherSeg.b.x && edgeSeg.a.y === otherSeg.b.y &&\n edgeSeg.b.x === otherSeg.a.x && edgeSeg.b.y === otherSeg.a.y)\n );\n \n if (isShared) {\n isTouching = true;\n break;\n }\n }\n \n if (isTouching) break;\n }\n \n if (isTouching) break;\n }\n \n if (isTouching) break;\n }\n }\n\n hiddenEdges.push(isTouching);\n }\n\n return hiddenEdges;\n}\n\n/**\n * Check if borders should be shown at all\n * If false, neither primitives nor composites have borders\n */\nexport function shouldShowBorders(): boolean {\n return CONFIG.game.showBorders;\n}\n\n/**\n * Check if touching borders should be hidden\n * Only relevant when showBorders is true\n * - true: All pieces use selective border rendering\n * - false: Only composites use selective border rendering\n */\nexport function shouldHideTouchingBorders(): boolean {\n return CONFIG.game.hideTouchingBorders;\n}\n\n/**\n * Check if a piece should have selective border rendering\n * This determines whether to use edge-aware borders or full borders\n */\nexport function shouldUseSelectiveBorders(blueprintId: string): boolean {\n // Use selective borders if:\n // 1. Borders are enabled globally AND\n // 2. Either hideTouchingBorders is true (ALL pieces) OR this is a composite piece\n return CONFIG.game.showBorders && (\n CONFIG.game.hideTouchingBorders || // If true, ALL pieces use selective borders\n blueprintId.startsWith('comp:') // If false, only composites use selective borders\n );\n}","import React from \"react\";\nimport type { Poly, TanKind, Blueprint, PrimitiveBlueprint } from \"@/core/domain/types\";\nimport { wedgePath, type CircleLayout } from \"@/core/domain/layout\";\nimport { boundsOfBlueprint } from \"@/core/engine/geometry\";\nimport { CONFIG } from \"@/core/config/config\";\nimport { generateEdgeStrokePaths, shouldUseSelectiveBorders, shouldShowBorders, getHiddenEdgesForPolygon } from \"@/core/engine/validation/border-rendering\";\n\nexport type PieceView = { id: string; blueprintId: string; x: number; y: number; sectorId?: string };\nexport type AnchorDots = { sectorId: string; valid: {x:number;y:number}[]; invalid: {x:number;y:number}[] };\n\nexport type BoardViewProps = {\n controller: any; // RoundController (kept loose to avoid circular deps here)\n layout: CircleLayout;\n viewBox: { w: number; h: number };\n width?: number;\n height?: number;\n\n // derived visuals/geometry\n badgeR: number;\n badgeCenter: { x: number; y: number };\n placedSilBySector: Map<string, Poly[]>;\n anchorDots: AnchorDots[];\n pieces: PieceView[];\n\n // UI state flags\n clickMode: boolean;\n draggingId: string | null;\n selectedPieceId: string | null;\n dragInvalid: boolean;\n lockedPieceId: string | null;\n\n // refs + handlers wired by the container\n svgRef: React.RefObject<SVGSVGElement>;\n setPieceRef: (id: string) => (el: SVGGElement | null) => void;\n onPiecePointerDown: (\n e: React.PointerEvent<SVGPathElement | SVGGElement>,\n p: PieceView\n ) => void;\n onBlueprintPointerDown: (\n e: React.PointerEvent,\n bp: Blueprint,\n bpGeom: { bx: number; by: number; cx: number; cy: number }\n ) => void;\n onRootPointerDown: (e: React.PointerEvent<SVGSVGElement>) => void;\n onPointerMove: (e: React.PointerEvent<SVGSVGElement>) => void;\n onPointerUp: () => void;\n onCenterBadgePointerDown: (e: React.PointerEvent) => void;\n};\n\nfunction pathD(poly: Poly) {\n return `M ${poly.map((pt) => `${pt.x} ${pt.y}`).join(\" L \")} Z`;\n}\n\nexport default function BoardView(props: BoardViewProps) {\n const {\n controller, layout, viewBox, width, height,\n badgeR, badgeCenter,\n placedSilBySector, anchorDots, pieces,\n clickMode, draggingId, selectedPieceId, dragInvalid, lockedPieceId,\n svgRef, setPieceRef,\n onPiecePointerDown, onBlueprintPointerDown, onRootPointerDown, onPointerMove, onPointerUp, onCenterBadgePointerDown,\n } = props;\n\n const VW = viewBox.w, VH = viewBox.h;\n\n // blueprint ring geometry\n const centerView = controller.state.blueprintView;\n const bps: Blueprint[] =\n centerView === \"primitives\"\n ? (controller.state.primitives as PrimitiveBlueprint[])\n : (controller.state.quickstash as Blueprint[]);\n\n const QS_SLOTS = controller.state.cfg.maxQuickstashSlots;\n const PRIM_SLOTS = controller.state.primitives.length;\n const slotsForView = centerView === \"primitives\" ? Math.max(1, PRIM_SLOTS) : Math.max(1, QS_SLOTS);\n const sweep = layout.mode === \"circle\" ? Math.PI * 2 : Math.PI;\n const delta = sweep / slotsForView;\n\n const start = layout.mode === \"circle\" ? -Math.PI / 2 : Math.PI;\n const blueprintTheta = (i: number) => start + (i + 0.5) * delta;\n\n // chord requirement (reuse same logic as container already used for radii)\n const anchorsDiameterToPx = (anchorsDiag: number, gridPx: number = CONFIG.layout.grid.stepPx) =>\n anchorsDiag * Math.SQRT2 * gridPx;\n const reqAnchors = centerView === \"primitives\"\n ? CONFIG.layout.constraints.primitiveDiamAnchors\n : CONFIG.layout.constraints.quickstashDiamAnchors;\n const D_slot = anchorsDiameterToPx(reqAnchors);\n const R_needed = D_slot / (2 * Math.max(1e-9, Math.sin(delta / 2)));\n \n // Minimum radius to avoid overlapping with badge\n // Badge takes up: badgeR + margin, plus we need half the slot diameter for clearance\n const R_min = badgeR + CONFIG.size.centerBadge.marginPx + D_slot / 2;\n const ringMax = layout.innerR - (badgeR + CONFIG.size.centerBadge.marginPx);\n \n // Clamp to [R_min, ringMax]\n const blueprintRingR = Math.min(Math.max(R_needed, R_min), ringMax);\n\n const renderBlueprintGlyph = (bp: Blueprint, bx: number, by: number) => {\n const bb = boundsOfBlueprint(bp, (k: string) => controller.getPrimitive(k as TanKind)!);\n const cx = bb.min.x + bb.width / 2;\n const cy = bb.min.y + bb.height / 2;\n const selected = false; // container highlights via pending state; optional\n\n return (\n <g\n key={bp.id}\n transform={`translate(${bx}, ${by}) scale(1) translate(${-cx}, ${-cy})`}\n >\n {(\"shape\" in bp ? bp.shape : []).map((poly, idx) => (\n <path\n key={idx}\n d={pathD(poly)}\n fill={CONFIG.color.blueprint.fill}\n opacity={CONFIG.opacity.blueprint}\n stroke={selected ? CONFIG.color.blueprint.selectedStroke : \"none\"}\n strokeWidth={selected ? 2 : 0}\n pointerEvents=\"visiblePainted\"\n style={{ cursor: \"pointer\" }}\n onPointerDown={(e) => onBlueprintPointerDown(e as any, bp, { bx, by, cx, cy })}\n />\n ))}\n </g>\n );\n };\n\n return (\n <svg\n ref={svgRef}\n width={width}\n height={height}\n viewBox={`0 0 ${VW} ${VH}`}\n preserveAspectRatio=\"xMidYMid meet\"\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerDown={(e) => {\n onRootPointerDown(e);\n }}\n style={{ background: \"#fff\", touchAction: \"none\", userSelect: \"none\" }}\n >\n {/* bands as wedges */}\n {layout.sectors.map((s, i) => {\n const done = !!controller.state.sectors[s.id].completedAt;\n const baseSil = i % 2 ? CONFIG.color.bands.silhouette.fillOdd : CONFIG.color.bands.silhouette.fillEven;\n const baseWork = i % 2 ? CONFIG.color.bands.workspace.fillOdd : CONFIG.color.bands.workspace.fillEven;\n const sil = layout.bands.silhouette;\n const work = layout.bands.workspace;\n return (\n <g key={`bands-${s.id}`}>\n {controller.state.cfg.target === \"workspace\" ? (\n <>\n <path d={wedgePath(layout.cx, layout.cy, sil[0], sil[1], s.start, s.end)} fill={baseSil} stroke={CONFIG.color.bands.silhouette.stroke} strokeWidth={CONFIG.size.stroke.bandPx} pointerEvents=\"none\" />\n <path d={wedgePath(layout.cx, layout.cy, work[0], work[1], s.start, s.end)} fill={done ? CONFIG.color.completion.fill : baseWork} stroke={done ? CONFIG.color.completion.stroke : CONFIG.color.bands.workspace.stroke} strokeWidth={CONFIG.size.stroke.bandPx} pointerEvents=\"none\" />\n </>\n ) : (\n <path d={wedgePath(layout.cx, layout.cy, sil[0], sil[1], s.start, s.end)} fill={done ? CONFIG.color.completion.fill : baseSil} stroke={done ? CONFIG.color.completion.stroke : CONFIG.color.bands.silhouette.stroke} strokeWidth={CONFIG.size.stroke.bandPx} pointerEvents=\"none\" />\n )}\n </g>\n );\n })}\n\n\n {/* live pieces - MOVED ABOVE SILHOUETTES FOR TESTING */}\n {pieces\n .sort((a, b) => {\n // Sort so that dragged piece is rendered last (on top)\n if (draggingId === a.id) return 1;\n if (draggingId === b.id) return -1;\n return 0;\n })\n .map((p) => {\n const bp = controller.getBlueprint(p.blueprintId)!;\n const bb = boundsOfBlueprint(bp, (k: string) => controller.getPrimitive(k as TanKind)!);\n const isDragging = draggingId === p.id;\n const locked = p.sectorId && controller.isSectorCompleted(p.sectorId);\n const isConnectivityLocked = lockedPieceId === p.id;\n const isSelected = selectedPieceId === p.id;\n const isCarriedInvalid = isDragging && dragInvalid;\n const translateX = p.x - bb.min.x;\n const translateY = p.y - bb.min.y;\n return (\n <g key={p.id} ref={setPieceRef(p.id)} transform={`translate(${translateX}, ${translateY})`} style={{ cursor: locked ? \"default\" : clickMode ? \"pointer\" : \"grab\" }} pointerEvents={clickMode && isDragging ? \"none\" : \"auto\"}>\n {(\"shape\" in bp ? bp.shape : []).map((poly: any, idx: number) => {\n const showBorders = shouldShowBorders();\n const useSelectiveBorders = shouldUseSelectiveBorders(p.blueprintId);\n return (\n <React.Fragment key={idx}>\n {/* Fill path - always rendered with no borders */}\n <path\n d={pathD(poly)}\n fill={isConnectivityLocked ? CONFIG.color.piece.invalidFill : (isCarriedInvalid ? CONFIG.color.piece.invalidFill : (isDragging ? CONFIG.color.piece.draggingFill : CONFIG.color.piece.validFill))}\n opacity={isConnectivityLocked ? CONFIG.opacity.piece.invalid : (isCarriedInvalid ? CONFIG.opacity.piece.invalid : (isDragging ? CONFIG.opacity.piece.dragging : (locked ? CONFIG.opacity.piece.locked : CONFIG.opacity.piece.normal)))}\n stroke=\"none\"\n onPointerDown={(e) => onPiecePointerDown(e, p)}\n />\n \n {/* Border paths - only rendered if borders are enabled */}\n {showBorders && (\n useSelectiveBorders ? (\n // For pieces with selective borders: render individual edge strokes with edge detection\n (() => {\n const allPiecesInSector = pieces.filter(piece => piece.sectorId === p.sectorId);\n const pieceAsPiece = { ...p, pos: { x: p.x, y: p.y } };\n const allPiecesAsPieces = allPiecesInSector.map(piece => ({ ...piece, pos: { x: piece.x, y: piece.y } }));\n const hiddenEdges = getHiddenEdgesForPolygon(pieceAsPiece, idx, allPiecesAsPieces, (id) => controller.getBlueprint(id), (kind) => controller.getPrimitive(kind));\n \n // Check if this piece's edges were hidden due to touching the dragged piece\n const draggedPiece = draggingId ? allPiecesInSector.find(piece => piece.id === draggingId) : null;\n \n // For composites, we need to distinguish between internal edges (always hidden) and external edges (shown when dragging)\n let wasTouchingDraggedPiece: boolean[];\n if (p.blueprintId.startsWith('comp:')) {\n // For composites, check internal edges separately from external edges\n const internalHiddenEdges = getHiddenEdgesForPolygon(pieceAsPiece, idx, [], (id) => controller.getBlueprint(id), (kind) => controller.getPrimitive(kind));\n const externalHiddenEdges = draggedPiece ? \n getHiddenEdgesForPolygon(pieceAsPiece, idx, [{ ...draggedPiece, pos: { x: draggedPiece.x, y: draggedPiece.y } }], (id) => controller.getBlueprint(id), (kind) => controller.getPrimitive(kind)) : \n new Array(hiddenEdges.length).fill(false);\n \n // Only consider external edges as \"touching dragged piece\"\n wasTouchingDraggedPiece = externalHiddenEdges.map((external, i) => external && !internalHiddenEdges[i]);\n } else {\n // For primitives, all hidden edges are external\n wasTouchingDraggedPiece = draggedPiece ? \n getHiddenEdgesForPolygon(pieceAsPiece, idx, [{ ...draggedPiece, pos: { x: draggedPiece.x, y: draggedPiece.y } }], (id) => controller.getBlueprint(id), (kind) => controller.getPrimitive(kind)) : \n new Array(hiddenEdges.length).fill(false);\n }\n \n return generateEdgeStrokePaths(poly).map((strokePath, strokeIdx) => {\n // Show border if: 1) it wasn't hidden originally, OR 2) it was hidden due to touching the dragged piece\n const wasHiddenDueToDraggedPiece = wasTouchingDraggedPiece[strokeIdx] || false;\n \n // Special case: if this piece is being dragged and it's a composite, keep internal edges hidden\n let isHidden: boolean;\n if (isDragging && p.blueprintId.startsWith('comp:')) {\n // For dragged composites, only show external edges (not internal ones)\n const internalHiddenEdges = getHiddenEdgesForPolygon(pieceAsPiece, idx, [], (id) => controller.getBlueprint(id), (kind) => controller.getPrimitive(kind));\n isHidden = internalHiddenEdges[strokeIdx] || false;\n } else {\n // Normal logic for non-dragged pieces or primitives\n isHidden = isDragging ? false : ((hiddenEdges[strokeIdx] || false) && !wasHiddenDueToDraggedPiece);\n }\n \n return (\n <path\n key={`stroke-${idx}-${strokeIdx}`}\n d={strokePath}\n fill=\"none\"\n stroke={isHidden ? \"none\" : (isConnectivityLocked ? CONFIG.color.piece.invalidStroke : (isCarriedInvalid ? CONFIG.color.piece.invalidStroke : (isSelected || isDragging ? CONFIG.color.piece.selectedStroke : CONFIG.color.piece.borderStroke)))}\n strokeWidth={isHidden ? 0 : ((isSelected || isDragging) ? CONFIG.size.stroke.pieceSelectedPx : CONFIG.size.stroke.pieceBorderPx)}\n onPointerDown={(e) => onPiecePointerDown(e, p)}\n />\n );\n });\n })()\n ) : (\n // For primitives or composites without selective borders: render full border\n <path\n d={pathD(poly)}\n fill=\"none\"\n stroke={isConnectivityLocked ? CONFIG.color.piece.invalidStroke : (isCarriedInvalid ? CONFIG.color.piece.invalidStroke : (isSelected || isDragging ? CONFIG.color.piece.selectedStroke : CONFIG.color.piece.borderStroke))}\n strokeWidth={(isSelected || isDragging) ? CONFIG.size.stroke.pieceSelectedPx : CONFIG.size.stroke.pieceBorderPx}\n onPointerDown={(e) => onPiecePointerDown(e, p)}\n />\n )\n )}\n </React.Fragment>\n );\n })}\n </g>\n );\n })}\n\n {/* silhouettes (use pre-placed polys) */}\n {layout.sectors.map((s) => {\n const placedPolys = placedSilBySector.get(s.id) ?? [];\n if (!placedPolys.length) return null;\n return (\n <g key={`sil-${s.id}`} pointerEvents=\"none\">\n {placedPolys.map((poly, i) => (\n <path key={i} d={pathD(poly)} fill={CONFIG.color.silhouetteMask} opacity={CONFIG.opacity.silhouetteMask} />\n ))}\n </g>\n );\n })}\n\n {/* anchor grid */}\n {anchorDots.map(({ sectorId, valid, invalid }) => {\n const isInnerRing = sectorId === \"inner-ring\";\n return (\n <g key={`anchors-${sectorId}`} pointerEvents=\"none\">\n {invalid.map((p, i) => (\n <circle key={`inv-${i}`} cx={p.x} cy={p.y} r={CONFIG.size.anchorRadiusPx.invalid} fill={CONFIG.color.anchors.invalid} opacity={CONFIG.opacity.anchors.invalid} />\n ))}\n {valid.map((p, i) => (\n <circle\n key={`val-${i}`}\n cx={p.x}\n cy={p.y}\n r={isInnerRing ? CONFIG.size.anchorRadiusPx.invalid : CONFIG.size.anchorRadiusPx.valid}\n fill={isInnerRing ? CONFIG.color.anchors.invalid : CONFIG.color.anchors.valid}\n opacity={isInnerRing ? CONFIG.opacity.anchors.invalid : CONFIG.opacity.anchors.valid}\n />\n ))}\n </g>\n );\n })}\n\n {/* center badge */}\n {(() => {\n const isPrep = controller.state.cfg.mode === \"prep\";\n const isSubmitEnabled = isPrep ? controller.isSubmitEnabled() : true;\n const isClickable = !draggingId && (!isPrep || isSubmitEnabled);\n \n return (\n <g transform={`translate(${badgeCenter.x}, ${badgeCenter.y})`} \n style={{ cursor: isClickable ? \"pointer\" : \"default\" }} \n onPointerDown={isClickable ? onCenterBadgePointerDown : undefined}>\n <circle r={badgeR} \n fill={isSubmitEnabled ? CONFIG.color.blueprint.badgeFill : \"#ccc\"} \n opacity={isSubmitEnabled ? 1.0 : 0.5} />\n <text textAnchor=\"middle\" \n dominantBaseline=\"middle\" \n fontSize={CONFIG.size.badgeFontPx} \n fill={isSubmitEnabled ? CONFIG.color.blueprint.labelFill : \"#888\"} \n pointerEvents=\"none\">\n {isPrep ? \"Submit\" : controller.state.blueprintView}\n </text>\n </g>\n );\n })()}\n\n {/* blueprint glyphs */}\n {bps.map((bp: any, i: number) => {\n const theta = blueprintTheta(i);\n const bx = layout.cx + blueprintRingR * Math.cos(theta);\n const by = layout.cy + blueprintRingR * Math.sin(theta);\n return renderBlueprintGlyph(bp, bx, by);\n })}\n\n\n {/* all green pulse */}\n {controller.state.endedAt && (\n <g pointerEvents=\"none\">\n <circle cx={layout.cx} cy={layout.cy} r={layout.outerR - 3} fill=\"none\" stroke={CONFIG.color.piece.allGreenStroke} strokeWidth={CONFIG.size.stroke.allGreenStrokePx} opacity={0}>\n <animate attributeName=\"opacity\" from=\"0\" to=\"1\" dur=\"160ms\" fill=\"freeze\" />\n <animate attributeName=\"opacity\" from=\"1\" to=\"0\" begin=\"560ms\" dur=\"520ms\" fill=\"freeze\" />\n </circle>\n </g>\n )}\n </svg>\n );\n}","// core/validate/complete.ts\nimport type { Poly, Vec } from \"@/core/domain/types\";\nimport { pointInPolygon } from \"@/core/engine/geometry\";\nimport { CONFIG } from \"@/core/config/config\";\n\n/** AABB of one or more polys */\nfunction aabb(polys: Poly[]) {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const poly of polys) for (const p of poly) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n return { minX, minY, maxX, maxY };\n}\n\n/** Cell centers over an AABB, aligned to GRID_PX centers (k + GRID_PX/2). */\nfunction cellCentersInAABB(minX: number, minY: number, maxX: number, maxY: number): Vec[] {\n const GRID_PX = CONFIG.layout.grid.stepPx;\n const x0 = Math.floor((minX - GRID_PX/2) / GRID_PX) * GRID_PX + GRID_PX/2;\n const y0 = Math.floor((minY - GRID_PX/2) / GRID_PX) * GRID_PX + GRID_PX/2;\n const out: Vec[] = [];\n for (let y = y0; y <= maxY; y += GRID_PX) {\n for (let x = x0; x <= maxX; x += GRID_PX) out.push({ x, y });\n }\n return out;\n}\n\n/** Build a set of grid centers that lie inside ANY of the polygons. */\nexport function cellSetForPolys(polys: Poly[]): Set<string> {\n if (!polys.length) return new Set();\n const { minX, minY, maxX, maxY } = aabb(polys);\n const centers = cellCentersInAABB(minX, minY, maxX, maxY);\n const key = (p: Vec) => `${p.x},${p.y}`;\n const S = new Set<string>();\n center: for (const c of centers) {\n for (const poly of polys) {\n if (pointInPolygon(c, poly)) { S.add(key(c)); continue center; }\n }\n }\n return S;\n}\n\n/** Anchors | Silhouette: complete iff silhouette cell set ⊆ piece cell set. */\nexport function anchorsSilhouetteComplete(silPolys: Poly[], piecePolys: Poly[]): boolean {\n if (!silPolys.length) return false;\n const S = cellSetForPolys(silPolys);\n if (S.size === 0) return false;\n const P = cellSetForPolys(piecePolys);\n if (P.size === 0) return false;\n for (const k of S) if (!P.has(k)) return false;\n return true;\n}\n\n// --- helpers for translation-invariant equality on the grid -----------------\nfunction stringSetToVecs(S: Set<string>): Vec[] {\n const out: Vec[] = [];\n for (const k of S) {\n const [xs, ys] = k.split(\",\");\n out.push({ x: Number(xs), y: Number(ys) });\n }\n return out;\n}\n\nfunction normalizeCells(S: Set<string>): Set<string> {\n if (S.size === 0) return S;\n const pts = stringSetToVecs(S);\n let minX = Infinity,\n minY = Infinity;\n for (const p of pts) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n }\n const N = new Set<string>();\n for (const p of pts) N.add(`${p.x - minX},${p.y - minY}`);\n return N;\n}\n\nfunction setsEqual(a: Set<string>, b: Set<string>): boolean {\n if (a.size !== b.size) return false;\n for (const k of a) if (!b.has(k)) return false;\n return true;\n}\n\n/**\n * Anchors | Workspace:\n * complete iff the pieces form the sector's silhouette pattern up to a GRID_PX translation.\n * (No rotation/mirror; exact coverage — no extra cells.)\n */\nexport function anchorsWorkspaceComplete(\n silPolys: Poly[],\n piecePolys: Poly[]\n): boolean {\n if (!silPolys.length) return false;\n const Sraw = cellSetForPolys(silPolys);\n const Praw = cellSetForPolys(piecePolys);\n if (Sraw.size === 0 || Praw.size === 0) return false;\n const S = normalizeCells(Sraw);\n const P = normalizeCells(Praw);\n return setsEqual(S, P);\n}","import type { Poly } from \"@/core/domain/types\";\n\n/**\n * Board Component Utilities\n * \n * This module provides utility functions used by board interaction hooks.\n * These functions handle coordinate transformations and geometric operations\n * needed for blueprint interaction and polygon scaling.\n */\n\n/**\n * Convert world coordinates to blueprint local coordinates\n * \n * When a user clicks on a blueprint glyph in the blueprint ring, this function\n * converts the world click coordinates to local coordinates within the blueprint's\n * coordinate system. This is needed to maintain the clicked point under the cursor\n * when spawning and dragging new pieces.\n * \n * @param px - World X coordinate (SVG space)\n * @param py - World Y coordinate (SVG space) \n * @param bpGeom - Blueprint geometry information\n * @param bpGeom.bx - Blueprint center X in world space\n * @param bpGeom.by - Blueprint center Y in world space\n * @param bpGeom.cx - Blueprint local center X\n * @param bpGeom.cy - Blueprint local center Y\n * @returns Local coordinates within the blueprint's coordinate system\n * \n * @example\n * ```typescript\n * const localPoint = blueprintLocalFromWorld(100, 200, {\n * bx: 50, by: 50, // Blueprint is rendered at (50, 50) in world space\n * cx: 25, cy: 25 // Blueprint's local center is at (25, 25)\n * });\n * // Result: { x: 75, y: 175 } - point in blueprint's local coordinate system\n * ```\n */\nexport function blueprintLocalFromWorld(\n px: number,\n py: number,\n bpGeom: { bx: number; by: number; cx: number; cy: number }\n) {\n return { x: px - bpGeom.bx + bpGeom.cx, y: py - bpGeom.by + bpGeom.cy };\n}\n\n/**\n * Scale polygons by factor S about the origin (no translation/snapping)\n * \n * This function scales polygon coordinates by a factor S around the origin (0,0).\n * Used for scaling silhouette masks and other geometric shapes when computing\n * layouts with different scaling factors. The scaling is uniform (same factor\n * for both X and Y axes).\n * \n * @param polys - Array of polygons to scale\n * @param S - Scale factor (1.0 = no change, 0.5 = half size, 2.0 = double size)\n * @returns New array of scaled polygons (original polygons are not modified)\n * \n * @example\n * ```typescript\n * const originalPolys = [[\n * { x: 10, y: 10 },\n * { x: 20, y: 10 }, \n * { x: 15, y: 20 }\n * ]];\n * \n * const scaledPolys = scalePolys(originalPolys, 2.0);\n * // Result: [[\n * // { x: 20, y: 20 },\n * // { x: 40, y: 20 },\n * // { x: 30, y: 40 }\n * // ]]\n * ```\n */\nexport function scalePolys(polys: Poly[], S: number): Poly[] {\n if (!polys || polys.length === 0) return [];\n return polys.map(poly => poly.map(p => ({ x: S * p.x, y: S * p.y })));\n}","import React from \"react\";\nimport { BaseGameController } from \"@/core/engine/state/BaseGameController\";\nimport type { Poly } from \"@/core/domain/types\";\nimport { boundsOfBlueprint, piecePolysAt } from \"@/core/engine/geometry\";\n\n/**\n * Piece data interface used throughout the hook system\n * \n * Represents a tangram piece instance with position and blueprint information.\n * This is the normalized interface used across all board components.\n */\nexport interface PieceData {\n /** Unique identifier for this piece instance */\n id: string;\n \n /** ID of the blueprint that defines this piece's shape */\n blueprintId: string;\n \n /** X coordinate of the piece's top-left position in SVG space */\n x: number;\n \n /** Y coordinate of the piece's top-left position in SVG space */\n y: number;\n \n /** ID of the sector containing this piece (undefined if floating) */\n sectorId?: string;\n}\n\n/**\n * Return interface for usePieceState hook\n * \n * Provides normalized piece data and computed polygon functions for collision\n * detection and rendering. All functions are memoized for optimal performance.\n */\nexport interface PieceStateHook {\n /** Array of all pieces from all sectors plus floating pieces */\n pieces: PieceData[];\n \n /** \n * Lookup function to find a piece by its ID\n * @param id - Piece ID to lookup (null-safe)\n * @returns PieceData or null if not found\n */\n pieceById: (id: string | null) => PieceData | null;\n \n /** \n * Compute world polygons for all pieces in a sector (live/no cache)\n * @param sectorId - Target sector ID\n * @returns Array of world-space polygons\n */\n sectorPiecePolysLive: (sectorId: string) => Poly[];\n \n /** \n * Cached version of sectorPiecePolysLive with signature-based invalidation\n * @param sectorId - Target sector ID \n * @returns Cached array of world-space polygons\n */\n getSectorPiecePolysCached: (sectorId: string) => Poly[];\n}\n\n/**\n * Hook for managing piece data and computed polygon states\n * \n * This hook provides normalized access to piece data from the BaseGameController,\n * combining pieces from sectors and floating state into a unified interface.\n * It also provides optimized polygon computation functions for collision detection.\n * \n * ## Key Features\n * - **Unified piece access**: Combines sector and floating pieces\n * - **Polygon caching**: Optimized collision detection with signature-based cache\n * - **Live updates**: Reactively updates when controller state changes\n * - **Null-safe lookups**: Safe piece retrieval by ID\n * \n * ## Performance\n * - Pieces array is memoized based on controller.updateCount\n * - Polygon cache uses sector \"signature\" (piece positions) for invalidation\n * - Live polygon computation bypasses cache for real-time operations\n * \n * @param controller - BaseGameController instance managing game state\n * @returns Hook interface with piece data and polygon functions\n * \n * @example\n * ```typescript\n * const pieceState = usePieceState(controller);\n * const allPieces = pieceState.pieces;\n * const piece = pieceState.pieceById(\"piece_123\");\n * const sectorPolygons = pieceState.sectorPiecePolysLive(\"sector_1\");\n * ```\n */\nexport function usePieceState(controller: BaseGameController): PieceStateHook {\n // --- pieces ---------------------------------------------------------------\n const pieces = React.useMemo(() => {\n const out: PieceData[] = [];\n for (const s of Object.values(controller.state.sectors)) {\n for (const p of s.pieces) {\n out.push({\n id: p.id,\n blueprintId: p.blueprintId,\n x: p.pos.x,\n y: p.pos.y,\n sectorId: s.sectorId\n });\n }\n }\n const floating: any = (controller as any)._floating;\n if (floating?.pieces) {\n for (const p of floating.pieces) {\n out.push({\n id: p.id,\n blueprintId: p.blueprintId,\n x: p.pos.x,\n y: p.pos.y\n });\n }\n }\n return out;\n }, [controller.state.sectors, (controller as any)._floating, controller.updateCount]);\n\n const pieceById = React.useCallback(\n (id: string | null) => (id ? pieces.find(p => p.id === id) ?? null : null),\n [pieces]\n );\n\n // --- LIVE sector polys (reads controller.state directly) -----------------\n const sectorPiecePolysLive = React.useCallback(\n (sectorId: string): Poly[] => {\n const out: Poly[] = [];\n const ss = controller.state.sectors[sectorId];\n if (!ss) return out;\n for (const p of ss.pieces) {\n const bp = controller.getBlueprint(p.blueprintId)!;\n const bb = boundsOfBlueprint(bp, controller.getPrimitive);\n out.push(...piecePolysAt(bp, bb, { x: p.pos.x, y: p.pos.y }));\n }\n return out;\n },\n [controller]\n );\n\n // --- OPTIONAL: cached variant keyed by a sector \"signature\" --------------\n // Sig = pieceId@x,y;... (order-insensitive)\n const polyCacheRef = React.useRef(\n new Map<string, { sig: string; polys: Poly[] }>()\n );\n\n const sectorSignature = React.useCallback(\n (sectorId: string): string => {\n const ss = controller.state.sectors[sectorId];\n if (!ss) return \"\";\n // stable order by id\n const parts = ss.pieces\n .slice()\n .sort((a, b) => (a.id < b.id ? -1 : 1))\n .map(p => `${p.id}@${p.pos.x},${p.pos.y}`);\n return parts.join(\"|\");\n },\n [controller.state.sectors]\n );\n\n const getSectorPiecePolysCached = React.useCallback(\n (sectorId: string): Poly[] => {\n const sig = sectorSignature(sectorId);\n const hit = polyCacheRef.current.get(sectorId);\n if (hit && hit.sig === sig) return hit.polys;\n const polys = sectorPiecePolysLive(sectorId);\n polyCacheRef.current.set(sectorId, { sig, polys });\n return polys;\n },\n [sectorSignature, sectorPiecePolysLive]\n );\n\n return {\n pieces,\n pieceById,\n sectorPiecePolysLive,\n getSectorPiecePolysCached\n };\n}","/**\n * Grid Snapping Engine - PHASE 2 MILESTONE\n * \n * Consolidates duplicate anchor functions from anchors.ts and anchors-mode.ts\n * into a single, parameterized grid snapping system.\n */\n\nimport type { Blueprint, Poly, Vec, PrimitiveBlueprint } from \"../../domain/types\";\nimport type { CircleLayout, SectorGeom } from \"../../domain/layout\";\nimport { \n boundsOfBlueprint, \n pointInPolygon, \n gridNodesInAABB, \n filterNodesToBandAndSector, \n filterNodesInPolys\n} from \"../geometry\";\nimport { CONFIG } from \"../../config/config\";\n\nexport interface GridConfig {\n stepPx: number;\n snapRadiusPx: number;\n densitySampleStepPx?: number; // For polyFullyInside sampling\n}\n\nexport interface SnapResult {\n tl: Vec;\n node: Vec | null;\n dist: number;\n accepted: boolean;\n}\n\n/**\n * GridSnapper handles all anchor-based snapping and node generation\n */\nexport class GridSnapper {\n private config: GridConfig;\n\n constructor(config: GridConfig) {\n this.config = config;\n }\n\n // ===== Reference Vertex Management =====\n \n /**\n * Choose a reference vertex (v0 of first poly) for snapping.\n * Consolidated from both anchors.ts and anchors-mode.ts\n */\n referenceVertex(bp: Blueprint): Vec {\n const poly = (\"shape\" in bp && bp.shape?.[0]) ? bp.shape[0] : [{x:0,y:0}];\n return poly[0] ?? { x: 0, y: 0 };\n }\n\n // ===== Snapping Operations =====\n\n /**\n * Perform nearest-node snapping with configurable snap radius\n * Consolidated from both files with enhanced configuration\n */\n nearestNodeSnap(\n tl: Vec,\n bp: Blueprint,\n primitiveLookup: (k: string) => PrimitiveBlueprint | undefined,\n nodes: Vec[]\n ): SnapResult {\n if (!nodes.length) {\n return { tl, node: null, dist: Infinity, accepted: false };\n }\n\n const bb = boundsOfBlueprint(bp, primitiveLookup);\n const v0 = this.referenceVertex(bp);\n const v0World = { x: tl.x + (v0.x - bb.min.x), y: tl.y + (v0.y - bb.min.y) };\n\n let best: Vec | null = null;\n let bestD2 = Infinity;\n \n for (const n of nodes) {\n const dx = n.x - v0World.x;\n const dy = n.y - v0World.y;\n const d2 = dx * dx + dy * dy;\n if (d2 < bestD2) { \n bestD2 = d2; \n best = n; \n }\n }\n\n const distance = Math.sqrt(bestD2);\n const accepted = distance <= this.config.snapRadiusPx;\n \n const snapped = (best && accepted)\n ? { x: tl.x + (best.x - v0World.x), y: tl.y + (best.y - v0World.y) }\n : tl;\n\n return { \n tl: snapped, \n node: best, \n dist: distance, \n accepted \n };\n }\n\n /**\n * Back-compatibility shim for existing Board.tsx usage\n */\n snapTopLeftToNodes(\n tl: Vec,\n bp: Blueprint,\n primitiveLookup: (k: string) => PrimitiveBlueprint | undefined,\n nodes: Vec[]\n ): { x: number; y: number } {\n const { tl: snapped } = this.nearestNodeSnap(tl, bp, primitiveLookup, nodes);\n return snapped;\n }\n\n // ===== Node Generation =====\n\n /**\n * Generate workspace-band grid nodes for a sector\n * Extracted from anchors-mode.ts\n */\n generateWorkspaceNodes(layout: CircleLayout, sector: SectorGeom): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.outerR, y: layout.cy - layout.outerR - pad };\n const max = { x: layout.cx + layout.outerR, y: layout.cy + layout.outerR + pad };\n const nodes = gridNodesInAABB(min, max);\n return filterNodesToBandAndSector(nodes, layout, \"workspace\", sector);\n }\n\n /**\n * Generate silhouette-mask nodes for a sector\n * Extracted from anchors-mode.ts\n */\n generateSilhouetteNodes(layout: CircleLayout, sector: SectorGeom, fittedMask: Poly[]): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.outerR, y: layout.cy - layout.outerR - pad };\n const max = { x: layout.cx + layout.outerR, y: layout.cy + layout.outerR + pad };\n const nodes = gridNodesInAABB(min, max);\n const banded = filterNodesToBandAndSector(nodes, layout, \"silhouette\", sector);\n return filterNodesInPolys(banded, fittedMask, pointInPolygon);\n }\n\n /**\n * Generate silhouette-band nodes for a sector (no mask filter)\n * Extracted from anchors-mode.ts\n */\n generateSilhouetteBandNodes(layout: CircleLayout, sector: SectorGeom): Vec[] {\n const pad = 6;\n const min = { x: layout.cx - layout.outerR, y: layout.cy - layout.outerR - pad };\n const max = { x: layout.cx + layout.outerR, y: layout.cy + layout.outerR + pad };\n const nodes = gridNodesInAABB(min, max);\n return filterNodesToBandAndSector(nodes, layout, \"silhouette\", sector);\n }\n\n // ===== Validation Helpers =====\n\n /**\n * Check if point lies inside any silhouette polygon (union semantics)\n * Private helper used by polyFullyInside\n */\n private insideAnySilhouette(pt: Vec, silPolys: Poly[]): boolean {\n for (const sp of silPolys) {\n if (pointInPolygon(pt, sp)) return true;\n }\n return false;\n }\n\n /**\n * Robust \"fully inside\" check with configurable sampling density\n * Consolidated from both files with enhanced configuration\n */\n polyFullyInside(\n piecePolys: Poly[],\n silhouettePolys: Poly[],\n customStep?: number\n ): boolean {\n // Quick exits\n if (!piecePolys.length) return true;\n if (!silhouettePolys.length) return false;\n\n const step = customStep ?? \n this.config.densitySampleStepPx ?? \n Math.max(1, Math.round(CONFIG.layout.grid.stepPx / 3));\n\n for (const poly of piecePolys) {\n if (poly.length < 2) continue;\n\n for (let i = 0; i < poly.length; i++) {\n const a = poly[i];\n const b = poly[(i + 1) % poly.length];\n \n if (!a || !b) continue;\n \n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy);\n const n = Math.max(1, Math.ceil(len / step));\n\n // Sample all points along the edge, including endpoints\n for (let k = 0; k <= n; k++) {\n const t = k / n;\n const p = { x: a.x + t * dx, y: a.y + t * dy };\n if (!this.insideAnySilhouette(p, silhouettePolys)) {\n return false; // One point outside → reject\n }\n }\n }\n }\n return true;\n }\n}\n\n// ===== Factory Functions =====\n\n/**\n * Create a GridSnapper with default configuration\n */\nexport function createDefaultGridSnapper(): GridSnapper {\n return new GridSnapper({\n stepPx: CONFIG.layout.grid.stepPx,\n snapRadiusPx: CONFIG.game.snapRadiusPx,\n densitySampleStepPx: Math.max(1, Math.round(CONFIG.layout.grid.stepPx / 3))\n });\n}\n\n/**\n * Create a GridSnapper with custom snap radius\n */\nexport function createGridSnapper(snapRadiusPx: number): GridSnapper {\n return new GridSnapper({\n stepPx: CONFIG.layout.grid.stepPx,\n snapRadiusPx,\n densitySampleStepPx: Math.max(1, Math.round(CONFIG.layout.grid.stepPx / 3))\n });\n}\n\n// ===== Legacy Compatibility Exports =====\n// These maintain compatibility with existing code while using the new system\n\nexport const defaultGridSnapper = createDefaultGridSnapper();\n\nexport function referenceVertex(bp: Blueprint): Vec {\n return defaultGridSnapper.referenceVertex(bp);\n}\n\nexport function nearestNodeSnap(\n tl: Vec,\n bp: Blueprint,\n primitiveLookup: (k: string) => PrimitiveBlueprint | undefined,\n nodes: Vec[]\n): { tl: Vec; node: Vec | null; dist: number } {\n const result = defaultGridSnapper.nearestNodeSnap(tl, bp, primitiveLookup, nodes);\n return { tl: result.tl, node: result.node, dist: result.dist };\n}\n\nexport function snapTopLeftToNodes(\n tl: Vec,\n bp: Blueprint,\n primitiveLookup: (k: string) => PrimitiveBlueprint | undefined,\n nodes: Vec[]\n): { x: number; y: number } {\n return defaultGridSnapper.snapTopLeftToNodes(tl, bp, primitiveLookup, nodes);\n}\n\nexport function polyFullyInside(\n piecePolys: Poly[],\n silhouettePolys: Poly[],\n step?: number\n): boolean {\n return defaultGridSnapper.polyFullyInside(piecePolys, silhouettePolys, step);\n}\n\nexport function workspaceNodes(layout: CircleLayout, sector: SectorGeom): Vec[] {\n return defaultGridSnapper.generateWorkspaceNodes(layout, sector);\n}\n\nexport function silhouetteNodes(layout: CircleLayout, sector: SectorGeom, fittedMask: Poly[]): Vec[] {\n return defaultGridSnapper.generateSilhouetteNodes(layout, sector, fittedMask);\n}\n\nexport function silhouetteBandNodes(layout: CircleLayout, sector: SectorGeom): Vec[] {\n return defaultGridSnapper.generateSilhouetteBandNodes(layout, sector);\n}\n\nexport { innerRingNodes } from \"../geometry\";","import React from \"react\";\nimport { BaseGameController } from \"@/core/engine/state/BaseGameController\";\nimport type { CircleLayout } from \"@/core/domain/layout\";\nimport { rectForBand } from \"@/core/domain/layout\";\nimport { placeSilhouetteGridAlignedAsPolys } from \"@/core/engine/geometry\";\nimport {\n workspaceNodes,\n silhouetteNodes,\n silhouetteBandNodes,\n innerRingNodes\n} from \"@/core/engine/collision/grid-snapping\";\n\n/**\n * Anchor dots data for a single sector\n * \n * Represents the valid and invalid snap points for piece placement within\n * a sector. Valid dots allow piece placement, invalid dots show grid structure\n * but don't allow snapping.\n */\nexport interface AnchorDots {\n /** Sector ID these anchor dots belong to */\n sectorId: string;\n \n /** Array of valid snap points where pieces can be placed */\n valid: { x: number; y: number }[];\n \n /** Array of invalid snap points (visual grid, no placement allowed) */\n invalid: { x: number; y: number }[];\n}\n\n/**\n * Return interface for useAnchorGrid hook\n * \n * Provides computed anchor grid data for all active sectors in the layout.\n * Used by rendering components to draw snap points and by interaction hooks\n * for piece placement validation.\n */\nexport interface AnchorGridHook {\n /** Array of anchor dot data for all sectors (excludes completed sectors) */\n anchorDots: AnchorDots[];\n}\n\n/**\n * Hook for computing anchor grid data for all sectors\n * \n * This hook computes the snap points (anchor dots) for piece placement validation\n * across all active sectors. It handles both workspace and silhouette target modes,\n * computing appropriate valid and invalid snap points for each.\n * \n * ## Key Features\n * - **Workspace mode**: All grid nodes within sector bounds are valid\n * - **Silhouette mode**: Only nodes within silhouette mask are valid\n * - **Completion hiding**: Completed sectors don't show anchor dots\n * - **Scale-aware**: Handles silhouette scaling for proper grid alignment\n * \n * ## Target Mode Behavior\n * - **Workspace**: `valid` contains all workspace nodes, `invalid` is empty\n * - **Silhouette**: `valid` contains nodes inside silhouette, `invalid` contains band nodes outside\n * \n * @param controller - BaseGameController instance for accessing game state\n * @param layout - Computed CircleLayout containing sector geometry\n * @param scaleS - Scaling factor for silhouette placement (from solveLogicalBox)\n * @returns Hook interface with anchor dots for all active sectors\n * \n * @example\n * ```typescript\n * const { anchorDots } = useAnchorGrid(controller, layout, scaleS);\n * const sectorAnchors = anchorDots.find(a => a.sectorId === \"sector_1\");\n * const snapPoints = sectorAnchors?.valid ?? [];\n * ```\n */\nexport function useAnchorGrid(\n controller: BaseGameController,\n layout: CircleLayout,\n scaleS: number\n): AnchorGridHook {\n const cfg = controller.state.cfg;\n\n const anchorDots: AnchorDots[] = React.useMemo(() => {\n const out: AnchorDots[] = [];\n\n // Add inner ring anchors (always valid, shown throughout)\n out.push({ sectorId: \"inner-ring\", valid: innerRingNodes(layout), invalid: [] });\n\n for (const s of layout.sectors) {\n // Show anchors for ALL sectors, including completed ones\n if (cfg.target === \"workspace\") {\n out.push({ sectorId: s.id, valid: workspaceNodes(layout, s), invalid: [] });\n } else {\n const mask = controller.state.cfg.sectors.find(ss => ss.id === s.id)?.silhouette.mask ?? [];\n if (!mask || mask.length === 0) continue;\n const rect = rectForBand(layout, s, \"silhouette\", 1.0); // center only; size was handled in global scale\n const placedPolys = placeSilhouetteGridAlignedAsPolys(mask, scaleS, { cx: rect.cx, cy: rect.cy });\n const bandAll = silhouetteBandNodes(layout, s);\n const valid = silhouetteNodes(layout, s, placedPolys);\n // invalid = bandAll \\ valid (by coordinate)\n const key = (p: { x: number; y: number }) => `${p.x},${p.y}`;\n const validSet = new Set(valid.map(key));\n const invalid = bandAll.filter(p => !validSet.has(key(p)));\n out.push({ sectorId: s.id, valid, invalid });\n }\n }\n return out;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cfg.target, controller.state.sectors, layout, scaleS]);\n\n return {\n anchorDots\n };\n}","/**\n * Face-to-Face Attachment Validation for Prep Mode\n * \n * Validates that pieces in prep mode attach to existing pieces by sharing\n * at least 1 anchor unit of edge contact. Uses discrete unit segments\n * for precise edge detection.\n */\n\nimport type { Piece, Vec, Blueprint } from \"../../domain/types\";\nimport { CONFIG } from \"../../config/config\";\nimport { boundsOfBlueprint } from \"../geometry\";\n\nexport interface EdgeAttachmentResult {\n isAttached: boolean;\n attachedPieceIds: string[];\n sharedEdgeLength: number; // In anchor units\n}\n\nexport interface UnitSegment {\n a: Vec;\n b: Vec;\n}\n\n/**\n * Convert a polygon edge into unit-length segments\n * Each segment represents a discrete coordinate unit along the edge\n */\nfunction edgeToUnitSegments(start: Vec, end: Vec, gridSize: number): UnitSegment[] {\n const segments: UnitSegment[] = [];\n \n // Convert to grid coordinates\n const startGrid = {\n x: Math.round(start.x / gridSize),\n y: Math.round(start.y / gridSize)\n };\n const endGrid = {\n x: Math.round(end.x / gridSize),\n y: Math.round(end.y / gridSize)\n };\n \n const dx = endGrid.x - startGrid.x;\n const dy = endGrid.y - startGrid.y;\n \n if (dx === 0 && dy === 0) return []; // Zero-length edge\n \n const steps = Math.max(Math.abs(dx), Math.abs(dy));\n const stepX = dx / steps;\n const stepY = dy / steps;\n \n for (let i = 0; i < steps; i++) {\n const aX = Math.round(startGrid.x + i * stepX);\n const aY = Math.round(startGrid.y + i * stepY);\n const bX = Math.round(startGrid.x + (i + 1) * stepX);\n const bY = Math.round(startGrid.y + (i + 1) * stepY);\n segments.push({ \n a: { x: aX, y: aY }, \n b: { x: bX, y: bY } \n });\n }\n \n return segments;\n}\n\n\n\n/**\n * Get all unit segments for a piece (all edges broken down into unit-length segments)\n * Uses the same coordinate system as piecePolysAt for consistency with visual rendering\n */\nfunction getPieceUnitSegments(\n piece: Piece, \n getBlueprint: (id: string) => Blueprint | undefined,\n getPrimitive: (kind: string) => any,\n gridSize: number\n): UnitSegment[] {\n const blueprint = getBlueprint(piece.blueprintId);\n if (!blueprint?.shape) return [];\n \n // Calculate offset using same logic as piecePolysAt\n const bb = boundsOfBlueprint(blueprint, getPrimitive);\n const ox = piece.pos.x - bb.min.x;\n const oy = piece.pos.y - bb.min.y;\n \n const allSegments: UnitSegment[] = [];\n \n // Translate polygons and convert edges to unit segments\n for (const poly of blueprint.shape) {\n const translatedPoly = poly.map((vertex: Vec) => ({\n x: vertex.x + ox,\n y: vertex.y + oy\n }));\n \n for (let i = 0; i < translatedPoly.length; i++) {\n const current = translatedPoly[i];\n const next = translatedPoly[(i + 1) % translatedPoly.length];\n \n if (!current || !next) continue;\n \n allSegments.push(...edgeToUnitSegments(current, next, gridSize));\n }\n }\n \n return allSegments;\n}\n\n/**\n * Main face-to-face attachment validation function\n */\nexport function checkFaceToFaceAttachment(\n piece: Piece,\n existingPieces: Piece[],\n getBlueprint: (id: string) => Blueprint | undefined,\n getPrimitive: (kind: string) => any\n): EdgeAttachmentResult {\n if (existingPieces.length === 0) {\n return { isAttached: true, attachedPieceIds: [], sharedEdgeLength: 0 };\n }\n \n const gridSize = CONFIG.layout.grid.stepPx;\n const newPieceSegments = getPieceUnitSegments(piece, getBlueprint, getPrimitive, gridSize);\n \n if (newPieceSegments.length === 0) {\n return { isAttached: false, attachedPieceIds: [], sharedEdgeLength: 0 };\n }\n \n let totalSharedLength = 0;\n const attachedPieceIds: string[] = [];\n \n // Check against each existing piece\n for (const existingPiece of existingPieces) {\n const existingSegments = getPieceUnitSegments(existingPiece, getBlueprint, getPrimitive, gridSize);\n \n // Find shared segments (undirected edge matching)\n const sharedSegments = newPieceSegments.filter(newSeg => \n existingSegments.some(existingSeg => \n // Check if segments share the same endpoints (identical or reversed)\n (newSeg.a.x === existingSeg.a.x && newSeg.a.y === existingSeg.a.y &&\n newSeg.b.x === existingSeg.b.x && newSeg.b.y === existingSeg.b.y) ||\n (newSeg.a.x === existingSeg.b.x && newSeg.a.y === existingSeg.b.y &&\n newSeg.b.x === existingSeg.a.x && newSeg.b.y === existingSeg.a.y)\n )\n );\n \n if (sharedSegments.length > 0) {\n totalSharedLength += sharedSegments.length;\n attachedPieceIds.push(existingPiece.id);\n }\n }\n \n return {\n isAttached: totalSharedLength >= 1,\n attachedPieceIds,\n sharedEdgeLength: totalSharedLength\n };\n}\n\n/**\n * Check if removing a piece would disconnect the remaining pieces in a sector\n * Uses graph connectivity to ensure all remaining pieces stay connected\n */\nexport function wouldRemovalDisconnectSector(\n pieceToRemove: Piece,\n allPiecesInSector: Piece[],\n getBlueprint: (id: string) => Blueprint | undefined,\n getPrimitive: (kind: string) => any\n): boolean {\n // If there are 0 or 1 pieces remaining, no disconnection possible\n if (allPiecesInSector.length <= 2) return false;\n \n const remainingPieces = allPiecesInSector.filter(p => p.id !== pieceToRemove.id);\n if (remainingPieces.length <= 1) return false;\n \n // Build adjacency graph of remaining pieces\n const adjacencyMap = new Map<string, string[]>();\n \n // Initialize adjacency map\n for (const piece of remainingPieces) {\n adjacencyMap.set(piece.id, []);\n }\n \n // Check all pairs of remaining pieces for connectivity\n for (let i = 0; i < remainingPieces.length; i++) {\n for (let j = i + 1; j < remainingPieces.length; j++) {\n const piece1 = remainingPieces[i];\n const piece2 = remainingPieces[j];\n \n if (!piece1 || !piece2) continue;\n \n const result = checkFaceToFaceAttachment(piece1, [piece2], getBlueprint, getPrimitive);\n if (result.isAttached) {\n adjacencyMap.get(piece1.id)!.push(piece2.id);\n adjacencyMap.get(piece2.id)!.push(piece1.id);\n }\n }\n }\n \n // Check if graph is connected using DFS\n const visited = new Set<string>();\n const startPiece = remainingPieces[0];\n \n if (!startPiece) return false;\n \n function dfs(pieceId: string) {\n if (visited.has(pieceId)) return;\n visited.add(pieceId);\n \n const neighbors = adjacencyMap.get(pieceId) || [];\n for (const neighborId of neighbors) {\n dfs(neighborId);\n }\n }\n \n dfs(startPiece.id);\n \n // If we visited all pieces, the graph is connected\n return visited.size !== remainingPieces.length;\n}","import React from \"react\";\nimport { BaseGameController } from \"@/core/engine/state/BaseGameController\";\nimport type { CircleLayout } from \"@/core/domain/layout\";\nimport type { Blueprint } from \"@/core/domain/types\";\nimport { sectorAtPoint } from \"@/core/domain/layout\";\nimport { \n boundsOfBlueprint, \n computeSupportOffsets, \n clampTopLeftBySupport, \n polysOverlap, \n piecePolysAt \n} from \"@/core/engine/geometry\";\nimport { nearestNodeSnap, polyFullyInside } from \"@/core/engine/collision/grid-snapping\";\nimport { checkFaceToFaceAttachment, wouldRemovalDisconnectSector } from \"@/core/engine/validation/face-to-face\";\nimport { blueprintLocalFromWorld } from \"./utils\";\nimport type { AnchorDots } from \"./useAnchorGrid\";\nimport type { PieceData } from \"./usePieceState\";\nimport { CONFIG } from \"@/core/config/config\";\n\ninterface DragState {\n id: string;\n dx: number;\n dy: number;\n tlx: number;\n tly: number;\n aabb: { width: number; height: number };\n minx: number;\n miny: number;\n support: { x: number; y: number }[];\n fromIcon?: boolean;\n validSnap?: boolean;\n prevValidSnap?: boolean;\n raf?: number | null;\n originalPos?: { x: number; y: number; sectorId: string | undefined } | undefined; // For prep mode: return to original position when invalid\n pointerAnchor?: { x: number; y: number } | null;\n pointerAnchorId?: string | null;\n pointerAnchorSectorId?: string | undefined;\n snapAnchor?: { x: number; y: number } | null;\n snapAnchorId?: string | null;\n snapAnchorSectorId?: string | undefined;\n snapAnchorDist?: number | null;\n overlaps?: boolean;\n maxExceeded?: boolean;\n}\n\n/**\n * Return interface for useDragController hook\n * \n * Provides complete drag interaction functionality for both click and drag input modes.\n * Handles piece spawning, dragging, collision detection, snapping, and placement validation.\n */\nexport interface DragControllerHook {\n // State\n /** ID of currently dragging piece (null if none) */\n draggingId: string | null;\n \n /** True if current drag position is invalid (for visual feedback) */\n dragInvalid: boolean;\n \n /** ID of piece that is locked due to connectivity constraints (for visual feedback) */\n lockedPieceId: string | null;\n \n /** Ref to SVG element for coordinate transformation and pointer capture */\n svgRef: React.RefObject<SVGSVGElement>;\n \n // Handlers\n /** \n * Handler for piece pointer down events (both click and drag modes)\n * @param e - Pointer event from SVG path or group element\n * @param p - Piece data including position and blueprint information\n */\n onPiecePointerDown: (\n e: React.PointerEvent<SVGPathElement | SVGGElement>,\n p: { id: string; x: number; y: number; blueprintId: string; sectorId?: string }\n ) => void;\n \n /** \n * Handler for blueprint icon pointer down events (spawning new pieces)\n * @param e - Pointer event from blueprint icon\n * @param bp - Blueprint definition for the new piece\n * @param bpGeom - Geometry information for the blueprint icon\n */\n onBlueprintPointerDown: (\n e: React.PointerEvent,\n bp: Blueprint,\n bpGeom: { bx: number; by: number; cx: number; cy: number }\n ) => void;\n \n /** \n * Handler for pointer move events during drag operations\n * @param e - Pointer event from SVG root element\n */\n onPointerMove: (e: React.PointerEvent<SVGSVGElement>) => void;\n \n /** Handler for pointer up events (completing drag operations) */\n onPointerUp: () => void;\n \n /** \n * Factory function for piece element refs (for direct DOM manipulation)\n * @param id - Piece ID\n * @returns Ref callback for SVG group element\n */\n setPieceRef: (id: string) => (el: SVGGElement | null) => void;\n \n // Click controller integration\n /** \n * Setter for dragging ID (used by click controller for carry state)\n * @param id - Piece ID or null to clear\n */\n setDraggingId: (id: string | null) => void;\n \n // TODO: Remove this once click mode is extracted - temporary for compatibility\n /** Internal drag state ref (temporary for click controller integration) */\n dragRef: React.RefObject<DragState | null>;\n}\n\n/**\n * Hook for managing drag interactions with RAF optimization and collision detection\n * \n * This is the most complex hook in the system, handling all aspects of piece interaction\n * for both click and drag input modes. It manages piece spawning, dragging, collision\n * detection, grid snapping, placement validation, and visual feedback.\n * \n * ## Key Features\n * - **Dual input mode support**: Handles both click and drag interaction patterns\n * - **RAF-optimized rendering**: Uses requestAnimationFrame for smooth drag performance\n * - **Collision detection**: Real-time overlap checking with existing pieces\n * - **Grid snapping**: Automatic snapping to anchor points with validation\n * - **Placement validation**: Comprehensive validation for workspace/silhouette modes\n * - **Visual feedback**: Real-time visual indicators for valid/invalid placement\n * \n * ## Input Mode Behavior\n * - **Click mode**: First click starts \"carry\" state, second click places/cancels\n * - **Drag mode**: Traditional drag-and-drop with immediate visual feedback\n * \n * ## Validation Rules\n * - **Workspace mode**: Pieces must not overlap, any grid position valid\n * - **Silhouette mode**: Pieces must be within silhouette mask, on valid anchors, no overlap\n * - **Completed sectors**: No placement allowed, pieces deleted if dropped\n * \n * @param controller - BaseGameController for state management\n * @param layout - Computed CircleLayout for sector geometry\n * @param pieces - Current piece data from usePieceState\n * @param pieceById - Lookup function for piece data\n * @param anchorDots - Anchor grid data from useAnchorGrid\n * @param placedSilBySector - Silhouette polygons for containment checking\n * @param isSectorLocked - Function to check if sector is completed\n * @param maybeCompleteSector - Callback to check sector completion after placement\n * @param force - Force React re-render function\n * @param clickController - Optional click controller integration\n * @returns Hook interface with drag state and event handlers\n * \n * @example\n * ```typescript\n * const dragController = useDragController(\n * controller, layout, pieces, pieceById, anchorDots,\n * placedSilBySector, isSectorLocked, maybeCompleteSector, force\n * );\n * \n * // Usage in JSX:\n * <svg ref={dragController.svgRef} onPointerMove={dragController.onPointerMove}>\n * <g onPointerDown={(e) => dragController.onPiecePointerDown(e, piece)}>\n * <path /> \n * </g>\n * </svg>\n * ```\n */\nexport function useDragController(\n controller: BaseGameController,\n layout: CircleLayout,\n pieces: PieceData[],\n pieceById: (id: string | null) => PieceData | null,\n anchorDots: AnchorDots[],\n placedSilBySector: Map<string, any[]>,\n isSectorLocked: (id: string) => boolean,\n maybeCompleteSector: (secId: string) => boolean,\n force: () => void,\n // Click controller integration\n clickController?: {\n setSelectedPiece: (id: string | null) => void;\n setPendingBp: (id: string | null) => void;\n },\n // Interaction tracking\n tracker?: {\n recordPickup: (\n pieceId: string,\n blueprintId: string,\n blueprintType: 'primitive' | 'composite',\n source: 'blueprint' | 'sector',\n position: { x: number; y: number },\n vertices: number[][][],\n sectorId?: string\n ) => void;\n recordPlacedown: (\n outcome: 'placed' | 'deleted',\n sectorId?: string,\n position?: { x: number; y: number },\n vertices?: number[][][],\n anchorId?: string,\n wasValid?: boolean,\n wasOverlapping?: boolean,\n completedSector?: boolean\n ) => void;\n recordMouseMove?: (anchorX: number, anchorY: number, sectorId?: string) => void;\n recordClickEvent?: (\n location: { x: number; y: number },\n clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt',\n metadata?: any\n ) => void;\n } | null\n): DragControllerHook {\n const cfg = controller.state.cfg;\n const clickMode = cfg.input === \"click\";\n \n // Core drag state\n const svgRef = React.useRef<SVGSVGElement | null>(null);\n const dragRef = React.useRef<DragState | null>(null);\n const [draggingId, setDraggingId] = React.useState<string | null>(null);\n const elMap = React.useRef(new Map<string, SVGGElement>());\n \n // Visual feedback for connectivity-locked pieces\n const [lockedPieceId, setLockedPieceId] = React.useState<string | null>(null);\n \n // Ensure dragRef is cleared when draggingId becomes null (for click controller integration)\n React.useEffect(() => {\n if (draggingId === null) {\n dragRef.current = null;\n }\n }, [draggingId]);\n\n const setPieceRef = (id: string) => (el: SVGGElement | null) => {\n const m = elMap.current;\n if (el) m.set(id, el); else m.delete(id);\n };\n\n const svgPoint = (clientX: number, clientY: number) => {\n const svg = svgRef.current!;\n const pt = svg.createSVGPoint();\n pt.x = clientX; pt.y = clientY;\n const ctm = svg.getScreenCTM();\n if (!ctm) return { x: 0, y: 0 };\n const sp = pt.matrixTransform(ctm.inverse());\n return { x: sp.x, y: sp.y };\n };\n\n const scheduleFrame = () => {\n if (!dragRef.current) return;\n const d = dragRef.current;\n if (d.raf != null) return;\n d.raf = requestAnimationFrame(() => {\n d.raf = null;\n const g = elMap.current.get(d.id);\n if (g) g.setAttribute(\"transform\", `translate(${d.tlx - d.minx}, ${d.tly - d.miny})`);\n });\n };\n\n const sectorIdAt = (x: number, y: number) => sectorAtPoint(x, y, layout, cfg.target);\n const GRID_STEP = CONFIG.layout.grid.stepPx;\n\n const anchorIdFromNode = (node: { x: number; y: number } | null | undefined): string | null => {\n if (!node) return null;\n const ax = Math.round(node.x / GRID_STEP);\n const ay = Math.round(node.y / GRID_STEP);\n return `${ax},${ay}`;\n };\n\n const anchorNodeFromPoint = (point: { x: number; y: number }) => ({\n x: Math.round(point.x / GRID_STEP) * GRID_STEP,\n y: Math.round(point.y / GRID_STEP) * GRID_STEP\n });\n\n const updatePointerAnchor = (point: { x: number; y: number }, sectorId: string | undefined) => {\n if (!dragRef.current) return;\n const d = dragRef.current;\n const anchorNode = anchorNodeFromPoint(point);\n const anchorId = anchorIdFromNode(anchorNode);\n\n if (tracker?.recordMouseMove && (anchorId !== d.pointerAnchorId || sectorId !== d.pointerAnchorSectorId)) {\n tracker.recordMouseMove(anchorNode.x, anchorNode.y, sectorId);\n }\n\n d.pointerAnchor = anchorNode;\n d.pointerAnchorId = anchorId;\n d.pointerAnchorSectorId = sectorId;\n };\n\n const updateSnapAnchor = (\n node: { x: number; y: number } | null,\n sectorId: string | undefined,\n dist?: number\n ) => {\n if (!dragRef.current) return;\n const d = dragRef.current;\n d.snapAnchor = node;\n d.snapAnchorId = anchorIdFromNode(node);\n d.snapAnchorSectorId = sectorId;\n d.snapAnchorDist = node && dist !== undefined ? dist : null;\n };\n\n const emitClickEvent = (\n location: { x: number; y: number },\n clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt',\n metadata?: any\n ) => {\n if (!tracker?.recordClickEvent) return;\n tracker.recordClickEvent(location, clickType, metadata);\n };\n\n // Helper: Compute piece vertices in world space\n const getPieceVertices = (pieceId: string): number[][][] => {\n const piece = controller.findPiece(pieceId);\n if (!piece) return [];\n const bp = controller.getBlueprint(piece.blueprintId);\n if (!bp) return [];\n const bb = boundsOfBlueprint(bp, controller.getPrimitive);\n const polys = piecePolysAt(bp, bb, piece.pos);\n // Convert from {x,y}[][] to number[][][]\n return polys.map(ring => ring.map(pt => [pt.x, pt.y]));\n };\n\n const onPiecePointerDown = (\n e: React.PointerEvent<SVGPathElement | SVGGElement>,\n p: { id: string; x: number; y: number; blueprintId: string; sectorId?: string }\n ) => {\n if (p.sectorId && isSectorLocked(p.sectorId)) return;\n if (clickMode && draggingId) return; // ignore if already carrying\n\n // Check connectivity in prep mode - prevent removal if it would disconnect remaining pieces\n if (cfg.mode === \"prep\" && p.sectorId) {\n const allPiecesInSector = controller.getPiecesInSector(p.sectorId);\n const pieceToRemove = controller.findPiece(p.id);\n \n if (pieceToRemove && wouldRemovalDisconnectSector(\n pieceToRemove,\n allPiecesInSector,\n (id) => controller.getBlueprint(id),\n (kind) => controller.getPrimitive(kind)\n )) {\n // Flash red briefly to indicate piece cannot be removed\n setLockedPieceId(p.id);\n setTimeout(() => setLockedPieceId(null), 500);\n return; // Prevent pickup\n }\n }\n\n if (clickMode) {\n // Start a \"carry\" in click mode: make the piece follow the cursor\n e.stopPropagation();\n clickController?.setSelectedPiece(p.id);\n clickController?.setPendingBp(null);\n\n const bp = controller.getBlueprint(p.blueprintId)!;\n const bb = boundsOfBlueprint(bp, (k) => controller.getPrimitive(k));\n const support = computeSupportOffsets(bp, bb);\n const { x, y } = svgPoint(e.clientX, e.clientY);\n\n const pointerAnchorNode = anchorNodeFromPoint({ x, y });\n const pointerSector = p.sectorId;\n if (tracker?.recordMouseMove) {\n tracker.recordMouseMove(pointerAnchorNode.x, pointerAnchorNode.y, pointerSector);\n }\n\n // Record pickup event\n if (tracker) {\n const blueprintType = ('kind' in bp) ? 'primitive' : 'composite';\n tracker.recordPickup(\n p.id,\n p.blueprintId,\n blueprintType,\n 'sector',\n { x: p.x, y: p.y },\n getPieceVertices(p.id),\n p.sectorId\n );\n }\n\n dragRef.current = {\n id: p.id,\n dx: x - p.x, dy: y - p.y,\n tlx: p.x, tly: p.y,\n aabb: { width: bb.width, height: bb.height },\n minx: bb.min.x, miny: bb.min.y,\n support,\n fromIcon: false,\n validSnap: true,\n prevValidSnap: true,\n raf: null,\n originalPos: { x: p.x, y: p.y, sectorId: p.sectorId },\n pointerAnchor: pointerAnchorNode,\n pointerAnchorId: anchorIdFromNode(pointerAnchorNode),\n pointerAnchorSectorId: pointerSector,\n snapAnchor: null,\n snapAnchorId: null,\n snapAnchorSectorId: undefined,\n snapAnchorDist: null,\n overlaps: false,\n maxExceeded: false,\n };\n updateSnapAnchor(null, p.sectorId);\n setDraggingId(p.id);\n force();\n return;\n }\n\n // DRAG path\n svgRef.current?.setPointerCapture(e.pointerId);\n const bp = controller.getBlueprint(p.blueprintId)!;\n const bb = boundsOfBlueprint(bp, (k) => controller.getPrimitive(k));\n const support = computeSupportOffsets(bp, bb);\n const { x, y } = svgPoint(e.clientX, e.clientY);\n\n const pointerAnchorNode = anchorNodeFromPoint({ x, y });\n const pointerSector = p.sectorId;\n if (tracker?.recordMouseMove) {\n tracker.recordMouseMove(pointerAnchorNode.x, pointerAnchorNode.y, pointerSector);\n }\n\n // Record pickup event\n if (tracker) {\n const blueprintType = ('kind' in bp) ? 'primitive' : 'composite';\n tracker.recordPickup(\n p.id,\n p.blueprintId,\n blueprintType,\n 'sector',\n { x: p.x, y: p.y },\n getPieceVertices(p.id),\n p.sectorId\n );\n }\n\n dragRef.current = {\n id: p.id,\n dx: x - p.x, dy: y - p.y,\n tlx: p.x, tly: p.y,\n aabb: { width: bb.width, height: bb.height },\n minx: bb.min.x, miny: bb.min.y,\n support,\n fromIcon: false,\n validSnap: true,\n prevValidSnap: true,\n raf: null,\n originalPos: { x: p.x, y: p.y, sectorId: p.sectorId },\n pointerAnchor: pointerAnchorNode,\n pointerAnchorId: anchorIdFromNode(pointerAnchorNode),\n pointerAnchorSectorId: pointerSector,\n snapAnchor: null,\n snapAnchorId: null,\n snapAnchorSectorId: undefined,\n snapAnchorDist: null,\n overlaps: false,\n maxExceeded: false,\n };\n updateSnapAnchor(null, p.sectorId);\n setDraggingId(p.id);\n force();\n };\n\n const onPointerMove = (e: React.PointerEvent<SVGSVGElement>) => {\n const { x, y } = svgPoint(e.clientX, e.clientY);\n\n // Always log pointer movement for mouse tracking, even before pickup\n const pointerAnchorNode = anchorNodeFromPoint({ x, y });\n const pointerR = Math.hypot(x - layout.cx, y - layout.cy);\n const pointerSectorId = pointerR < layout.innerR ? undefined : sectorIdAt(x, y) ?? undefined;\n if (!dragRef.current) {\n if (tracker?.recordMouseMove) {\n tracker.recordMouseMove(pointerAnchorNode.x, pointerAnchorNode.y, pointerSectorId);\n }\n return;\n }\n\n const d = dragRef.current;\n const tlx = x - d.dx, tly = y - d.dy;\n\n updatePointerAnchor({ x, y }, pointerSectorId);\n\n const clamped = clampTopLeftBySupport(\n tlx, tly,\n { aabb: d.aabb, support: d.support },\n layout,\n controller.state.cfg.target,\n pointerR < layout.innerR\n );\n\n let tl = clamped;\n // Snap the *piece itself* to nearest nodes in the active sector (or inner ring),\n // and compute validity (silhouette: within snapRadius; workspace: always valid).\n const centerX = tl.x + d.aabb.width / 2;\n const centerY = tl.y + d.aabb.height / 2;\n const rFromCenter = Math.hypot(centerX - layout.cx, centerY - layout.cy);\n const inInnerRing = rFromCenter < layout.innerR;\n const secId = inInnerRing ? null : sectorIdAt(centerX, centerY);\n let snapNode: { x: number; y: number } | null = null;\n let snapDist: number | null = null;\n let snapSectorId: string | undefined = secId ?? undefined;\n let overlapsDetected = false;\n let maxExceededDetected = false;\n\n // Check for inner ring snapping first\n if (inInnerRing) {\n const innerEntry = anchorDots.find(a => a.sectorId === \"inner-ring\");\n if (innerEntry && innerEntry.valid.length) {\n const piece = pieceById(d.id);\n if (piece) {\n const bp = controller.getBlueprint(piece.blueprintId)!;\n const snap = nearestNodeSnap(tl, bp, controller.getPrimitive, innerEntry.valid);\n tl = snap.tl;\n snapNode = snap.node;\n snapDist = snap.dist;\n snapSectorId = undefined;\n }\n }\n // Inner ring shows RED (invalid) to indicate piece will be deleted\n d.validSnap = false;\n } else if (secId) {\n const isCompletedSector = isSectorLocked(secId);\n const entry = anchorDots.find(a => a.sectorId === secId);\n const allNodes =\n (cfg.target === \"workspace\" && cfg.mode !== \"prep\")\n ? (entry?.valid ?? []) // Construction workspace: only valid nodes\n : [ ...(entry?.valid ?? []), ...(entry?.invalid ?? []) ]; // Silhouette + Prep: all nodes\n\n // Snap to anchors even in completed sectors\n if (allNodes.length) {\n const piece = pieceById(d.id);\n if (piece) {\n const bp = controller.getBlueprint(piece.blueprintId)!;\n const snap = nearestNodeSnap(\n tl,\n bp,\n controller.getPrimitive,\n allNodes\n );\n tl = snap.tl;\n snapNode = snap.node;\n snapDist = snap.dist;\n snapSectorId = secId;\n\n // Completed sectors: always show red (invalid)\n if (isCompletedSector) {\n d.validSnap = false;\n } else {\n // Normal validation for incomplete sectors\n const radius = controller.state.cfg.snapRadiusPx;\n // Gather world polys for the carried piece at the *snapped* TL\n const carried = pieceById(d.id);\n let overlapsOk = true;\n if (carried) {\n const bpCar = controller.getBlueprint(carried.blueprintId)!;\n const bbCar = boundsOfBlueprint(\n bpCar,\n controller.getPrimitive\n );\n const carriedPolys = piecePolysAt(bpCar, bbCar, tl);\n\n // only compare against pieces in the same sector we're currently over\n const sameSector = pieces.filter(\n pp =>\n pp.id !== d.id &&\n sectorIdAt(\n pp.x +\n boundsOfBlueprint(\n controller.getBlueprint(pp.blueprintId)!,\n controller.getPrimitive\n ).width / 2,\n pp.y +\n boundsOfBlueprint(\n controller.getBlueprint(pp.blueprintId)!,\n controller.getPrimitive\n ).height / 2,\n ) === secId\n );\n\n for (const other of sameSector) {\n const bpO = controller.getBlueprint(other.blueprintId)!;\n const bbO = boundsOfBlueprint(\n bpO,\n controller.getPrimitive\n );\n const otherPolys = piecePolysAt(bpO, bbO, { x: other.x, y: other.y });\n if (polysOverlap(carriedPolys, otherPolys)) {\n overlapsOk = false;\n break;\n }\n }\n\n // workspace: validity depends on mode\n if (cfg.target === \"workspace\") {\n if (cfg.mode === \"prep\") {\n // Prep mode: ALWAYS allow movement (just show visual feedback)\n // Face-to-face validation only affects visual feedback, not movement\n const allPiecesInSector = controller.getPiecesInSector(secId);\n const otherPiecesInSector = allPiecesInSector.filter(piece => piece.id !== d.id);\n const isFirstPiece = otherPiecesInSector.length === 0;\n const storedPiece = controller.findPiece(d.id);\n const currentSectorId = storedPiece?.sectorId;\n const maxPieces = controller.state.cfg.maxCompositeSize ?? 0;\n const enforceMaxPieces = maxPieces > 0;\n const effectiveCount = allPiecesInSector.length - (currentSectorId === secId ? 1 : 0);\n const wouldExceedMax = enforceMaxPieces && (effectiveCount + 1 > maxPieces);\n\n if (isFirstPiece) {\n // First piece: visual feedback based on overlaps and max-piece limit\n d.validSnap = overlapsOk && !wouldExceedMax;\n maxExceededDetected = wouldExceedMax;\n } else if (storedPiece) {\n // Subsequent pieces: visual feedback based on face-to-face attachment\n const pieceAtDragPosition = {\n ...storedPiece,\n pos: { x: tl.x, y: tl.y }\n };\n\n const attachmentResult = checkFaceToFaceAttachment(\n pieceAtDragPosition,\n otherPiecesInSector,\n (id) => controller.getBlueprint(id),\n (kind) => controller.getPrimitive(kind)\n );\n\n d.validSnap = overlapsOk && attachmentResult.isAttached && !wouldExceedMax;\n maxExceededDetected = wouldExceedMax;\n } else {\n d.validSnap = overlapsOk && !wouldExceedMax;\n maxExceededDetected = wouldExceedMax;\n }\n\n // IMPORTANT: In prep mode, always allow movement regardless of validSnap\n // validSnap is only for visual feedback (red/blue coloring)\n } else {\n // Construction mode: original behavior (validSnap blocks movement)\n d.validSnap = overlapsOk;\n maxExceededDetected = false;\n }\n overlapsDetected = !overlapsOk;\n } else {\n // silhouette: node must be valid AND fully inside AND !overlap\n const key = (p: { x: number; y: number }) => `${p.x},${p.y}`;\n const validSet = new Set((entry?.valid ?? []).map(key));\n const nodeOk =\n !!snap.node && validSet.has(key(snap.node)) && snap.dist <= (radius ?? 0);\n let insideOk = false;\n if (nodeOk) {\n const silPolys = placedSilBySector.get(secId) ?? [];\n insideOk = polyFullyInside(carriedPolys, silPolys);\n }\n d.validSnap = nodeOk && insideOk && overlapsOk;\n overlapsDetected = !overlapsOk;\n }\n }\n }\n }\n }\n } else { \n // not over any sector band\n d.validSnap = (controller.state.cfg.target === \"workspace\");\n snapNode = null;\n snapDist = null;\n snapSectorId = undefined;\n maxExceededDetected = false;\n }\n d.overlaps = overlapsDetected;\n d.maxExceeded = maxExceededDetected;\n updateSnapAnchor(snapNode, snapSectorId, snapDist ?? undefined);\n d.tlx = tl.x; d.tly = tl.y;\n\n // If the validity state changed, force a React render so fill/stroke update immediately.\n if (d.prevValidSnap !== d.validSnap) {\n d.prevValidSnap = d.validSnap ?? false;\n force();\n }\n\n scheduleFrame();\n };\n\n const onPointerUp = () => {\n if (!dragRef.current) return;\n if (clickMode) return;\n\n const d = dragRef.current;\n // If the candidate is invalid for any reason (overlap/outside/bad node), handle based on mode\n if (d.validSnap === false) {\n const piece = controller.findPiece(d.id);\n const cfg = controller.state.cfg;\n const centerX = d.tlx + d.aabb.width / 2;\n const centerY = d.tly + d.aabb.height / 2;\n const attemptedSector = sectorIdAt(centerX, centerY);\n let invalidReason: 'overlapping' | 'outside_bounds' | 'no_valid_anchor' | 'sector_complete' = 'outside_bounds';\n if (d.maxExceeded) {\n invalidReason = 'no_valid_anchor';\n } else if (d.overlaps) {\n invalidReason = 'overlapping';\n } else if (attemptedSector) {\n invalidReason = 'no_valid_anchor';\n }\n emitClickEvent(\n { x: centerX, y: centerY },\n 'invalid_placement',\n { invalidPlacement: { reason: invalidReason, attemptedSectorId: attemptedSector ?? undefined } }\n );\n\n // In prep mode: return to original position (if exists) or delete (if from icon)\n if (cfg.mode === \"prep\" && d.originalPos) {\n // Return piece to its original position\n controller.move(d.id, { x: d.originalPos.x, y: d.originalPos.y });\n\n // Record placedown as \"placed\" back in original position\n if (tracker) {\n tracker.recordPlacedown(\n 'placed',\n d.originalPos.sectorId,\n { x: d.originalPos.x, y: d.originalPos.y },\n getPieceVertices(d.id),\n d.snapAnchorId ?? undefined,\n false,\n d.overlaps ?? false\n );\n }\n } else {\n // Construction mode or fromIcon in prep mode: delete piece\n const removedFromSector = piece?.sectorId;\n controller.remove(d.id);\n // Re-check completion for the sector the piece was removed from\n if (removedFromSector) maybeCompleteSector(removedFromSector);\n\n // Record placedown as \"deleted\"\n if (tracker) {\n tracker.recordPlacedown(\n 'deleted',\n removedFromSector,\n undefined,\n undefined,\n d.snapAnchorId ?? undefined,\n false,\n d.overlaps ?? false\n );\n }\n }\n\n dragRef.current = null;\n setDraggingId(null);\n force();\n return;\n }\n \n dragRef.current = null;\n if (d.raf) { cancelAnimationFrame(d.raf); d.raf = null; }\n\n const commitTL = { x: d.tlx, y: d.tly };\n const centerX = commitTL.x + d.aabb.width / 2;\n const centerY = commitTL.y + d.aabb.height / 2;\n\n // delete if inside the inner hole\n const rFromCenter = Math.hypot(centerX - layout.cx, centerY - layout.cy);\n if (rFromCenter < layout.innerR) {\n const piece = controller.findPiece(d.id);\n const removedFromSector = piece?.sectorId;\n controller.remove(d.id);\n // Re-check completion for the sector the piece was removed from\n if (removedFromSector) maybeCompleteSector(removedFromSector);\n\n // Record placedown as \"deleted\"\n if (tracker) {\n tracker.recordPlacedown(\n 'deleted',\n removedFromSector,\n undefined,\n undefined,\n d.snapAnchorId ?? undefined,\n false,\n d.overlaps ?? false\n );\n }\n\n setDraggingId(null);\n force();\n return;\n }\n\n const secId = sectorIdAt(centerX, centerY);\n\n // Completed sector: no-op (do nothing, same as clicking incomplete sector in silhouette mode)\n if (secId && isSectorLocked(secId)) {\n emitClickEvent(\n { x: centerX, y: centerY },\n 'sector_complete_attempt',\n { invalidPlacement: { reason: 'sector_complete', attemptedSectorId: secId } }\n );\n // Return piece to original position if it exists, otherwise delete (from icon spawn)\n if (d.originalPos) {\n controller.move(d.id, { x: d.originalPos.x, y: d.originalPos.y });\n if (d.originalPos.sectorId) {\n controller.drop(d.id, d.originalPos.sectorId);\n }\n\n // Record placedown as \"placed\" back in original position\n if (tracker) {\n tracker.recordPlacedown(\n 'placed',\n d.originalPos.sectorId,\n { x: d.originalPos.x, y: d.originalPos.y },\n getPieceVertices(d.id),\n d.snapAnchorId ?? undefined,\n false,\n d.overlaps ?? false\n );\n }\n } else {\n // Piece was spawned from icon and dropped in completed sector → delete\n controller.remove(d.id);\n\n // Record placedown as \"deleted\"\n if (tracker) {\n tracker.recordPlacedown(\n 'deleted',\n undefined,\n undefined,\n undefined,\n d.snapAnchorId ?? undefined,\n false,\n d.overlaps ?? false\n );\n }\n }\n setDraggingId(null);\n force();\n return;\n }\n\n controller.move(d.id, commitTL);\n controller.drop(d.id, secId);\n\n const justCompleted = secId ? maybeCompleteSector(secId) : false;\n\n // Record placedown as \"placed\" successfully\n const wasValid = d.validSnap === undefined ? true : d.validSnap;\n if (tracker) {\n tracker.recordPlacedown(\n 'placed',\n secId,\n commitTL,\n getPieceVertices(d.id),\n d.snapAnchorId ?? undefined,\n wasValid,\n d.overlaps ?? false,\n justCompleted\n );\n }\n\n setDraggingId(null);\n\n // auto-revert AFTER completing a drag spawn from the center\n if (d.fromIcon && controller.state.blueprintView === \"primitives\") {\n controller.switchBlueprintView();\n }\n force();\n };\n\n const onBlueprintPointerDown = (\n e: React.PointerEvent,\n bp: Blueprint,\n bpGeom: { bx: number; by: number; cx: number; cy: number }\n ) => {\n if (clickMode && draggingId) return;\n e.stopPropagation();\n\n const { x: px, y: py } = svgPoint(e.clientX, e.clientY);\n const bb = boundsOfBlueprint(bp, controller.getPrimitive);\n const support = computeSupportOffsets(bp, bb);\n\n if (clickMode) {\n // Click mode: spawn then enter carry state\n \n // Compute the local point of the blueprint glyph that was clicked\n const q = blueprintLocalFromWorld(px, py, bpGeom);\n // Compute TL so that the clicked point stays under the cursor\n const tl0 = { x: px - (q.x - bb.min.x), y: py - (q.y - bb.min.y) };\n const pointerR = Math.hypot(px - layout.cx, py - layout.cy);\n const allowInside = pointerR < layout.innerR;\n const clamped = clampTopLeftBySupport(\n tl0.x, tl0.y,\n { aabb: bb, support },\n layout,\n controller.state.cfg.target,\n allowInside\n );\n const pieceId = controller.spawnFromBlueprint(bp, clamped);\n const pointerAnchorNode = anchorNodeFromPoint({ x: px, y: py });\n const pointerSector = sectorIdAt(px, py) ?? undefined;\n if (tracker?.recordMouseMove) {\n tracker.recordMouseMove(pointerAnchorNode.x, pointerAnchorNode.y, pointerSector);\n }\n\n // Record pickup event for blueprint spawn\n if (tracker) {\n const blueprintType = ('kind' in bp) ? 'primitive' : 'composite';\n tracker.recordPickup(\n pieceId,\n bp.id,\n blueprintType,\n 'blueprint',\n clamped,\n getPieceVertices(pieceId),\n undefined\n );\n }\n\n const tl = clamped;\n // If anchors mode, immediately snap initial TL to the nearest nodes in the active sector\n let finalTl = tl;\n let snapInfo: { node: { x: number; y: number } | null; dist: number } | null = null;\n const centerX = tl.x + bb.width / 2;\n const centerY = tl.y + bb.height / 2;\n const secId = sectorIdAt(centerX, centerY);\n if (secId) {\n const entry = anchorDots.find(a => a.sectorId === secId);\n const nodes =\n controller.state.cfg.target === \"workspace\"\n ? (entry?.valid ?? [])\n : [ ...(entry?.valid ?? []), ...(entry?.invalid ?? []) ];\n if (nodes.length) {\n const snap = nearestNodeSnap(tl, bp, controller.getPrimitive, nodes);\n finalTl = snap.tl;\n snapInfo = { node: snap.node, dist: snap.dist };\n }\n }\n \n controller.move(pieceId, finalTl);\n dragRef.current = {\n id: pieceId,\n dx: px - finalTl.x,\n dy: py - finalTl.y,\n tlx: finalTl.x,\n tly: finalTl.y,\n aabb: bb,\n minx: bb.min.x,\n miny: bb.min.y,\n support,\n fromIcon: true,\n validSnap: true,\n prevValidSnap: true,\n raf: null,\n originalPos: undefined, // No original position for fromIcon drags\n pointerAnchor: pointerAnchorNode,\n pointerAnchorId: anchorIdFromNode(pointerAnchorNode),\n pointerAnchorSectorId: pointerSector,\n snapAnchor: null,\n snapAnchorId: null,\n snapAnchorSectorId: undefined,\n snapAnchorDist: null,\n overlaps: false,\n maxExceeded: false,\n };\n updatePointerAnchor({ x: px, y: py }, pointerSector);\n const snappingSecId = sectorIdAt(finalTl.x + bb.width / 2, finalTl.y + bb.height / 2) ?? undefined;\n updateSnapAnchor(snapInfo?.node ?? null, snappingSecId, snapInfo?.dist);\n setDraggingId(pieceId); // now onPointerMove will keep it in sync\n force();\n scheduleFrame();\n return;\n }\n\n // Drag mode: spawn at pointer with immediate drag\n svgRef.current?.setPointerCapture(e.pointerId);\n\n // Compute the local point of the blueprint glyph that was clicked\n const q = blueprintLocalFromWorld(px, py, bpGeom);\n // Compute TL so that the clicked point stays under the cursor\n const tl0 = { x: px - (q.x - bb.min.x), y: py - (q.y - bb.min.y) };\n const pointerR = Math.hypot(px - layout.cx, py - layout.cy);\n const allowInside = pointerR < layout.innerR;\n const clamped = clampTopLeftBySupport(\n tl0.x, tl0.y,\n { aabb: bb, support },\n layout,\n controller.state.cfg.target,\n allowInside\n );\n const pieceId = controller.spawnFromBlueprint(bp, clamped);\n const pointerAnchorNode = anchorNodeFromPoint({ x: px, y: py });\n const pointerSector = sectorIdAt(px, py) ?? undefined;\n if (tracker?.recordMouseMove) {\n tracker.recordMouseMove(pointerAnchorNode.x, pointerAnchorNode.y, pointerSector);\n }\n\n // Record pickup event for blueprint spawn\n if (tracker) {\n const blueprintType = ('kind' in bp) ? 'primitive' : 'composite';\n tracker.recordPickup(\n pieceId,\n bp.id,\n blueprintType,\n 'blueprint',\n clamped,\n getPieceVertices(pieceId),\n undefined\n );\n }\n\n dragRef.current = {\n id: pieceId,\n dx: px - clamped.x,\n dy: py - clamped.y,\n tlx: clamped.x,\n tly: clamped.y,\n aabb: bb,\n minx: bb.min.x,\n miny: bb.min.y,\n support,\n fromIcon: true,\n validSnap: true,\n prevValidSnap: true,\n raf: null,\n originalPos: undefined, // No original position for fromIcon drags\n pointerAnchor: pointerAnchorNode,\n pointerAnchorId: anchorIdFromNode(pointerAnchorNode),\n pointerAnchorSectorId: pointerSector,\n snapAnchor: null,\n snapAnchorId: null,\n snapAnchorSectorId: undefined,\n snapAnchorDist: null,\n overlaps: false,\n };\n updatePointerAnchor({ x: px, y: py }, pointerSector);\n updateSnapAnchor(null, undefined);\n setDraggingId(pieceId);\n force();\n scheduleFrame();\n };\n\n return {\n // State\n draggingId,\n dragInvalid: !!(dragRef.current && dragRef.current.validSnap === false),\n lockedPieceId,\n svgRef,\n \n // Handlers\n onPiecePointerDown,\n onBlueprintPointerDown,\n onPointerMove,\n onPointerUp,\n setPieceRef,\n \n // Click controller integration\n setDraggingId,\n\n // TODO: Remove this once click mode is extracted - temporary for compatibility\n dragRef\n };\n}\n","import React from \"react\";\nimport { BaseGameController } from \"@/core/engine/state/BaseGameController\";\nimport type { CircleLayout } from \"@/core/domain/layout\";\nimport { sectorAtPoint } from \"@/core/domain/layout\";\nimport { boundsOfBlueprint, computeSupportOffsets, clampTopLeftBySupport, piecePolysAt } from \"@/core/engine/geometry\";\nimport type { PieceData } from \"./usePieceState\";\n\n// Click controller state is managed internally with React hooks\n\n/**\n * Return interface for useClickController hook\n * \n * Provides click-based interaction functionality that works alongside\n * useDragController to support click-and-place interaction patterns.\n */\nexport interface ClickControllerHook {\n // State\n /** ID of pending blueprint for placement (from blueprint ring clicks) */\n pendingBpId: string | null;\n \n /** ID of currently selected piece (for click-to-move functionality) */\n selectedPieceId: string | null;\n \n // Handlers \n /** \n * Handler for root SVG clicks (placement, movement, deletion)\n * @param e - Pointer event from SVG root element\n */\n onRootPointerDown: (e: React.PointerEvent<SVGSVGElement>) => void;\n \n // Helper methods for drag controller integration\n /** Clear all selection state */\n clearSelection: () => void;\n \n /** \n * Set pending blueprint ID for placement\n * @param id - Blueprint ID or null to clear\n */\n setPendingBp: (id: string | null) => void;\n \n /** \n * Set selected piece ID for movement\n * @param id - Piece ID or null to clear\n */\n setSelectedPiece: (id: string | null) => void;\n}\n\n/**\n * Hook for managing click-based interactions in click input mode\n * \n * This hook works in conjunction with useDragController to provide click-and-place\n * interaction patterns. It manages the selection state for both blueprint icons and\n * live pieces, handling placement, movement, and deletion through click interactions.\n * \n * ## Click Interaction Patterns\n * - **Blueprint click**: Selects blueprint for placement (pendingBpId)\n * - **Piece click**: Starts \"carry\" state via drag controller integration\n * - **Empty click**: Places pending blueprint or moves selected piece\n * - **Center badge click**: Deletes carried/selected piece\n * - **Completed sector click**: Deletes pieces (invalid placement)\n * \n * ## State Management\n * - **pendingBpId**: Blueprint selected from ring, awaiting placement\n * - **selectedPieceId**: Live piece selected for movement\n * - **Integration with drag controller**: Uses draggingId for \"carry\" state\n * \n * ## Dependencies\n * This hook requires tight integration with useDragController as it uses the\n * drag controller's carry mechanism for piece movement in click mode.\n * \n * @param controller - BaseGameController for state management\n * @param layout - Computed CircleLayout for sector geometry\n * @param pieces - Current piece data from usePieceState\n * @param clickMode - Whether click input mode is active\n * @param draggingId - Current dragging piece ID from drag controller\n * @param setDraggingId - Setter for dragging ID (drag controller integration)\n * @param dragRef - Drag state ref from drag controller\n * @param isInsideBadge - Function to check if point is inside center badge\n * @param isSectorLocked - Function to check if sector is completed\n * @param maybeCompleteSector - Callback to check sector completion\n * @param svgPoint - Function to convert screen to SVG coordinates\n * @param force - Force React re-render function\n * @returns Hook interface with click state and handlers\n * \n * @example\n * ```typescript\n * const clickController = useClickController(\n * controller, layout, pieces, clickMode, \n * draggingId, setDraggingId, dragRef,\n * isInsideBadge, isSectorLocked, maybeCompleteSector, svgPoint, force\n * );\n * \n * // Usage in JSX:\n * <svg onPointerDown={clickController.onRootPointerDown}>\n * Game content\n * </svg>\n * ```\n */\nexport function useClickController(\n controller: BaseGameController,\n layout: CircleLayout,\n pieces: PieceData[],\n clickMode: boolean,\n draggingId: string | null,\n setDraggingId: (id: string | null) => void,\n dragRef: React.RefObject<any>,\n isInsideBadge: (x: number, y: number) => boolean,\n isSectorLocked: (id: string) => boolean,\n maybeCompleteSector: (secId: string) => boolean,\n svgPoint: (clientX: number, clientY: number) => { x: number; y: number },\n force: () => void,\n // Interaction tracking\n tracker?: {\n recordPlacedown: (\n outcome: 'placed' | 'deleted',\n sectorId?: string,\n position?: { x: number; y: number },\n vertices?: number[][][],\n anchorId?: string,\n wasValid?: boolean,\n wasOverlapping?: boolean,\n completedSector?: boolean\n ) => void;\n recordClickEvent?: (\n location: { x: number; y: number },\n clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt',\n metadata?: any\n ) => void;\n } | null\n): ClickControllerHook {\n const cfg = controller.state.cfg;\n const sectorIdAt = (x: number, y: number) => sectorAtPoint(x, y, layout, cfg.target);\n\n // Helper: Compute piece vertices in world space\n const getPieceVertices = (pieceId: string): number[][][] => {\n const piece = controller.findPiece(pieceId);\n if (!piece) return [];\n const bp = controller.getBlueprint(piece.blueprintId);\n if (!bp) return [];\n const bb = boundsOfBlueprint(bp, controller.getPrimitive);\n const polys = piecePolysAt(bp, bb, piece.pos);\n // Convert from {x,y}[][] to number[][][]\n return polys.map(ring => ring.map(pt => [pt.x, pt.y]));\n };\n\n const getCurrentAnchorInfo = () => {\n const d = dragRef.current;\n return {\n anchorId: d?.snapAnchorId ?? d?.pointerAnchorId ?? undefined,\n wasValid: d?.validSnap !== false,\n wasOverlapping: d?.overlaps ?? false,\n anchorX: d?.pointerAnchor?.x,\n anchorY: d?.pointerAnchor?.y,\n sectorId: d?.snapAnchorSectorId ?? d?.pointerAnchorSectorId\n };\n };\n\n const emitClickEvent = (\n location: { x: number; y: number },\n clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt',\n metadata?: any\n ) => {\n if (!tracker?.recordClickEvent) return;\n tracker.recordClickEvent(location, clickType, metadata);\n };\n\n // Click mode state\n const [pendingBpId, setPendingBpId] = React.useState<string | null>(null); // selected icon\n const [selectedPieceId, setSelectedPieceId] = React.useState<string | null>(null); // selected live piece\n\n const onRootPointerDown = (e: React.PointerEvent<SVGSVGElement>) => {\n const { x: px, y: py } = svgPoint(e.clientX, e.clientY);\n\n // --- CLICK MODE: second-click behaviors (move/delete/place)\n if (clickMode) {\n const secId = sectorIdAt(px, py);\n\n // If we're currently carrying a piece (draggingId set via click), this click commits (or deletes)\n if (draggingId && dragRef.current) {\n const d = dragRef.current;\n const centerX2 = d.tlx + d.aabb.width / 2;\n const centerY2 = d.tly + d.aabb.height / 2;\n\n // delete/cancel if clicked center (carry piece is already under pointer)\n if (isInsideBadge(px, py)) {\n const piece = controller.findPiece(d.id);\n const removedFromSector = piece?.sectorId;\n const anchorInfo = getCurrentAnchorInfo();\n controller.remove(d.id);\n // Re-check completion for the sector the piece was removed from\n if (removedFromSector) maybeCompleteSector(removedFromSector);\n\n // Record placedown as \"deleted\"\n if (tracker) {\n tracker.recordPlacedown(\n 'deleted',\n removedFromSector,\n undefined,\n undefined,\n anchorInfo.anchorId,\n anchorInfo.wasValid,\n anchorInfo.wasOverlapping\n );\n }\n\n // TODO: Remove dragRef manipulation once drag controller provides proper interface\n // dragRef.current = null; // Cannot assign to readonly property - drag controller should handle this\n setDraggingId(null);\n setSelectedPieceId(null);\n setPendingBpId(null);\n force();\n return; // don't toggle view\n }\n\n // Check if piece is in inner ring - if so, delete it\n const rFromCenter = Math.hypot(centerX2 - layout.cx, centerY2 - layout.cy);\n if (rFromCenter < layout.innerR) {\n const piece = controller.findPiece(d.id);\n const removedFromSector = piece?.sectorId;\n const anchorInfo = getCurrentAnchorInfo();\n controller.remove(d.id);\n if (removedFromSector) maybeCompleteSector(removedFromSector);\n\n // Record placedown as \"deleted\"\n if (tracker) {\n tracker.recordPlacedown(\n 'deleted',\n removedFromSector,\n undefined,\n undefined,\n anchorInfo.anchorId,\n anchorInfo.wasValid,\n anchorInfo.wasOverlapping\n );\n }\n\n setDraggingId(null);\n setSelectedPieceId(null);\n setPendingBpId(null);\n force();\n return;\n }\n\n const secId2 = sectorIdAt(centerX2, centerY2);\n\n if (!secId2) {\n emitClickEvent(\n { x: centerX2, y: centerY2 },\n 'invalid_placement',\n { invalidPlacement: { reason: 'outside_bounds' } }\n );\n force();\n return;\n }\n\n if (isSectorLocked(secId2)) {\n emitClickEvent(\n { x: centerX2, y: centerY2 },\n 'sector_complete_attempt',\n { invalidPlacement: { reason: 'sector_complete', attemptedSectorId: secId2 } }\n );\n force();\n return;\n }\n\n // If the candidate is invalid for any reason (overlap / outside / bad node), keep carrying\n if (d.validSnap === false) {\n const anchorInfo = getCurrentAnchorInfo();\n const invalidReason = anchorInfo.wasOverlapping ? 'overlapping' : 'no_valid_anchor';\n emitClickEvent(\n { x: centerX2, y: centerY2 },\n 'invalid_placement',\n { invalidPlacement: { reason: invalidReason, attemptedSectorId: secId2 } }\n );\n force();\n return;\n }\n \n controller.move(d.id, { x: d.tlx, y: d.tly }); // TL already snapped (valid)\n controller.drop(d.id, secId2);\n\n const anchorInfo = getCurrentAnchorInfo();\n const justCompleted = maybeCompleteSector(secId2);\n\n // Record placedown as \"placed\" successfully\n if (tracker) {\n tracker.recordPlacedown(\n 'placed',\n secId2,\n { x: d.tlx, y: d.tly },\n getPieceVertices(d.id),\n anchorInfo.anchorId,\n anchorInfo.wasValid,\n anchorInfo.wasOverlapping,\n justCompleted\n );\n }\n // TODO: Remove dragRef manipulation once drag controller provides proper interface\n // dragRef.current = null; // Cannot assign to readonly property - drag controller should handle this\n setDraggingId(null);\n setSelectedPieceId(null);\n setPendingBpId(null);\n // auto-revert AFTER placement completes (click mode)\n if (controller.state.blueprintView === \"primitives\") {\n controller.switchBlueprintView();\n }\n force();\n return;\n }\n\n // Selected piece → delete / move / deselect\n if (selectedPieceId) {\n if (isInsideBadge(px, py)) {\n const piece = controller.findPiece(selectedPieceId);\n const removedFromSector = piece?.sectorId;\n controller.remove(selectedPieceId);\n // Re-check completion for the sector the piece was removed from\n if (removedFromSector) maybeCompleteSector(removedFromSector);\n\n // Record placedown as \"deleted\"\n if (tracker) {\n tracker.recordPlacedown('deleted');\n }\n\n setSelectedPieceId(null);\n force();\n return; // DO NOT toggle view after delete\n }\n // Completed sector: no-op (do nothing, same as incomplete sector in silhouette mode)\n if (secId && isSectorLocked(secId)) {\n setSelectedPieceId(null);\n force();\n return;\n }\n if (secId) {\n const p = pieces.find(pp => pp.id === selectedPieceId);\n setSelectedPieceId(null);\n if (p) {\n const bp = controller.getBlueprint(p.blueprintId)!;\n const bb = boundsOfBlueprint(bp, controller.getPrimitive);\n const support = computeSupportOffsets(bp, bb);\n const tl0 = { x: px - bb.width / 2, y: py - bb.height / 2 };\n const clamped = clampTopLeftBySupport(\n tl0.x, tl0.y,\n { aabb: { width: bb.width, height: bb.height }, support },\n layout,\n controller.state.cfg.target,\n false\n );\n\n const maxPieces = controller.state.cfg.maxCompositeSize ?? 0;\n if (controller.state.cfg.mode === \"prep\" && maxPieces > 0) {\n const sectorPieces = controller.getPiecesInSector(secId);\n const effectiveCount = sectorPieces.length - (p.sectorId === secId ? 1 : 0);\n if (effectiveCount + 1 > maxPieces) {\n force();\n return;\n }\n }\n\n controller.move(p.id, { x: clamped.x, y: clamped.y });\n controller.drop(p.id, secId);\n maybeCompleteSector(secId);\n force();\n }\n return;\n }\n // click outside → deselect only\n setSelectedPieceId(null);\n force();\n return;\n }\n\n // Pending icon → place\n if (pendingBpId) {\n const secId2 = sectorIdAt(px, py);\n\n if (isInsideBadge(px, py) || !secId2 || isSectorLocked(secId2)) {\n setPendingBpId(null); // cancel\n force();\n return;\n }\n\n const bp = controller.getBlueprint(pendingBpId)!;\n const bb = boundsOfBlueprint(bp, controller.getPrimitive);\n const support = computeSupportOffsets(bp, bb);\n const tl0 = { x: px - bb.width / 2, y: py - bb.height / 2 };\n const clamped = clampTopLeftBySupport(\n tl0.x, tl0.y,\n { aabb: { width: bb.width, height: bb.height }, support },\n layout,\n controller.state.cfg.target,\n false\n );\n const id = controller.spawnFromBlueprint(bp, clamped);\n\n const maxPieces = controller.state.cfg.maxCompositeSize ?? 0;\n if (controller.state.cfg.mode === \"prep\" && maxPieces > 0) {\n const sectorPieces = controller.getPiecesInSector(secId2);\n if (sectorPieces.length + 1 > maxPieces) {\n controller.remove(id);\n setPendingBpId(null);\n force();\n return;\n }\n }\n\n controller.drop(id, secId2);\n setPendingBpId(null);\n maybeCompleteSector(secId2);\n\n // auto-revert AFTER placement completes (click mode)\n if (controller.state.blueprintView === \"primitives\") controller.switchBlueprintView();\n force();\n return;\n }\n }\n };\n\n return {\n // State\n pendingBpId,\n selectedPieceId,\n \n // Handlers\n onRootPointerDown,\n \n // Helper methods for integration\n clearSelection: () => {\n setSelectedPieceId(null);\n setPendingBpId(null);\n },\n setPendingBp: setPendingBpId,\n setSelectedPiece: setSelectedPieceId,\n };\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","/**\n * InteractionTracker - Event accumulation and data tracking for experiments\n *\n * This class listens to game controller events and builds structured data\n * according to the data-tracking.ts schema. It generates InteractionEvent\n * objects and accumulates TrialEndData for export.\n *\n * ## Key Responsibilities\n * - Track interaction lifecycle (pickup → placedown)\n * - Accumulate click events and mouse tracking between interactions\n * - Generate InteractionEvent objects with state snapshots\n * - Build TrialEndData on trial completion\n * - Call onInteraction/onTrialEnd callbacks for data export\n *\n * ## Architecture\n * ```\n * User Interaction\n * ↓\n * UI Controllers (drag/click)\n * ↓\n * BaseGameController Events\n * ↓\n * InteractionTracker\n * ↓\n * onInteraction(event) → socket.emit()\n * onTrialEnd(data) → socket.emit()\n * ```\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport type { BaseGameController } from '../engine/state/BaseGameController';\nimport { boundsOfBlueprint, piecePolysAt } from '../engine/geometry';\nimport { CONFIG } from '../config/config';\nimport type {\n InteractionEvent,\n StateSnapshot,\n ConstructionTrialData,\n PrepTrialData,\n DataTrackingCallbacks,\n SectorSnapshot,\n PieceSnapshot,\n MacroSnapshot\n} from './data-tracking';\n\n/**\n * Pickup event data (temporary storage until placedown)\n */\ninterface PickupData {\n pieceId: string;\n blueprintId: string;\n blueprintType: 'primitive' | 'composite';\n timestamp: number;\n source: 'blueprint' | 'sector';\n sectorId: string | undefined;\n position: { x: number; y: number };\n vertices: number[][][];\n}\n\n/**\n * Click event data (accumulated until interaction completes)\n */\ninterface ClickEventData {\n timestamp: number;\n location: { x: number; y: number };\n clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt';\n blueprintViewSwitch?: {\n from: 'quickstash' | 'primitives';\n to: 'quickstash' | 'primitives';\n };\n invalidPlacement?: {\n reason: 'overlapping' | 'outside_bounds' | 'no_valid_anchor' | 'sector_complete';\n attemptedSectorId?: string;\n };\n}\n\n/**\n * Mouse tracking event data (accumulated until interaction completes)\n */\ninterface MouseTrackingData {\n timestamp: number;\n anchorX: number;\n anchorY: number;\n sectorId: string | undefined;\n phase: 'before_pickup' | 'while_holding';\n}\n\n/**\n * InteractionTracker - Main tracking class\n */\nexport class InteractionTracker {\n // IDs\n private gameId: string;\n private trialId: string;\n\n // Callbacks\n private callbacks: DataTrackingCallbacks;\n\n // Controller reference\n private controller: BaseGameController;\n\n // Trial timing\n private trialStartTime: number;\n private readonly gridStep: number = CONFIG.layout.grid.stepPx;\n\n // Interaction state\n private interactionIndex: number = 0;\n private currentPickup: PickupData | null = null;\n private previousSnapshotId: string | undefined = undefined;\n\n // Event accumulation (reset after each interaction)\n private clickEvents: ClickEventData[] = [];\n private mouseTracking: MouseTrackingData[] = [];\n\n // Interaction history (for TrialEndData)\n private interactions: InteractionEvent[] = [];\n\n // Construction-specific tracking\n private completionTimes: Array<{ sectorId: string; completedAt: number }> = [];\n\n // Prep-specific tracking\n private createdMacros: MacroSnapshot[] = [];\n\n constructor(\n controller: BaseGameController,\n callbacks: DataTrackingCallbacks,\n trialId?: string,\n gameId?: string\n ) {\n this.controller = controller;\n this.callbacks = callbacks;\n this.trialId = trialId || uuidv4();\n this.gameId = gameId || uuidv4();\n this.trialStartTime = Date.now();\n\n // Register tracking callbacks with controller\n this.controller.setTrackingCallbacks({\n onSectorCompleted: (sectorId) => this.recordSectorCompletion(sectorId)\n });\n }\n\n /**\n * Cleanup method to unregister from controller\n */\n dispose(): void {\n this.controller.setTrackingCallbacks(null);\n }\n\n // ===== Event Recording Methods =====\n // Called by UI controllers to record events\n\n /**\n * Record piece pickup event\n */\n recordPickup(\n pieceId: string,\n blueprintId: string,\n blueprintType: 'primitive' | 'composite',\n source: 'blueprint' | 'sector',\n position: { x: number; y: number },\n vertices: number[][][],\n sectorId?: string\n ): void {\n const anchorPosition = this.toAnchorPoint(position);\n const anchorVertices = this.toAnchorVertices(vertices);\n\n this.currentPickup = {\n pieceId,\n blueprintId,\n blueprintType,\n timestamp: Date.now(),\n source,\n sectorId,\n position: anchorPosition,\n vertices: anchorVertices\n };\n\n // Mark all subsequent mouse tracking as \"while_holding\"\n // (UI controllers should call recordMouseMove after this)\n }\n\n /**\n * Record piece placedown event\n */\n recordPlacedown(\n outcome: 'placed' | 'deleted',\n sectorId?: string,\n position?: { x: number; y: number },\n vertices?: number[][][],\n anchorId?: string,\n wasValid?: boolean,\n wasOverlapping?: boolean,\n completedSector?: boolean\n ): void {\n if (!this.currentPickup) {\n console.warn('[InteractionTracker] recordPlacedown called without pickup');\n return;\n }\n\n const interactionType = this.determineInteractionType(this.currentPickup.source, outcome);\n const placedownTimestamp = Date.now();\n const holdDuration = placedownTimestamp - this.currentPickup.timestamp;\n\n // Build post-interaction snapshot\n // If this placement completes a sector, mark it in the snapshot\n const postSnapshot = this.buildStateSnapshot(completedSector ? sectorId : undefined);\n\n const anchorPosition = position ? this.toAnchorPoint(position) : undefined;\n const anchorVertices = vertices ? this.toAnchorVertices(vertices) : undefined;\n\n // Create interaction event - build incrementally to satisfy exactOptionalPropertyTypes\n const event: InteractionEvent = {\n // Metadata\n interactionId: uuidv4(),\n trialId: this.trialId,\n gameId: this.gameId,\n interactionIndex: this.interactionIndex++,\n\n // Interaction type\n interactionType,\n\n // Piece information\n pieceId: this.currentPickup.pieceId,\n blueprintId: this.currentPickup.blueprintId,\n blueprintType: this.currentPickup.blueprintType,\n\n // Pickup event\n pickupTimestamp: this.currentPickup.timestamp,\n pickupSource: this.currentPickup.source,\n pickupSectorId: this.currentPickup.sectorId,\n pickupPosition: this.currentPickup.position,\n pickupVertices: this.currentPickup.vertices,\n\n // Placedown event\n placedownTimestamp,\n placedownOutcome: outcome,\n\n // Validation context\n wasValid: outcome === 'placed' && wasValid === true,\n wasOverlapping: outcome === 'placed' && wasOverlapping === true,\n\n // Timing\n holdDuration,\n\n // Events\n clickEvents: [...this.clickEvents],\n mouseTracking: [...this.mouseTracking],\n\n // Snapshots\n postSnapshot\n };\n\n // Add optional placedown properties based on outcome\n if (outcome === 'placed' && sectorId) {\n event.placedownSectorId = sectorId;\n }\n if (outcome === 'placed' && anchorPosition) {\n event.placedownPosition = anchorPosition;\n }\n if (outcome === 'placed' && anchorVertices) {\n event.placedownVertices = anchorVertices;\n }\n if (anchorId) {\n event.placedownAnchorId = anchorId;\n }\n if (this.previousSnapshotId !== undefined) {\n event.preSnapshotId = this.previousSnapshotId;\n }\n\n // Store for trial end data\n this.interactions.push(event);\n this.previousSnapshotId = postSnapshot.snapshotId;\n\n // Call interaction callback\n if (this.callbacks.onInteraction) {\n this.callbacks.onInteraction(event);\n }\n\n // Reset interaction state\n this.currentPickup = null;\n this.clickEvents = [];\n this.mouseTracking = [];\n }\n\n /**\n * Record click event\n */\n recordClickEvent(\n location: { x: number; y: number },\n clickType: 'blueprint_view_switch' | 'invalid_placement' | 'sector_complete_attempt',\n metadata?: {\n blueprintViewSwitch?: { from: 'quickstash' | 'primitives'; to: 'quickstash' | 'primitives' };\n invalidPlacement?: { reason: 'overlapping' | 'outside_bounds' | 'no_valid_anchor' | 'sector_complete'; attemptedSectorId?: string };\n }\n ): void {\n const anchorLocation = this.toAnchorPoint(location);\n\n this.clickEvents.push({\n timestamp: Date.now(),\n location: anchorLocation,\n clickType,\n ...metadata\n });\n }\n\n /**\n * Record mouse movement to different anchor\n */\n recordMouseMove(\n anchorX: number,\n anchorY: number,\n sectorId?: string\n ): void {\n const phase: 'before_pickup' | 'while_holding' = this.currentPickup ? 'while_holding' : 'before_pickup';\n const anchorCoordX = this.toAnchorValue(anchorX);\n const anchorCoordY = this.toAnchorValue(anchorY);\n\n // Only record if anchor position changed\n const lastTracking = this.mouseTracking[this.mouseTracking.length - 1];\n if (lastTracking && lastTracking.anchorX === anchorCoordX && lastTracking.anchorY === anchorCoordY) {\n return; // Same position, skip\n }\n\n this.mouseTracking.push({\n timestamp: Date.now(),\n anchorX: anchorCoordX,\n anchorY: anchorCoordY,\n sectorId,\n phase\n });\n }\n\n /**\n * Record sector completion\n */\n recordSectorCompletion(sectorId: string): void {\n this.completionTimes.push({\n sectorId,\n completedAt: Date.now()\n });\n }\n\n /**\n * Record macro creation (prep mode only)\n */\n recordMacroCreation(macro: MacroSnapshot): void {\n this.createdMacros.push(macro);\n }\n\n // ===== Trial Completion =====\n\n /**\n * Finalize trial and call onTrialEnd callback\n */\n finalizeTrial(endReason: 'timeout' | 'auto_complete' | 'submit'): void {\n const trialEndTime = Date.now();\n const totalDuration = trialEndTime - this.trialStartTime;\n const finalSnapshot = this.buildStateSnapshot();\n\n const mode = this.controller.state.cfg.mode;\n\n if (mode === 'construction') {\n const finalBlueprintState = this.buildFinalBlueprintState(finalSnapshot);\n \n // Extract composites as quickstash macros (ready for next trial input)\n const quickstashMacros = finalBlueprintState\n .filter(bp => bp.blueprintType === 'composite')\n .map(bp => ({\n id: bp.blueprintId,\n parts: bp.parts!, // Composites always have parts\n ...(bp.label && { label: bp.label })\n }));\n\n const data: ConstructionTrialData = {\n trialType: 'construction',\n trialId: this.trialId,\n gameId: this.gameId,\n trialNum: 0, // TODO: Plugin should provide this\n trialStartTime: this.trialStartTime,\n trialEndTime,\n totalDuration,\n endReason: endReason as 'timeout' | 'auto_complete',\n completionTimes: this.completionTimes,\n finalBlueprintState,\n quickstashMacros,\n finalSnapshot\n };\n\n if (this.callbacks.onTrialEnd) {\n this.callbacks.onTrialEnd(data);\n }\n } else {\n const finalMacros = this.createdMacros.length\n ? this.createdMacros\n : this.buildMacrosFromSnapshot(finalSnapshot);\n\n // Convert MacroSnapshot to quickstash input format\n // Ensure IDs start with \"comp:\" for proper border rendering\n const quickstashMacros = finalMacros.map(macro => ({\n id: macro.macroId.startsWith('comp:') ? macro.macroId : `comp:${macro.macroId}`,\n parts: macro.parts\n // Note: label not included in prep macros\n }));\n\n const data: PrepTrialData = {\n trialType: 'prep',\n trialId: this.trialId,\n gameId: this.gameId,\n trialNum: 0, // TODO: Plugin should provide this\n trialStartTime: this.trialStartTime,\n trialEndTime,\n totalDuration,\n endReason: 'submit',\n createdMacros: finalMacros,\n quickstashMacros,\n finalSnapshot\n };\n\n if (this.callbacks.onTrialEnd) {\n this.callbacks.onTrialEnd(data);\n }\n }\n }\n\n // ===== Helper Methods =====\n\n /**\n * Determine interaction type from source and outcome\n */\n private determineInteractionType(\n source: 'blueprint' | 'sector',\n outcome: 'placed' | 'deleted'\n ): 'spawn' | 'move' | 'delete' {\n if (outcome === 'deleted') return 'delete';\n if (source === 'blueprint') return 'spawn';\n return 'move';\n }\n\n private toAnchorValue(value: number): number {\n return Math.round(value / this.gridStep);\n }\n\n private toAnchorPoint(point: { x: number; y: number }): { x: number; y: number } {\n return { x: this.toAnchorValue(point.x), y: this.toAnchorValue(point.y) };\n }\n\n private toAnchorVertices(vertices: number[][][]): number[][][] {\n return vertices.map(ring =>\n ring.map(vertex => [\n this.toAnchorValue(vertex[0]!),\n this.toAnchorValue(vertex[1]!)\n ])\n );\n }\n\n private buildMacrosFromSnapshot(snapshot: StateSnapshot): MacroSnapshot[] {\n return snapshot.sectors.map(sec => {\n // STEP 1: Convert bbox positions to shape origin positions in anchor coordinates\n const shapeOriginPositions = sec.pieces.map(piece => {\n const bp = this.controller.getBlueprint(piece.blueprintId);\n const kind = bp && 'kind' in bp ? bp.kind : piece.blueprintId;\n \n // Get the piece's actual position in pixels from controller state\n const actualPiece = this.controller.findPiece(piece.pieceId);\n if (!actualPiece || !bp) {\n return {\n kind,\n position: piece.position // Fallback to bbox position\n };\n }\n \n // Get bounding box of the blueprint using the geometry helper\n const bb = boundsOfBlueprint(bp, this.controller.getPrimitive);\n \n // Convert bbox position to shape origin position\n // In pixels: shapeOriginPos = piece.pos - bb.min\n // Then convert to anchor coordinates\n const shapeOriginPixels = {\n x: actualPiece.pos.x - bb.min.x,\n y: actualPiece.pos.y - bb.min.y\n };\n const shapeOriginAnchor = this.toAnchorPoint(shapeOriginPixels);\n \n return {\n kind,\n position: shapeOriginAnchor // Shape origin in anchor coordinates\n };\n });\n\n // STEP 2: Calculate centroid and convert to relative offsets\n if (shapeOriginPositions.length === 0) {\n return {\n macroId: sec.sectorId,\n parts: [],\n shape: [],\n pieceCount: 0\n };\n }\n\n // Calculate centroid of all pieces (in anchor coordinates)\n let sumX = 0, sumY = 0;\n for (const item of shapeOriginPositions) {\n sumX += item.position.x;\n sumY += item.position.y;\n }\n const centroidX = Math.round(sumX / shapeOriginPositions.length);\n const centroidY = Math.round(sumY / shapeOriginPositions.length);\n\n // Convert absolute positions to relative offsets (like ANCHOR_COMPOSITES format)\n const parts = shapeOriginPositions.map(item => ({\n kind: item.kind,\n anchorOffset: {\n x: Math.round(item.position.x - centroidX),\n y: Math.round(item.position.y - centroidY)\n }\n }));\n\n const shape = sec.pieces.flatMap(piece => piece.vertices || []);\n\n return {\n macroId: sec.sectorId,\n parts,\n shape,\n pieceCount: sec.pieceCount\n };\n });\n }\n\n /**\n * Build state snapshot from current controller state\n * @param justCompletedSectorId - Sector ID that was just completed (but controller state hasn't updated yet)\n */\n private buildStateSnapshot(justCompletedSectorId?: string): StateSnapshot {\n const snapshotId = uuidv4();\n const timestamp = Date.now();\n\n // Build sector snapshots\n const sectors: SectorSnapshot[] = [];\n const completedSectorIds: string[] = [];\n\n for (const sector of this.controller.state.cfg.sectors) {\n const sectorState = this.controller.state.sectors[sector.id];\n // Check if this sector was just completed OR is already completed\n const completed = sector.id === justCompletedSectorId || !!sectorState?.completedAt;\n\n if (completed) {\n completedSectorIds.push(sector.id);\n }\n\n const pieces: PieceSnapshot[] = (sectorState?.pieces || []).map(p => ({\n pieceId: p.id,\n blueprintId: p.blueprintId,\n blueprintType: this.getBlueprintType(p.blueprintId),\n position: this.toAnchorPoint(p.pos),\n vertices: this.getPieceVertices(p.id)\n }));\n\n const snapshot: SectorSnapshot = {\n sectorId: sector.id,\n completed,\n pieceCount: pieces.length,\n pieces\n };\n\n if (sectorState?.completedAt !== undefined) {\n snapshot.completedAt = sectorState.completedAt;\n }\n\n sectors.push(snapshot);\n }\n\n // Build sector-tangram map\n const sectorTangramMap = this.controller.state.cfg.sectors.map(s => ({\n sectorId: s.id,\n tangramId: s.id // In our system, sector ID == tangram ID\n }));\n\n // Build blueprint order\n const blueprintOrder = {\n primitives: this.controller.state.primitives.map(bp => bp.id),\n quickstash: this.controller.state.quickstash.map(bp => bp.id)\n };\n\n return {\n snapshotId,\n timestamp,\n sectors,\n completedSectorIds,\n sectorTangramMap,\n blueprintOrder\n };\n }\n\n /**\n * Get blueprint type from blueprint ID\n */\n private getBlueprintType(blueprintId: string): 'primitive' | 'composite' {\n const bp = this.controller.getBlueprint(blueprintId);\n if (!bp) return 'primitive'; // Fallback\n return 'kind' in bp ? 'primitive' : 'composite';\n }\n\n /**\n * Get piece vertices in world space\n */\n private getPieceVertices(pieceId: string): number[][][] {\n const piece = this.controller.findPiece(pieceId);\n if (!piece) return [];\n\n const bp = this.controller.getBlueprint(piece.blueprintId);\n if (!bp) return [];\n\n const bb = boundsOfBlueprint(bp, (k) => this.controller.getPrimitive(k));\n const polys = piecePolysAt(bp, bb, piece.pos) ?? [];\n const asNumbers = polys.map(ring => ring.map(pt => [pt.x, pt.y] as [number, number]));\n return this.toAnchorVertices(asNumbers);\n }\n\n /**\n * Build final blueprint state (usage counts + definitions)\n */\n private buildFinalBlueprintState(snapshot: StateSnapshot): Array<{\n blueprintId: string;\n blueprintType: 'primitive' | 'composite';\n totalPieces: number;\n bySector: Array<{ sectorId: string; count: number }>;\n parts?: Array<{ kind: string; anchorOffset: { x: number; y: number } }>;\n shape?: Array<Array<{ x: number; y: number }>>;\n label?: string;\n }> {\n const counts = new Map<string, {\n blueprintType: 'primitive' | 'composite';\n totalPieces: number;\n bySector: Map<string, number>;\n }>();\n\n // Accumulate counts\n for (const sector of snapshot.sectors) {\n for (const piece of sector.pieces) {\n if (!counts.has(piece.blueprintId)) {\n counts.set(piece.blueprintId, {\n blueprintType: piece.blueprintType,\n totalPieces: 0,\n bySector: new Map()\n });\n }\n\n const entry = counts.get(piece.blueprintId)!;\n entry.totalPieces++;\n entry.bySector.set(sector.sectorId, (entry.bySector.get(sector.sectorId) || 0) + 1);\n }\n }\n\n // Ensure all primitives are represented, even if count is zero\n for (const primitive of this.controller.state.primitives) {\n if (!counts.has(primitive.id)) {\n counts.set(primitive.id, {\n blueprintType: 'primitive',\n totalPieces: 0,\n bySector: new Map()\n });\n }\n }\n\n // Ensure all composites are represented, even if count is zero\n for (const composite of this.controller.state.quickstash) {\n if (!counts.has(composite.id)) {\n counts.set(composite.id, {\n blueprintType: 'composite',\n totalPieces: 0,\n bySector: new Map()\n });\n }\n }\n\n // Convert to array format with blueprint definitions\n return Array.from(counts.entries()).map(([blueprintId, data]) => {\n const blueprint = this.controller.getBlueprint(blueprintId);\n \n const result: {\n blueprintId: string;\n blueprintType: 'primitive' | 'composite';\n totalPieces: number;\n bySector: Array<{ sectorId: string; count: number }>;\n parts?: Array<{ kind: string; anchorOffset: { x: number; y: number } }>;\n shape?: Array<Array<{ x: number; y: number }>>;\n label?: string;\n } = {\n blueprintId,\n blueprintType: data.blueprintType,\n totalPieces: data.totalPieces,\n bySector: Array.from(data.bySector.entries()).map(([sectorId, count]) => ({\n sectorId,\n count\n }))\n };\n\n // Add blueprint definition for both primitives and composites\n if (blueprint) {\n if (data.blueprintType === 'composite' && 'parts' in blueprint) {\n // Composite blueprint: convert pixel-based parts to anchor-based parts\n result.parts = blueprint.parts.map(part => ({\n kind: part.kind,\n anchorOffset: {\n x: Math.round(part.offset.x / this.gridStep),\n y: Math.round(part.offset.y / this.gridStep)\n }\n }));\n\n // Convert pixel-based shape to anchor-based shape\n if (blueprint.shape) {\n result.shape = blueprint.shape.map(poly => \n poly.map(vertex => ({\n x: Math.round(vertex.x / this.gridStep),\n y: Math.round(vertex.y / this.gridStep)\n }))\n );\n }\n\n // Add label if available\n if (blueprint.label) {\n result.label = blueprint.label;\n }\n } else if (data.blueprintType === 'primitive' && 'kind' in blueprint) {\n // Primitive blueprint: convert pixel-based shape to anchor-based shape\n if (blueprint.shape) {\n result.shape = blueprint.shape.map(poly => \n poly.map(vertex => ({\n x: Math.round(vertex.x / this.gridStep),\n y: Math.round(vertex.y / this.gridStep)\n }))\n );\n }\n\n // Primitives don't have labels, but we could add a default one based on kind\n result.label = blueprint.kind;\n }\n }\n\n return result;\n });\n }\n}\n","/**\n * GameBoard - Core reusable tangram game board component\n * \n * This component provides the complete tangram game functionality that can be\n * shared between jsPsych plugins. It handles both construction and preparation\n * game modes with full interaction support.\n * \n * ## Key Features\n * - **Dependency Injection**: All game content provided via props (no hardcoded data)\n * - **Multiple Input Modes**: Supports both click and drag interactions\n * - **Layout Flexibility**: Circle and semicircle layout modes\n * - **Event Tracking**: Comprehensive data collection for research\n * - **State Management**: Uses BaseGameController for robust state handling\n * \n * ## Architecture\n * - Uses modern React patterns with hooks\n * - Integrates with BaseGameController for state management\n * - Renders via Board component with computed layout\n * - Handles completion events and data collection\n * \n * ## Usage in Plugins\n * ```typescript\n * // In jsPsych plugin trial method:\n * const root = createRoot(display_element);\n * root.render(React.createElement(GameBoard, {\n * sectors: convertedSectors,\n * quickstash: convertedMacros, \n * primitives: PRIMITIVE_BLUEPRINTS,\n * layout: \"semicircle\",\n * target: \"silhouette\",\n * input: \"drag\",\n * onComplete: handleTrialComplete\n * }));\n * ```\n * \n * @see {@link BaseGameController} For state management details\n * @see {@link Board} For rendering implementation\n * @since Phase 3.3 - Extracted from monolithic Board component\n * @author Claude Code Assistant\n */\n\nimport React from \"react\";\nimport { BaseGameController } from \"@/core/engine/state/BaseGameController\";\nimport type { \n Sector, \n Blueprint, \n PrimitiveBlueprint,\n LayoutMode,\n PlacementTarget,\n InputMode\n} from \"@/core/domain/types\";\nimport { computeCircleLayout, rectForBand } from \"@/core/domain/layout\";\nimport { solveLogicalBox } from \"@/core/domain/solve\";\nimport type { Poly } from \"@/core/domain/types\";\nimport { CONFIG } from \"@/core/config/config\";\nimport BoardView, { type AnchorDots as DotsType } from \"./BoardView\";\nimport { \n inferUnitFromPolys, \n placeSilhouetteGridAlignedAsPolys } from \"@/core/engine/geometry\";\nimport { anchorsSilhouetteComplete, anchorsWorkspaceComplete } from \"@/core/engine/validation/complete\";\nimport { scalePolys } from \"@/core/components/board/utils\";\nimport { usePieceState } from \"@/core/components/board/usePieceState\";\nimport { useAnchorGrid } from \"@/core/components/board/useAnchorGrid\";\nimport { useDragController } from \"@/core/components/board/useDragController\";\nimport { useClickController } from \"@/core/components/board/useClickController\";\nimport { InteractionTracker } from \"@/core/io/InteractionTracker\";\n\n/**\n * Configuration interface for GameBoard component\n * \n * This interface defines all the required game content and behavior settings\n * that must be provided to the GameBoard component. All properties use \n * dependency injection - no defaults are provided.\n */\nexport interface GameBoardConfig {\n /** \n * Array of sector definitions containing target silhouettes to construct\n * Each sector represents one puzzle to solve\n */\n sectors: Sector[];\n \n /** \n * Array of pre-made composite piece blueprints (macros)\n * Usually created in prep trials and passed to construction trials\n */\n quickstash: Blueprint[];\n \n /** \n * Array of primitive tangram piece definitions\n * These are the basic 7 tangram shapes that never change\n */\n primitives: PrimitiveBlueprint[];\n \n /** \n * Layout mode for the game board\n * - \"circle\": Full circular layout with pieces arranged in complete circle\n * - \"semicircle\": Half-circle layout with pieces in arc above workspace\n */\n layout: LayoutMode;\n \n /** \n * Target placement mode for piece validation\n * - \"workspace\": Pieces can be placed freely in workspace area\n * - \"silhouette\": Pieces must be placed within target silhouette bounds\n */\n target: PlacementTarget;\n \n /** \n * Input interaction mode\n * - \"click\": Click to select pieces, click to place (better for touch)\n * - \"drag\": Drag pieces directly with mouse/touch\n */\n input: InputMode;\n \n /** \n * Time limit for the trial in milliseconds\n * Set to 0 for no time limit\n */\n timeLimitMs: number;\n \n /** \n * Maximum number of quickstash/macro slots to display\n * Controls size of the macro selection ring\n */\n maxQuickstashSlots: number;\n \n /** \n * Maximum number of primitive pieces allowed in a composite\n * Used for validation when creating macros (prep mode only)\n */\n maxCompositeSize?: number;\n \n /**\n * Game mode to determine behavior differences\n * - \"construction\": Standard puzzle-solving mode with toggle\n * - \"prep\": Macro creation mode with primitives-only center\n */\n mode?: \"construction\" | \"prep\";\n \n /**\n * Minimum pieces required per macro (prep mode only)\n * Used for submit button validation\n */\n minPiecesPerMacro?: number;\n \n /**\n * Whether all slots must be filled to complete trial (prep mode only)\n * Used for submit button validation\n */\n requireAllSlots?: boolean;\n \n /** Optional CSS width for the game board SVG */\n width?: number;\n \n /** Optional CSS height for the game board SVG */\n height?: number;\n}\n\n/**\n * Props interface for GameBoard component, extending configuration with event callbacks\n *\n * This interface includes all configuration options plus optional event handlers\n * that plugins can use to respond to game events and collect data.\n */\nexport interface GameBoardProps extends GameBoardConfig {\n /**\n * Called when an individual sector is completed\n * Useful for tracking progress through multi-sector trials\n */\n onSectorComplete?: (sectorId: string, snapshot: any) => void;\n\n /**\n * Called when a piece is successfully placed in a sector\n * Useful for real-time interaction tracking\n */\n onPiecePlace?: (pieceId: string, sectorId: string) => void;\n\n /**\n * Called when a piece is removed from a sector\n * Useful for tracking piece manipulation patterns\n */\n onPieceRemove?: (pieceId: string) => void;\n\n /**\n * Called immediately after each complete interaction (piece pickup + placedown)\n * Use for incremental data saving (e.g., socket.emit())\n */\n onInteraction?: (event: any) => void;\n\n /**\n * Called once when trial ends\n * Contains complete interaction history + final state\n * This is the primary mechanism for trial completion - plugins should handle\n * React cleanup and jsPsych.finishTrial() in their wrapper for this callback\n */\n onTrialEnd?: (data: any) => void;\n\n /**\n * Called when the game controller is ready\n * Useful for spawning initial pieces or setting up state\n */\n onControllerReady?: (controller: BaseGameController, layout?: any, force?: () => void) => void;\n}\n\n/**\n * Core GameBoard component that encapsulates all tangram game functionality\n * \n * This is the main reusable component that provides complete tangram game\n * functionality for jsPsych plugins. It handles all aspects of the game\n * including piece interaction, collision detection, completion validation,\n * and data collection.\n * \n * ## Key Responsibilities\n * - Creates and manages BaseGameController for state management\n * - Computes layout geometry for board rendering \n * - Handles event callbacks for plugin integration\n * - Manages CSS sizing for responsive display\n * \n * ## State Management\n * Uses BaseGameController internally which provides:\n * - Piece placement and validation\n * - Sector completion tracking\n * - Event logging for data collection\n * - Collision detection and snapping\n * \n * @param props - Configuration and event callbacks for the game\n * @returns React component rendering the complete tangram game interface\n */\nexport default function GameBoard(props: GameBoardProps) {\n const {\n sectors,\n quickstash,\n primitives,\n layout: layoutMode,\n target,\n input,\n timeLimitMs,\n maxQuickstashSlots,\n maxCompositeSize,\n mode,\n width: _width,\n height: _height,\n onSectorComplete,\n onPiecePlace,\n onPieceRemove,\n onInteraction,\n onTrialEnd,\n onControllerReady\n } = props;\n \n // Initialize game controller with injected data\n const controller = React.useMemo(() => {\n const gameConfig = {\n n: sectors.length,\n layout: layoutMode,\n target,\n input,\n timeLimitMs,\n maxQuickstashSlots,\n ...(maxCompositeSize !== undefined && { maxCompositeSize }),\n mode: mode || \"construction\", // Default to construction mode for backwards compatibility\n ...(props.minPiecesPerMacro !== undefined && { minPiecesPerMacro: props.minPiecesPerMacro }),\n ...(props.requireAllSlots !== undefined && { requireAllSlots: props.requireAllSlots })\n };\n \n return new BaseGameController(\n sectors,\n quickstash,\n primitives, \n gameConfig\n );\n }, [sectors, quickstash, primitives, layoutMode, target, input, timeLimitMs, maxQuickstashSlots, maxCompositeSize, mode, props.minPiecesPerMacro, props.requireAllSlots]);\n\n // Initialize interaction tracker for data collection (if callbacks provided)\n const tracker = React.useMemo(() => {\n if (!onInteraction && !onTrialEnd) return null;\n\n const callbacks: { onInteraction?: (event: any) => void; onTrialEnd?: (data: any) => void } = {};\n if (onInteraction) callbacks.onInteraction = onInteraction;\n if (onTrialEnd) callbacks.onTrialEnd = onTrialEnd;\n\n return new InteractionTracker(controller, callbacks);\n }, [controller, onInteraction, onTrialEnd]);\n\n // Call onControllerReady when controller is ready\n React.useEffect(() => {\n if (onControllerReady) {\n onControllerReady(controller);\n }\n }, [controller, onControllerReady]);\n\n // Cleanup tracker on unmount\n React.useEffect(() => {\n return () => {\n if (tracker) {\n tracker.dispose();\n }\n };\n }, [tracker]);\n\n // Compute layout geometry \n const { layout, viewBox } = React.useMemo(() => {\n const nSectors = sectors.length;\n const sectorIds = sectors.map(s => s.id);\n const masksPerSector: Poly[][] = sectors.map(s => s.silhouette.mask ?? []);\n \n const logicalBox = solveLogicalBox({\n n: nSectors,\n layoutMode,\n target,\n qsMaxSlots: maxQuickstashSlots,\n primitivesSlots: primitives.length,\n layoutPadPx: CONFIG.layout.paddingPx,\n masks: masksPerSector,\n });\n \n const layout = computeCircleLayout(\n { w: logicalBox.LOGICAL_W, h: logicalBox.LOGICAL_H },\n nSectors,\n sectorIds,\n layoutMode,\n target,\n {\n qsMaxSlots: maxQuickstashSlots,\n primitivesSlots: primitives.length,\n masks: masksPerSector,\n }\n );\n \n return {\n layout,\n viewBox: { w: logicalBox.LOGICAL_W, h: logicalBox.LOGICAL_H }\n };\n }, [sectors, layoutMode, target, maxQuickstashSlots, primitives.length]);\n\n // Force re-render utility\n const [, force] = React.useReducer((x) => x + 1, 0);\n\n // Call onControllerReady when controller and layout are ready\n React.useEffect(() => {\n if (onControllerReady) {\n onControllerReady(controller, layout, force);\n }\n }, [controller, layout, onControllerReady, force]);\n \n // Game completion tracking\n const [gameCompleted, setGameCompleted] = React.useState(false);\n \n // Watch for game completion\n React.useEffect(() => {\n const checkGameCompletion = () => {\n const allSectorsComplete = sectors.every(s =>\n controller.isSectorCompleted(s.id)\n );\n\n if (allSectorsComplete && !gameCompleted) {\n setGameCompleted(true);\n\n // Finalize trial data tracking (which calls onTrialEnd)\n if (tracker) {\n tracker.finalizeTrial('auto_complete');\n }\n }\n };\n\n // Check completion whenever controller state updates\n checkGameCompletion();\n }, [controller.updateCount, sectors, gameCompleted, controller, tracker]);\n \n // Sector completion callback\n const handleSectorComplete = React.useCallback((sectorId: string) => {\n if (onSectorComplete) {\n onSectorComplete(sectorId, controller.snapshot());\n }\n }, [onSectorComplete, controller]);\n \n // Event callbacks for plugin integration\n const eventCallbacks = React.useMemo(() => ({\n onSectorComplete: handleSectorComplete,\n onPiecePlace: onPiecePlace || (() => {}),\n onPieceRemove: onPieceRemove || (() => {})\n }), [handleSectorComplete, onPiecePlace, onPieceRemove]);\n \n // Calculate sizing based on layout mode\n const getGameboardStyle = () => {\n const baseStyle = {\n margin: '0 auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative' as const,\n };\n\n if (layoutMode === 'circle') {\n // Circle mode: square aspect ratio (height == width)\n const size = Math.min(window.innerWidth * 0.96, window.innerHeight * 0.96);\n return {\n ...baseStyle,\n width: `${size}px`,\n height: `${size}px`,\n };\n } else {\n // Semicircle mode: width is 2x height\n const maxWidth = Math.min(window.innerWidth * 0.96, window.innerHeight * 0.96 * 2);\n const maxHeight = Math.min(window.innerWidth * 0.96 / 2, window.innerHeight * 0.96);\n return {\n ...baseStyle,\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n };\n }\n };\n\n // Calculate SVG dimensions to pass to Board component\n const getSvgDimensions = () => {\n if (layoutMode === 'circle') {\n // Circle mode: square aspect ratio (height == width)\n const size = Math.min(window.innerWidth * 0.96, window.innerHeight * 0.96);\n return { width: size, height: size };\n } else {\n // Semicircle mode: width is 2x height\n const maxWidth = Math.min(window.innerWidth * 0.96, window.innerHeight * 0.96 * 2);\n const maxHeight = Math.min(window.innerWidth * 0.96 / 2, window.innerHeight * 0.96);\n return { width: maxWidth, height: maxHeight };\n }\n };\n\n const svgDimensions = getSvgDimensions();\n\n React.useEffect(() => {\n if (controller.state.cfg.mode !== \"construction\") return;\n if (!timeLimitMs || timeLimitMs <= 0) return;\n if (gameCompleted) return;\n\n const timeoutId = window.setTimeout(() => {\n if (gameCompleted) return;\n\n if (!controller.state.endedAt) {\n controller.state.endedAt = performance.now();\n force();\n }\n\n tracker?.finalizeTrial('timeout');\n setGameCompleted(true);\n }, timeLimitMs);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [controller, timeLimitMs, gameCompleted, tracker, force]);\n\n const isSectorLocked = (id: string) => controller.isSectorCompleted(id);\n\n // Extract piece management to custom hook\n const { pieces, pieceById, getSectorPiecePolysCached } = usePieceState(controller);\n\n const clickMode = controller.state.cfg.input === \"click\";\n\n // Center badge geometry (visual + click target are identical)\n const badgeR = Math.max(CONFIG.size.centerBadge.minPx, layout.innerR * CONFIG.size.centerBadge.fractionOfOuterR);\n const badgeCenter = (controller.state.cfg.layout === \"semicircle\")\n ? { x: layout.cx, y: layout.cy - badgeR - CONFIG.size.centerBadge.marginPx }\n : { x: layout.cx, y: layout.cy };\n const isInsideBadge = (px: number, py: number) =>\n Math.hypot(px - badgeCenter.x, py - badgeCenter.y) <= badgeR;\n\n // All sector masks (raw)\n const allMasks: Poly[][] = React.useMemo(() => {\n return controller.state.cfg.sectors.map(sec => (sec.silhouette.mask ?? []));\n }, [controller.state.cfg.sectors]);\n\n // Canonical lattice scale: 1 raw UNIT → CONFIG.layout.grid.unitPx (so a unit edge = 2 grid nodes)\n // Keep a single scale so lattice density stays invariant across devices/zoom levels.\n const scaleS = React.useMemo(() => {\n const u = inferUnitFromPolys(allMasks.flat());\n return u ? (CONFIG.layout.grid.unitPx / u) : 1;\n }, [allMasks]);\n\n // Extract anchor grid logic to custom hook\n const { anchorDots } = useAnchorGrid(controller, layout, scaleS);\n\n // Placed silhouettes per sector (grid-aligned polys used for inclusion tests)\n const placedSilBySector = React.useMemo(() => {\n const m = new Map<string, Poly[]>();\n for (const s of layout.sectors) {\n const mask = controller.state.cfg.sectors.find(ss => ss.id === s.id)?.silhouette.mask ?? [];\n if (!mask?.length) continue;\n const rect = rectForBand(layout, s, \"silhouette\", 1.0);\n const placed = placeSilhouetteGridAlignedAsPolys(mask, scaleS, { cx: rect.cx, cy: rect.cy });\n m.set(s.id, placed);\n }\n return m;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [layout, scaleS, controller.state.cfg.sectors]);\n\n const maybeCompleteSector = (secId: string): boolean => {\n if (!secId) return false;\n if (isSectorLocked(secId)) return false;\n\n if (controller.state.cfg.target === \"silhouette\") {\n const sil = placedSilBySector.get(secId) ?? [];\n if (!sil.length) return false;\n const piecePolys = getSectorPiecePolysCached(secId);\n if (anchorsSilhouetteComplete(sil, piecePolys)) {\n controller.markSectorCompleted(secId);\n return true;\n }\n } else {\n const raw = controller.state.cfg.sectors.find(ss => ss.id === secId)?.silhouette.mask ?? [];\n if (!raw.length) return false;\n const scaledSil = scalePolys(raw, scaleS);\n const piecePolys = getSectorPiecePolysCached(secId);\n if (anchorsWorkspaceComplete(scaledSil, piecePolys)) {\n controller.markSectorCompleted(secId);\n return true;\n }\n }\n return false;\n };\n\n // ---- drag (RAF) - Extracted to useDragController hook ---\n const dragController = useDragController(\n controller,\n layout,\n pieces,\n pieceById,\n anchorDots,\n placedSilBySector,\n isSectorLocked,\n maybeCompleteSector,\n force,\n undefined, // clickController - will be set later\n tracker // Pass tracker for data collection\n );\n\n const { \n draggingId, \n dragInvalid, \n svgRef, \n onPiecePointerDown, \n onBlueprintPointerDown, \n onPointerMove, \n onPointerUp, \n setPieceRef,\n setDraggingId,\n lockedPieceId,\n dragRef // TODO: Remove once click mode is extracted\n } = dragController;\n\n // ---- CLICK controller - Extracted click mode logic ---\n const svgPoint = (clientX: number, clientY: number) => {\n const svg = svgRef.current!;\n const pt = svg.createSVGPoint();\n pt.x = clientX; pt.y = clientY;\n const ctm = svg.getScreenCTM();\n if (!ctm) return { x: 0, y: 0 };\n const sp = pt.matrixTransform(ctm.inverse());\n return { x: sp.x, y: sp.y };\n };\n\n const clickController = useClickController(\n controller,\n layout,\n pieces,\n clickMode,\n draggingId,\n setDraggingId,\n dragRef,\n isInsideBadge,\n isSectorLocked,\n maybeCompleteSector,\n svgPoint,\n force,\n tracker // Pass tracker for data collection\n );\n\n const {\n selectedPieceId,\n onRootPointerDown\n } = clickController;\n\n const onCenterBadgePointerDown = (e: React.PointerEvent) => {\n if (draggingId) return;\n const { x, y } = svgPoint(e.clientX, e.clientY);\n\n if (controller.state.cfg.mode === \"prep\") {\n if (!controller.isSubmitEnabled() || gameCompleted) {\n e.stopPropagation();\n return;\n }\n\n setGameCompleted(true);\n if (tracker) {\n tracker.finalizeTrial('submit');\n }\n e.stopPropagation();\n return;\n }\n\n // Construction mode: toggle blueprint view\n if (tracker?.recordClickEvent) {\n const from = controller.state.blueprintView;\n const to = from === \"primitives\" ? \"quickstash\" : \"primitives\";\n tracker.recordClickEvent({ x, y }, 'blueprint_view_switch', {\n blueprintViewSwitch: { from, to }\n });\n }\n controller.switchBlueprintView();\n force();\n e.stopPropagation();\n };\n\n return (\n <div className=\"tangram-gameboard\" style={getGameboardStyle()}>\n <BoardView\n controller={controller}\n layout={layout}\n viewBox={viewBox}\n width={svgDimensions.width}\n height={svgDimensions.height}\n badgeR={badgeR}\n badgeCenter={badgeCenter}\n placedSilBySector={placedSilBySector}\n anchorDots={anchorDots as DotsType[]}\n pieces={pieces}\n clickMode={clickMode}\n draggingId={draggingId}\n selectedPieceId={selectedPieceId}\n dragInvalid={dragInvalid}\n lockedPieceId={lockedPieceId}\n svgRef={svgRef}\n setPieceRef={setPieceRef}\n onPiecePointerDown={onPiecePointerDown}\n onBlueprintPointerDown={onBlueprintPointerDown}\n onRootPointerDown={onRootPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onCenterBadgePointerDown={onCenterBadgePointerDown}\n {...eventCallbacks}\n />\n </div>\n );\n}\n\n/**\n * Hook for managing GameBoard state externally\n * Useful for plugins that need direct access to game state\n */\nexport function useGameBoard(config: GameBoardConfig) {\n const controller = React.useMemo(() => {\n const gameConfig = {\n n: config.sectors.length,\n layout: config.layout,\n target: config.target,\n input: config.input,\n timeLimitMs: config.timeLimitMs,\n maxQuickstashSlots: config.maxQuickstashSlots,\n ...(config.maxCompositeSize !== undefined && { maxCompositeSize: config.maxCompositeSize }),\n mode: config.mode || \"construction\",\n ...(config.minPiecesPerMacro !== undefined && { minPiecesPerMacro: config.minPiecesPerMacro }),\n ...(config.requireAllSlots !== undefined && { requireAllSlots: config.requireAllSlots })\n };\n \n return new BaseGameController(\n config.sectors,\n config.quickstash,\n config.primitives,\n gameConfig\n );\n }, [config]);\n \n const snapshot = React.useMemo(() => \n controller.snapshot(), \n [controller.updateCount]\n );\n \n return {\n controller,\n snapshot,\n isComplete: !!controller.state.endedAt\n };\n}\n","import type { PrimitiveBlueprint, Poly, Vec, TanKind } from \"@/core/domain/types\";\n\n// ===== numeric units (match Python SideLength scaling) ======================\nconst U = 40; // 1 UNIT in pixels\nconst HALFUNIT = U / 2;\nconst DIAGONAL = U * Math.SQRT2;\nconst HALFDIAGONAL = DIAGONAL / 2;\n\n// ===== small vec helpers ====================================================\nconst P = (x: number, y: number): Vec => ({ x, y });\n\n/** rotate array left by k (Python deque.rotate(-k)) */\nfunction rotLeft<T>(arr: T[], k: number): T[] {\n const n = arr.length; if (n === 0) return [];\n const s = ((k % n) + n) % n;\n return arr.slice(s).concat(arr.slice(0, s));\n}\n\n/**\n * Mirrors your Python `next_point`:\n * interior angle is CLOCKWISE at the vertex; we walk the boundary clockwise.\n */\nfunction nextPoint(\n x0: number, y0: number, // previous vertex\n x1: number, y1: number, // current vertex\n interiorDeg: number,\n dist: number\n): Vec {\n const phi = Math.atan2(y0 - y1, x0 - x1); // incoming edge (x0->x1)\n const theta = phi - (interiorDeg * Math.PI) / 180; // rotate clockwise by interior angle\n return P(x1 + dist * Math.cos(theta), y1 + dist * Math.sin(theta));\n}\n\n/**\n * Build polygon from side lengths & clockwise interior angles.\n * If `firstEdgeUnits` is provided ([(x0,y0),(x1,y1)] in **unit** coords with +y up),\n * we use that exact first edge. Otherwise we default to +X of length sideLens[0].\n * Returns vertices without repeating the start (close is implied).\n */\nfunction constructFromSpec(\n sideLens: number[],\n angles: number[],\n firstEdgeUnits?: [Vec, Vec]\n): Poly {\n let pts: Vec[];\n if (firstEdgeUnits) {\n // map unit coords (up +y) -> canvas coords (down +y): invert y and scale by U\n const a = firstEdgeUnits[0]; // typically (0,0)\n const b = firstEdgeUnits[1];\n const A = P(-a.x * U, a.y * U);\n const B = P(-b.x * U, b.y * U);\n pts = [A, B];\n } else {\n // default: first edge along +X\n const firstSideLen = sideLens[0];\n if (firstSideLen === undefined) throw new Error(\"No side lengths provided\");\n pts = [P(0, 0), P(firstSideLen, 0)];\n }\n\n // Python logic: rotate side lengths by -1 (since first edge already placed), angles unchanged\n const sidesRot = rotLeft(sideLens, 1);\n const angRot = angles;\n\n // add all but the final closing edge\n for (let i = 1; i < sideLens.length - 1; i++) {\n const last = pts[i - 1];\n const curr = pts[i];\n if (!last || !curr) continue;\n const sLen = sidesRot[i - 1];\n const aDeg = angRot[i - 1];\n if (sLen === undefined || aDeg === undefined) continue;\n pts.push(nextPoint(last.x, last.y, curr.x, curr.y, aDeg, sLen));\n }\n return pts;\n}\n\n// ===== default first edges in UNIT coords ( +y is UP here ) =================\n// Copied from your `default_pilot_rotations`. We invert y above for canvas.\nconst FIRST_EDGES_UNITS: Record<TanKind, [Vec, Vec]> = {\n small_triangle: [P(0, 0), P(0.5, 0.5)],\n parallelogram: [P(0, 0), P(0.5, 0)],\n large_triangle: [P(0, 0), P(0.5, -0.5)],\n med_triangle: [P(0, 0), P(0.5, 0)],\n square: [P(0, 0), P(0.5, 0)],\n};\n\n// ===== canonical half-edge primitives ===================\n// TODO: Sean we need to talk about aligning this with your Python implementation\n// Unchanging primitive tangram pieces - these are constants, not configurable\nconst PRIMITIVE_BLUEPRINTS_CACHE = (() => {\n // Sequences copied verbatim from your Python tanprimitives_halfedges()\n const specs: Array<{\n id: string;\n kind: TanKind;\n sideLens: number[];\n angles: number[];\n color: string;\n }> = [\n {\n id: \"prim:square\",\n kind: \"square\",\n sideLens: [HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT],\n angles: [180, 90, 180, 90, 180, 90, 180, 90],\n color: \"#f43f5e\",\n },\n {\n id: \"prim:small\",\n kind: \"small_triangle\",\n sideLens: [HALFDIAGONAL, HALFDIAGONAL, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT],\n angles: [180, 45, 180, 90, 180, 45],\n color: \"#f59e0b\",\n },\n {\n id: \"prim:parallelogram\",\n kind: \"parallelogram\",\n sideLens: [HALFUNIT, HALFUNIT, HALFDIAGONAL, HALFDIAGONAL, HALFUNIT, HALFUNIT, HALFDIAGONAL, HALFDIAGONAL],\n angles: [180, 135, 180, 45, 180, 135, 180, 45],\n color: \"#10b981\",\n },\n {\n id: \"prim:med\",\n kind: \"med_triangle\",\n sideLens: [HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFDIAGONAL, HALFDIAGONAL, HALFDIAGONAL, HALFDIAGONAL],\n angles: [180, 180, 180, 45, 180, 90, 180, 45],\n color: \"#3b82f6\",\n },\n {\n id: \"prim:large\",\n kind: \"large_triangle\",\n sideLens: [\n HALFDIAGONAL, HALFDIAGONAL, HALFDIAGONAL, HALFDIAGONAL,\n HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT, HALFUNIT\n ],\n angles: [\n 180, 180, 180, 45,\n 180, 180, 180, 90, 180, 180, 180, 45\n ],\n color: \"#8b5cf6\",\n },\n ];\n\n return specs.map(({ id, kind, sideLens, angles, color }) => {\n const firstEdge = FIRST_EDGES_UNITS[kind]; // always present for these 5\n const verts = constructFromSpec(sideLens, angles, firstEdge);\n return {\n id,\n kind,\n shape: [verts],\n colorHint: color,\n } as PrimitiveBlueprint;\n });\n})();\n\nexport function primitiveBlueprintsHalfEdge(): PrimitiveBlueprint[] {\n return PRIMITIVE_BLUEPRINTS_CACHE;\n}\n\n// Direct access to primitives constant (for dependency injection)\nexport const PRIMITIVE_BLUEPRINTS: PrimitiveBlueprint[] = PRIMITIVE_BLUEPRINTS_CACHE;\n","// src/core/io/quickstash.ts\nimport { CONFIG } from \"@/core/config/config\";\nimport type { Blueprint, CompositeBlueprint, PrimitiveBlueprint, TanKind, Vec } from \"@/core/domain/types\";\nimport { primitiveBlueprintsHalfEdge } from \"@/core/domain/primitives\";\n\n/**\n * Convert anchor coordinates to pixel coordinates\n * @param anchorX - X coordinate in anchor units (integer)\n * @param anchorY - Y coordinate in anchor units (integer)\n * @returns Pixel coordinates\n */\nexport function anchorToPixels(anchorX: number, anchorY: number): Vec {\n return { \n x: anchorX * CONFIG.layout.grid.stepPx, \n y: anchorY * CONFIG.layout.grid.stepPx \n };\n}\n\n/**\n * Convert pixel coordinates to anchor coordinates\n * @param pixelX - X coordinate in pixels\n * @param pixelY - Y coordinate in pixels\n * @returns Anchor coordinates (rounded to nearest grid point)\n */\nexport function pixelsToAnchor(pixelX: number, pixelY: number): Vec {\n return {\n x: Math.round(pixelX / CONFIG.layout.grid.stepPx),\n y: Math.round(pixelY / CONFIG.layout.grid.stepPx)\n };\n}\n\n/**\n * Convert anchor-based composite definition to pixel-based composite with custom grid step\n * @param anchorComposite - Composite defined with anchor coordinates\n * @param primsByKind - Map of primitive blueprints by kind\n * @param gridStepPx - Grid step in pixels (defaults to current CONFIG)\n * @returns CompositeBlueprint with pixel coordinates\n */\nexport function convertAnchorCompositeToPixels(\n anchorComposite: { id: string; parts: Array<{ kind: TanKind; anchorOffset: { x: number; y: number } }>; label?: string },\n primsByKind: Map<TanKind, PrimitiveBlueprint>,\n gridStepPx: number = CONFIG.layout.grid.stepPx\n): CompositeBlueprint {\n const { id, parts, label } = anchorComposite;\n \n // Convert anchor offsets to pixel offsets using custom grid step\n const pixelParts: Array<{ kind: TanKind; offset: Vec }> = parts.map(p => ({\n kind: p.kind,\n offset: { \n x: p.anchorOffset.x * gridStepPx, \n y: p.anchorOffset.y * gridStepPx \n }\n }));\n \n // Compute shape using custom grid step\n const shape: Vec[][] = [];\n for (const p of parts) {\n const prim = primsByKind.get(p.kind);\n if (!prim) continue;\n \n const pixelOffset = { \n x: p.anchorOffset.x * gridStepPx, \n y: p.anchorOffset.y * gridStepPx \n };\n for (const poly of prim.shape) {\n shape.push(poly.map(v => ({ x: v.x + pixelOffset.x, y: v.y + pixelOffset.y })));\n }\n }\n \n return { id, parts: pixelParts, shape, label: label ?? `Composite-${id}` };\n}\n\n/**\n * Anchor-based composite definitions (configuration-independent)\n * These are converted to pixel coordinates at render time\n */\nconst ANCHOR_COMPOSITES = [\n {\n id: \"comp:parallelogram+parallelogram\",\n parts: [\n { kind: \"parallelogram\" as TanKind, anchorOffset: { x: 0, y: 0 } },\n { kind: \"parallelogram\" as TanKind, anchorOffset: { x: 2, y: 2 } }, // Diagonal contact\n ],\n label: \"Parallelogram+Parallelogram\"\n },\n {\n id: \"comp:small_triangle+med_triangle\", \n parts: [\n { kind: \"small_triangle\" as TanKind, anchorOffset: { x: -2, y: -2 } },\n { kind: \"med_triangle\" as TanKind, anchorOffset: { x: 0, y: 0 } },\n ],\n label: \"SmallTriangle+MedTriangle\"\n },\n {\n id: \"comp:square\",\n parts: [\n { kind: \"square\" as TanKind, anchorOffset: { x: 0, y: 0 } },\n ],\n label: \"Square\"\n }\n];\n\n/**\n * Create quickstash with custom grid step (useful for testing different configurations)\n * @param gridStepPx - Grid step in pixels\n * @returns Array of blueprints with pixel coordinates based on custom grid step\n */\nexport function createQuickstashWithGridStep(gridStepPx: number): Blueprint[] {\n const prims = primitiveBlueprintsHalfEdge();\n const byKind = new Map<TanKind, PrimitiveBlueprint>();\n prims.forEach(p => byKind.set(p.kind, p));\n\n // Convert anchor-based definitions to pixel-based composites with custom grid step\n const list: Blueprint[] = ANCHOR_COMPOSITES.map(anchorComposite => \n convertAnchorCompositeToPixels(anchorComposite, byKind, gridStepPx)\n );\n\n const maxSlots = CONFIG.layout.defaults.maxQuickstashSlots;\n if (list.length > maxSlots) {\n throw new Error(\n `Quickstash has ${list.length} items but max is ${maxSlots}. Trim defaultQuickstash() or raise CONFIG.layout.defaults.maxQuickstashSlots.`\n );\n }\n return list;\n}\n\n/**\n * Get anchor-based composite definitions (for debugging/testing)\n * @returns Array of anchor-based composite definitions\n */\nexport function getAnchorComposites() {\n return ANCHOR_COMPOSITES;\n}\n\n/**\n * Default Quickstash using anchor coordinates\n * Conversion to pixels happens at render time using current CONFIG\n */\nexport function defaultQuickstash(): Blueprint[] {\n return createQuickstashWithGridStep(CONFIG.layout.grid.stepPx);\n}","/**\n * PrepApp.tsx - React wrapper for tangram prep trials\n * \n * This component handles the React rendering logic for prep trials,\n * separating it from the pure jsPsych plugin class.\n */\n\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { JsPsych } from \"jspsych\";\nimport { GameBoard } from \"../../core/components\";\nimport { PRIMITIVE_BLUEPRINTS } from \"../../core/domain/primitives\";\nimport { convertAnchorCompositeToPixels } from \"../../core/io/quickstash\";\nimport type { Sector, TanKind, PrimitiveBlueprint } from \"../../core/domain/types\";\nimport { BaseGameController } from \"../../core/engine/state/BaseGameController\";\nimport { CONFIG } from \"../../core/config/config\";\nimport { rectForBand } from \"../../core/domain/layout\";\nimport { boundsOfBlueprint } from \"../../core/engine/geometry\";\n\n// Type for anchor-based composite definitions (matches what convertAnchorCompositeToPixels expects)\ntype AnchorComposite = {\n id: string;\n parts: Array<{ kind: TanKind; anchorOffset: { x: number; y: number } }>;\n label?: string;\n};\n\nexport interface StartPrepTrialParams {\n numQuickstashSlots: number;\n maxPiecesPerMacro: number;\n minPiecesPerMacro: number;\n inputMode: \"click\" | \"drag\";\n layoutMode: \"circle\" | \"semicircle\";\n requireAllSlots: boolean;\n quickstashMacros?: AnchorComposite[];\n onInteraction?: (event: any) => void;\n onTrialEnd?: (data: any) => void;\n}\n\n/**\n * Start a prep trial by rendering the GameBoard component in prep mode\n */\nexport function startPrepTrial(\n display_element: HTMLElement, \n params: StartPrepTrialParams,\n jsPsych: JsPsych\n) {\n // Extract parameters (defaults handled at plugin level)\n const { \n numQuickstashSlots, \n maxPiecesPerMacro, \n minPiecesPerMacro, \n inputMode, \n layoutMode, \n requireAllSlots,\n quickstashMacros,\n onInteraction,\n onTrialEnd,\n } = params;\n\n // Create blank prep sectors (no silhouettes)\n const prepSectors: Sector[] = Array.from({ length: numQuickstashSlots }, (_, i) => ({\n id: `prep-sector-${i}`,\n silhouette: {\n id: `prep-silhouette-${i}`,\n mask: []\n }\n }));\n\n // Always create a fresh root (don't try to reuse unmounted roots)\n const root = createRoot(display_element);\n\n // Callback to spawn macro pieces when controller is ready\n const handleControllerReady = (controller: BaseGameController, layout?: any, force?: () => void) => {\n if (quickstashMacros && quickstashMacros.length > 0 && layout) {\n // Spawn pieces immediately when controller and layout are ready\n const primsByKind = new Map<TanKind, PrimitiveBlueprint>();\n PRIMITIVE_BLUEPRINTS.forEach(p => primsByKind.set(p.kind, p));\n \n quickstashMacros.forEach((anchorComposite, macroIndex) => {\n const sectorId = `prep-sector-${macroIndex}`;\n \n // Convert anchor composite to pixel-based composite\n const compositeBlueprint = convertAnchorCompositeToPixels(\n anchorComposite, \n primsByKind, \n CONFIG.layout.grid.stepPx\n );\n \n // Get the sector center coordinates using rectForBand\n const sectorGeom = layout.sectors.find((s: any) => s.id === sectorId);\n if (!sectorGeom) return;\n \n const sectorRect = rectForBand(layout, sectorGeom, \"workspace\", 1.0);\n \n // Calculate the composite's overall bounding box\n // part.offset is where the primitive's bb.min ends up in the composite (see convertAnchorCompositeToPixels)\n // So we just need to find the bounds of all pieces at their offsets\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n compositeBlueprint.parts.forEach(part => {\n const primitiveBlueprint = primsByKind.get(part.kind);\n if (!primitiveBlueprint) return;\n const bb = boundsOfBlueprint(primitiveBlueprint, controller.getPrimitive);\n \n // part.offset + bb gives us the piece's position in the composite\n // (since part.offset is added to all vertices, including bb.min)\n const pieceMinX = part.offset.x + bb.min.x;\n const pieceMinY = part.offset.y + bb.min.y;\n const pieceMaxX = part.offset.x + bb.max.x;\n const pieceMaxY = part.offset.y + bb.max.y;\n \n minX = Math.min(minX, pieceMinX);\n minY = Math.min(minY, pieceMinY);\n maxX = Math.max(maxX, pieceMaxX);\n maxY = Math.max(maxY, pieceMaxY);\n });\n \n const compositeCenterX = minX + (maxX - minX) / 2;\n const compositeCenterY = minY + (maxY - minY) / 2;\n \n // Spawn each piece in the composite\n compositeBlueprint.parts.forEach((part) => {\n const primitiveBlueprint = primsByKind.get(part.kind);\n if (!primitiveBlueprint) {\n console.warn(`Unknown primitive kind: ${part.kind}`);\n return;\n }\n \n // Get the piece's bounding box\n const bb = boundsOfBlueprint(primitiveBlueprint, controller.getPrimitive);\n \n // In the composite, the piece's bb.min is at (part.offset + bb.min)\n const compositeBBoxMinX = part.offset.x + bb.min.x;\n const compositeBBoxMinY = part.offset.y + bb.min.y;\n \n // Position relative to composite center, then place at sector center\n // piece.pos is where bb.min should be, so we use compositeBBoxMinX\n const worldPosX = sectorRect.cx + (compositeBBoxMinX - compositeCenterX);\n const worldPosY = sectorRect.cy + (compositeBBoxMinY - compositeCenterY);\n \n // Align to grid (like silhouettes do)\n const gridStep = CONFIG.layout.grid.stepPx;\n const alignedX = Math.round(worldPosX / gridStep) * gridStep;\n const alignedY = Math.round(worldPosY / gridStep) * gridStep;\n \n // Spawn primitive piece at the grid-aligned position\n const pieceId = controller.spawnFromBlueprint(\n primitiveBlueprint, \n { x: alignedX, y: alignedY }\n );\n \n // Place the piece in the prep sector\n controller.drop(pieceId, sectorId);\n });\n });\n \n // Force a re-render to show the spawned pieces\n if (force) {\n force();\n }\n }\n };\n\n root.render(React.createElement(GameBoard, {\n sectors: prepSectors,\n quickstash: [], // No pre-made macros\n primitives: PRIMITIVE_BLUEPRINTS,\n layout: layoutMode,\n target: 'workspace', // Pieces go in sectors\n input: inputMode,\n timeLimitMs: 0, // No time limit for prep\n maxQuickstashSlots: 0, // Primitives only in center\n maxCompositeSize: maxPiecesPerMacro,\n mode: 'prep', // Enable prep-specific behavior\n minPiecesPerMacro: minPiecesPerMacro,\n requireAllSlots: requireAllSlots,\n onControllerReady: handleControllerReady,\n ...(onInteraction && { onInteraction }),\n ...(onTrialEnd && { onTrialEnd })\n }));\n\n return { root, display_element, jsPsych };\n}\n","import { JsPsych, JsPsychPlugin, ParameterType, TrialType } from \"jspsych\";\nimport { startPrepTrial, StartPrepTrialParams } from \"./PrepApp\";\n\nconst info = {\n name: \"tangram-prep\",\n version: \"1.0.0\",\n parameters: {\n /** Number of quickstash slots for macro creation */\n num_quickstash_slots: {\n type: ParameterType.INT,\n default: undefined\n },\n /** Maximum pieces allowed per macro */\n max_pieces_per_macro: {\n type: ParameterType.INT,\n default: 2\n },\n /** Minimum pieces required per macro */\n min_pieces_per_macro: {\n type: ParameterType.INT,\n default: 2\n },\n /** Input mode: click or drag */\n input: {\n type: ParameterType.STRING,\n default: \"click\"\n },\n /** Layout mode: circle or semicircle */\n layout: {\n type: ParameterType.STRING,\n default: \"semicircle\"\n },\n /** Whether all slots must be filled to complete trial */\n require_all_slots: {\n type: ParameterType.BOOL,\n default: undefined\n },\n /** Array of pre-made macro pieces to edit */\n quickstash_macros: {\n type: ParameterType.COMPLEX,\n default: [],\n description: \"Array of AnchorComposite objects to edit as primitive pieces\"\n },\n /** Callback fired after each interaction (optional analytics hook) */\n onInteraction: {\n type: ParameterType.FUNCTION,\n default: undefined\n },\n /** Callback fired when prep trial ends */\n onTrialEnd: {\n type: ParameterType.FUNCTION,\n default: undefined\n }\n },\n data: {\n /** Completion status */\n completed: {\n type: ParameterType.BOOL\n }\n },\n citations: \"\"\n};\n\ntype Info = typeof info;\n\n/**\n * **tangram-prep**\n *\n * A jsPsych wrapper around the React-based prep interface.\n *\n * @author Justin Yang & Sean Paul Anderson\n */\nclass TangramPrepPlugin implements JsPsychPlugin<Info> {\n static info = info;\n\n constructor(private jsPsych: JsPsych) {}\n\n /**\n * Launches the trial by invoking startPrepTrial\n * with the display element, parameters, and jsPsych instance.\n */\n trial(display_element: HTMLElement, trial: TrialType<Info>) {\n // Wrap onTrialEnd to handle React cleanup and jsPsych trial completion\n const wrappedOnTrialEnd = (data: any) => {\n // Call user-provided callback if exists\n if (trial.onTrialEnd) {\n trial.onTrialEnd(data);\n }\n\n // Clean up React\n const reactContext = (display_element as any).__reactContext;\n if (reactContext?.root) {\n reactContext.root.unmount();\n }\n\n // Clear display\n display_element.innerHTML = '';\n\n // Finish jsPsych trial with data\n this.jsPsych.finishTrial(data);\n };\n\n const params: StartPrepTrialParams = {\n numQuickstashSlots: trial.num_quickstash_slots || 4,\n maxPiecesPerMacro: trial.max_pieces_per_macro,\n minPiecesPerMacro: trial.min_pieces_per_macro,\n inputMode: trial.input as \"click\" | \"drag\",\n layoutMode: trial.layout as \"circle\" | \"semicircle\",\n requireAllSlots: trial.require_all_slots,\n quickstashMacros: trial.quickstash_macros,\n onInteraction: trial.onInteraction,\n onTrialEnd: wrappedOnTrialEnd,\n };\n \n const { root, display_element: element, jsPsych } = startPrepTrial(display_element, params, this.jsPsych);\n \n // Store React context for cleanup\n (element as any).__reactContext = { root, jsPsych };\n }\n}\n\nexport default TangramPrepPlugin;\n"],"names":["REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","assign","emptyObject","Component","props","context","updater","partialState","callback","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","ReactSharedInternals","hasOwnProperty","ReactElement","type","key","self","source","owner","cloneAndReplaceKey","oldElement","newKey","isValidElement","object","escape","escaperLookup","match","userProvidedKeyEscapeRegex","getElementKey","element","index","noop$1","resolveThenable","thenable","fulfilledValue","error","mapIntoArray","children","array","escapedPrefix","nameSoFar","invokeCallback","c","nextNamePrefix","i","mapChildren","func","result","count","child","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","event","noop","react_production","forEachFunc","forEachContext","n","size","fn","config","propName","childArray","defaultValue","childrenLength","render","compare","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","usable","action","initialState","permalink","deps","Context","value","initialValue","create","createDeps","update","dispatcher","ref","passthrough","reducer","initialArg","init","subscribe","getSnapshot","getServerSnapshot","reactModule","require$$0","push","heap","node","a","parentIndex","parent","peek","pop","first","last","length","halfLength","leftIndex","left","rightIndex","right","b","diff","exports","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","needsPaint","localSetTimeout","localClearTimeout","localSetImmediate","advanceTimers","currentTime","timer","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","startTime","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","continuationCallback","channel","port","ms","task","fps","eventHandler","priorityLevel","options","timeout","parentPriorityLevel","schedulerModule","React","formatProdErrorMessage","code","url","Internals","createPortal$1","containerInfo","implementation","getCrossOriginStringAs","as","input","reactDom_production","container","previousTransition","previousUpdatePriority","href","crossOrigin","integrity","fetchPriority","form","checkDCE","err","reactDomModule","Scheduler","require$$1","ReactDOM","require$$2","isValidContainer","getNearestMountedFiber","fiber","nearestMounted","getSuspenseInstanceFromFiber","suspenseState","assertIsMounted","findCurrentFiberUsingSlowPath","alternate","parentA","parentB","didFindChild","child$0","findCurrentHostFiberImpl","tag","REACT_LEGACY_ELEMENT_TYPE","REACT_PROVIDER_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_MEMO_CACHE_SENTINEL","REACT_CLIENT_REFERENCE","getComponentNameFromType","innerType","x","ReactDOMSharedInternals","sharedNotPendingObject","valueStack","createCursor","cursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","getOwnHostContext","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","now","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","clz32","clz32Fallback","log","LN2","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markRootFinished","finishedLanes","remainingLanes","spawnedLane","updatedLanes","suspendedRetryLanes","previouslyPendingLanes","entanglements","expirationTimes","hiddenUpdates","index$5","hiddenUpdatesForLane","markSpawnedDeferredLane","entangledLanes","spawnedLaneIndex","markRootEntangled","rootEntangledLanes","index$6","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","runWithPriority","priority","previousPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","parentNode","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","getResourcesFromRoot","resources","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","attributeName","setValueForAttribute","name","prefix$8","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","prefix","suffix","describeBuiltInComponentFrame","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","RunInRootFrame","Fake","control","x$9","x$10","sample","namePropDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","frame","describeFiber","getStackByFiberInDevAndProd","workInProgress","info","getToStringValue","isCheckable","elem","trackValueOnNode","valueField","descriptor","currentValue","get","set","track","updateValueIfChanged","tracker","lastValue","getActiveElement","doc","e","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","updateInput","lastDefaultValue","checked","defaultChecked","setDefaultValue","initInput","isHydrating","updateOptions","multiple","propValue","setDefaultSelected","updateTextarea","initTextarea","setTextContent","text","firstChild","unitlessNumbers","setValueForStyle","style","styleName","isCustomProperty","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","tagName","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","restoreTarget","restoreQueue","restoreStateOfTarget","target","internalInstance","otherNode","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","stateNode","canUseDOM","passiveBrowserEventsSupported","startText","fallbackText","getData","start","startValue","startLength","end","endValue","endLength","minEnd","getEventCharCode","keyCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","EventInterface","SyntheticEvent","UIEventInterface","SyntheticUIEvent","lastMovementX","lastMovementY","lastMouseEvent","MouseEventInterface","getEventModifierState","SyntheticMouseEvent","DragEventInterface","SyntheticDragEvent","FocusEventInterface","SyntheticFocusEvent","AnimationEventInterface","SyntheticAnimationEvent","ClipboardEventInterface","SyntheticClipboardEvent","CompositionEventInterface","SyntheticCompositionEvent","normalizeKey","translateToKey","modifierKeyToProp","modifierStateGetter","keyArg","KeyboardEventInterface","SyntheticKeyboardEvent","PointerEventInterface","SyntheticPointerEvent","TouchEventInterface","SyntheticTouchEvent","TransitionEventInterface","SyntheticTransitionEvent","WheelEventInterface","SyntheticWheelEvent","ToggleEventInterface","SyntheticToggleEvent","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","getNativeBeforeInputChars","getFallbackBeforeInputChars","supportedInputTypes","isTextInputElement","nodeName","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$282","isSupported$jscomp$inline_417","element$jscomp$inline_418","stopWatchingForValueChange","handlePropertyChange","handleEventsForInputEventPolyfill","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","is","y","objectIs","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","offset","nodeEnd","containsNode","outerNode","innerNode","getActiveElementDeep","hasSelectionCapabilities","skipSelectionChangeEvent","activeElement","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","prefixedEventNames","getVendorPrefixedEventName","prefixMap","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","CapturedStacks","createCapturedValueAtFiber","existing","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","queue","pending","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","mode","createFiberImplClass","shouldConstruct","createWorkInProgress","current","resetWorkInProgress","createFiberFromTypeAndProps","fiberTag","isHostHoistableType","createFiberFromFragment","elements","createFiberFromText","content","createFiberFromPortal","portal","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","instance","listenToNonDelegatedEvent","mediaEventTypes","checkForUnmatchedText","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratable","isSingletonScope","previousHydratableOnEnteringScopedSingleton","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","nextValue","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","list","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","AbortControllerLocal","listeners","signal","listener","scheduleCallback$2","NormalPriority","CacheContext","createCache","releaseCache","cache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","entangleAsyncAction","transition","entangledListeners","requestTransitionLane","resolve","pingEngtangledActionScope","chainThenableValue","thenableWithOverride","prevOnStartTransitionFinish","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pushTransition","offscreenWorkInProgress","prevCachePool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","rejectedReason","hasForceUpdate","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","updateQueue","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","entangledActionThenable","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","firstBaseUpdate","lastBaseUpdate","pendingQueue","lastPendingUpdate","firstPendingUpdate","newState","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","callbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","reuseHiddenContextOnStack","popHiddenContext","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter$1","thenableState$1","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","HooksDispatcherOnRerender","TransitionAwareHostComponent","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","createFunctionComponentUpdateQueue","use","useMemoCache","memoCache","basicStateReducer","state","updateReducer","updateReducerImpl","baseQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$32","revertLane","rerenderReducer","dispatch","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","subscribeToStore","updateEffectImpl","pushSimpleEffect","createEffectInstance","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","setState","isRenderPhaseUpdate","actionNode","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$38","nextState","onActionSuccess","notifyActionListeners","actionStateReducer","oldState","mountActionState","initialStateProp","ssrFormState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","stateHook","updateActionStateImpl","currentStateHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","startTransition","pendingState","finishedState","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","resetStateQueue","useHostTransitionStatus","updateId","updateRefresh","refreshCache","provider","root$41","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","eagerState","throwIfDuringRender","identifierPrefix","idWithLeadingBit","booleanOrThenable","thenableIndexCounter","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","textContent","updateElement","elementType","updateFragment","updatePortal","fragment","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildrenArray","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","reconcileChildrenIterator","step","reconcileChildFibersImpl","firstChildFiber","reconcileChildFibers","mountChildFibers","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","isSuspenseInstanceFallback","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","checkShouldComponentUpdate","oldProps","newProps","nextContext","callComponentWillReceiveProps","resolveClassComponentProps","baseProps","propName$73","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","e$74","logCaughtError","boundary","onCaughtError","e$75","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","legacyErrorBoundariesThatAlreadyFailed","stack","throwException","rootRenderLanes","renderDidSuspendDelayIfPossible","workInProgressRootExitStatus","attachPingListener","wrapperError","workInProgressRootConcurrentErrors","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","nextBaseLanes","markRef","replayFunctionComponent","updateClassComponent","contextType","unresolvedOldProps","oldContext","contextType$jscomp$0","mountHostRootWithoutHydrating","SUSPENDED_MARKER","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","nextInstance","JSCompiler_temp$jscomp$0","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","digest","primaryChildren","offscreenProps","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","updateSuspenseListComponent","revealOrder","attemptEarlyBailoutIfNoScheduledUpdate","didSuspendBefore","beginWork","lazyComponent","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","canHydrateInstance","canHydrateTextInstance","markUpdate","preloadResourceAndSuspendIfNeeded","resource","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$113","bubbleProperties","completedWork","didBailout","newChildLanes","subtreeFlags","child$114","completeWork","cache$127","listenToAllSupportedEvents","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","flags","finishedWork","lastEffect","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","destroy","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$143","commitHostMount","commitHostUpdate","domElement","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","attributes","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","nextEffect","commitBeforeMutationEffects","eventsEnabled","_enabled","selection","anchorOffset","focusNode","e$20","indexWithinAnchor","indexWithinFocus","next","selectionInformation","resolvedPrevProps","clearContainerSparingly","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","error$142","commitSuspenseHydrationCallbacks","retryDehydratedSuspenseBoundary","registerSuspenseInstanceRetry","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearSuspenseBoundary","retryIfBlockedOn","getRetryCache","retryCache","attachSuspenseRetryListeners","wakeables","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","maybeNodes","getHydratableHoistableCache","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","display","hostParentFiber","parent$144","before$145","parent$146","before$147","finishedRoot$jscomp$0","includeWorkInProgressEffects","hiddenCallbacks","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","id","onPostCommit","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","sibling","DefaultAsyncDispatcher","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","actionScopeLane","suspenseHandler","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","exitStatus","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","wasRootDehydrated","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","suspendedState","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","index$4","flushSyncWorkAcrossRoots_impl","resetWorkInProgressStack","timeoutHandle","cancelTimeout","allEntangledLanes","index$2","handleThrow","thrownValue","pushDispatcher","prevDispatcher","pushAsyncDispatcher","prevAsyncDispatcher","shouldYieldForPrerendering","prevExecutionContext","unitOfWork","reason","throwAndUnwindWorkLoop","workLoopSync","thrownValue$167","performUnitOfWork","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","workLoopConcurrentByScheduler","thrownValue$169","suspendedReason","unwindUnitOfWork","skipSiblings","flushPendingEffects","scheduleCallback$1","flushPassiveEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","rootMutationHasEffect","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","win","start$jscomp$0","end$jscomp$0","startMarker","endMarker","range","rootHasLayoutEffect","releaseRootPooledCache","onRecoverableError","recoverableError","wasDelayedCommit","renderPriority","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","retryLane","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleImmediateRootScheduleTask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$174","performSyncWorkOnRoot","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","shouldAttemptEagerTransition","prev","scheduleTaskForRootDuringMicrotask","index$3","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","scheduleMicrotask","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","temp","extractEvents$1","maybeTargetInst","i$jscomp$inline_1528","eventName$jscomp$inline_1529","domEventName$jscomp$inline_1530","capitalizedEvent$jscomp$inline_1531","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","currentTarget","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","ownerDocument","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","dispatchEvent","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","targetFiber","captureName","_instance2","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","setProp","setPropOnCustomElement","hasSrc","hasSrcSet","propKey","propValue$188","lastProps","lastProp","propKey$205","propKey$221","propKey$226","propKey$231","propKey$236","namespaceURI","parentNamespace","currentPopstateTransitionEvent","localPromise","handleErrorInNextTick","parentInstance","suspenseInstance","possiblePreambleContribution","depth","nextNode","nextNode$jscomp$0","anyProps","nodeType","targetInstance","data","rootContainerInstance","preloadPropsMap","preconnectsSet","previousDispatcher","flushSyncWork","requestFormReset","prefetchDNS","preconnect","preload","preloadModule","preinitScript","preinitStyle","preinitModuleScript","previousWasRendering","wasRendering","formInst","globalDocument","preconnectAs","rel","limitedEscapedHref","preloadSelector","getStyleKey","getScriptKey","getStylesheetSelectorFromKey","getScriptSelectorFromKey","precedence","adoptPreloadPropsForStylesheet","link","reject","insertStylesheet","src","scripts","adoptPreloadPropsForScript","currentProps","styles$244","resource$245","preloadStylesheet","stylesheetPropsFromRawProps","rawProps","preloadProps","styleProps","instance$250","linkInstance","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","hostContext","onUnsuspend","insertSuspendedStylesheets","commit","stylesheetTimer","unsuspend","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","formState","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedFocus","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queuedExplicitHydrationTargets","accumulateOrCreateContinuousQueuedReplayableEvent","existingQueuedEvent","pointerId","attemptExplicitHydrationTarget","queuedTarget","attemptReplayContinuousQueuedEvent","queuedEvent","targetContainers","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","map","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","formProps","ReactDOMRoot","internalRoot","ReactDOMHydrationRoot","isomorphicReactPackageVersion$jscomp$inline_1785","componentOrElement","internals$jscomp$inline_2256","hook$jscomp$inline_2257","reactDomClient_production","clientModule","CONFIG","isComposite","bp","isPrimitive","BlueprintRegistry","bps","kind","PID","newId","NOW","BaseGameController","sectors","quickstash","primitives","_a","s","sectorId","sectorState","ss","at","piece","__spreadValues","to","p","where","sector","loc","pp","idx","f","_b","_c","minPieces","maxPieces","requireAll","allSectors","validSectorCount","pieceCount","base","__spreadProps","pointOnSegment","eps","cross","minX","maxX","minY","maxY","pointInPolygon","pt","poly","j","vertexJ","vertexI","inside","xi","yi","xj","yj","project","nx","ny","min","max","SEP_EPS","convexIntersects","polys","p0","p1","ex","pa","pb","polysOverlap","aPolys","bPolys","aabbsA","aabbsB","A","B","aa","bb","polysAABB","width","height","boundsOfShapes","shapes","boundsOfPrimitive","boundsOfComposite","primitiveLookup","part","prim","pMinX","pMinY","pMaxX","pMaxY","boundsOfBlueprint","GRID_PX","piecePolysAt","tl","ox","oy","computeSupportOffsets","cx","cy","offs","v","clampTopLeftBySupport","tlx","tly","d","layout","pointerInsideCenter","cx0","cy0","vx","vy","r","ux","uy","h_out","h_in","o","outProj","inProj","rIn","rOut","minR","maxR","rClamped","newCx","newCy","igcd","inferUnitFromPolys","g","dx","dy","placeSilhouetteGridAlignedAsPolys","S","rectCenter","tx","ty","stx","sty","gridNodesInAABB","out","x0","y0","filterNodesToBandAndSector","band","theta","filterNodesInPolys","pointInPolyFn","innerRingNodes","anchorsDiameterToPx","anchorsDiag","gridPx","solveRadii","params","layoutMode","qsMaxSlots","primitivesSlots","reqWorkspaceDiamAnchors","reqQuickstashDiamAnchors","reqPrimitiveDiamAnchors","allPolys","rawUnit","unitScaleS","Rshape_px_max","sectorPolys","rx","ry","sweep","dOut","dIn","dPrim","sinOut","sinIn","sinPrim","D_ws","D_bp","D_prim","innerR_min_bp","innerR_min_prim","innerR_min_ws","innerR_min","Tw_min","Tp_min","dr_min","outerR_min","optimizeBandSplit","args","outerRViewportBound","D_ws_px","outerR","innerR","dr","slack","wWork","wSil","addWork","Tw","Tp","solveLogicalBox","layoutPadPx","LOGICAL_W","computeCircleLayout","viewport","sectorIds","extras","pad","maxRVertical","sol","bands","opt","sweepStart","sweepEnd","mid","wedgePath","largeArc","x1","y1","x2","y2","x3","y3","sectorAtPoint","rectForBand","rMid","w","h","generateEdgeStrokePaths","strokePaths","edgeToUnitSegments","gridSize","segments","startGrid","endGrid","steps","stepX","stepY","aX","aY","bX","bY","getHiddenEdgesForPolygon","polyIndex","allPiecesInSector","getBlueprint","getPrimitive","blueprint","translatedPoly","vertex","hiddenEdges","edgeSegments","isTouching","otherPolyIndex","otherPoly","otherTranslatedPoly","otherCurrent","otherNext","otherEdgeSegments","edgeSeg","otherSeg","otherPiece","otherBlueprint","otherBb","otherOx","otherOy","shouldUseSelectiveBorders","blueprintId","Se","Be","Ee","U","De","Me","q","pathD","BoardView","controller","viewBox","badgeR","badgeCenter","placedSilBySector","anchorDots","pieces","clickMode","draggingId","selectedPieceId","dragInvalid","lockedPieceId","svgRef","setPieceRef","onPiecePointerDown","onBlueprintPointerDown","onRootPointerDown","onPointerMove","onPointerUp","onCenterBadgePointerDown","VW","VH","centerView","QS_SLOTS","PRIM_SLOTS","slotsForView","delta","blueprintTheta","reqAnchors","D_slot","R_needed","R_min","ringMax","blueprintRingR","renderBlueprintGlyph","bx","by","k","done","baseSil","baseWork","sil","work","isDragging","locked","isConnectivityLocked","isSelected","isCarriedInvalid","translateX","translateY","pieceAsPiece","allPiecesAsPieces","draggedPiece","wasTouchingDraggedPiece","internalHiddenEdges","external","strokePath","strokeIdx","wasHiddenDueToDraggedPiece","placedPolys","valid","invalid","isInnerRing","isPrep","isSubmitEnabled","isClickable","aabb","cellCentersInAABB","cellSetForPolys","centers","center","anchorsSilhouetteComplete","silPolys","piecePolys","P","stringSetToVecs","xs","ys","normalizeCells","pts","N","setsEqual","anchorsWorkspaceComplete","Sraw","Praw","blueprintLocalFromWorld","px","py","bpGeom","scalePolys","usePieceState","floating","pieceById","sectorPiecePolysLive","polyCacheRef","sectorSignature","getSectorPiecePolysCached","sig","hit","GridSnapper","v0","v0World","best","bestD2","d2","distance","accepted","snapped","fittedMask","banded","sp","silhouettePolys","customStep","len","t","createDefaultGridSnapper","defaultGridSnapper","nearestNodeSnap","polyFullyInside","workspaceNodes","silhouetteNodes","silhouetteBandNodes","useAnchorGrid","scaleS","cfg","mask","rect","bandAll","validSet","getPieceUnitSegments","allSegments","checkFaceToFaceAttachment","existingPieces","newPieceSegments","totalSharedLength","attachedPieceIds","existingPiece","existingSegments","sharedSegments","newSeg","existingSeg","wouldRemovalDisconnectSector","pieceToRemove","remainingPieces","adjacencyMap","piece1","piece2","visited","startPiece","dfs","pieceId","neighbors","neighborId","Ue","ze","We","Ge","Je","Ke","_e","useDragController","isSectorLocked","maybeCompleteSector","force","clickController","dragRef","setDraggingId","elMap","setLockedPieceId","el","m","svgPoint","clientX","clientY","svg","ctm","scheduleFrame","sectorIdAt","GRID_STEP","anchorIdFromNode","ax","ay","anchorNodeFromPoint","point","updatePointerAnchor","anchorNode","anchorId","updateSnapAnchor","dist","emitClickEvent","location","clickType","metadata","getPieceVertices","ring","support","pointerAnchorNode","pointerSector","blueprintType","_d","_f","_g","_h","pointerR","pointerSectorId","centerX","centerY","inInnerRing","secId","snapNode","snapDist","snapSectorId","overlapsDetected","maxExceededDetected","innerEntry","snap","isCompletedSector","entry","allNodes","radius","carried","overlapsOk","bpCar","bbCar","carriedPolys","sameSector","other","bpO","bbO","otherPolys","otherPiecesInSector","isFirstPiece","storedPiece","currentSectorId","enforceMaxPieces","effectiveCount","wouldExceedMax","pieceAtDragPosition","attachmentResult","nodeOk","insideOk","_i","_j","_k","_l","attemptedSector","invalidReason","removedFromSector","commitTL","justCompleted","wasValid","tl0","allowInside","clamped","finalTl","snapInfo","snappingSecId","useClickController","isInsideBadge","getCurrentAnchorInfo","pendingBpId","setPendingBpId","setSelectedPieceId","centerX2","centerY2","anchorInfo","secId2","byteToHex","unsafeStringify","arr","getRandomValues","rnds8","rng","native","v4","buf","rnds","T","InteractionTracker","trialId","gameId","uuidv4","position","vertices","anchorPosition","anchorVertices","outcome","wasOverlapping","completedSector","interactionType","placedownTimestamp","holdDuration","postSnapshot","anchorLocation","anchorX","anchorY","phase","anchorCoordX","anchorCoordY","lastTracking","macro","endReason","trialEndTime","totalDuration","finalSnapshot","finalBlueprintState","quickstashMacros","finalMacros","snapshot","sec","shapeOriginPositions","actualPiece","shapeOriginPixels","shapeOriginAnchor","sumX","sumY","item","centroidX","centroidY","parts","shape","justCompletedSectorId","snapshotId","timestamp","completedSectorIds","completed","sectorTangramMap","blueprintOrder","asNumbers","counts","primitive","composite","we","Ce","J","xe","ve","K","GameBoard","timeLimitMs","maxQuickstashSlots","maxCompositeSize","_width","_height","onSectorComplete","onPiecePlace","onPieceRemove","onInteraction","onTrialEnd","onControllerReady","gameConfig","nSectors","masksPerSector","logicalBox","gameCompleted","setGameCompleted","handleSectorComplete","eventCallbacks","getGameboardStyle","baseStyle","maxWidth","maxHeight","svgDimensions","timeoutId","allMasks","u","placed","raw","scaledSil","dragController","from","DIAGONAL","HALFDIAGONAL","rotLeft","nextPoint","interiorDeg","constructFromSpec","sideLens","angles","firstEdgeUnits","firstSideLen","sidesRot","angRot","curr","sLen","aDeg","FIRST_EDGES_UNITS","PRIMITIVE_BLUEPRINTS","color","firstEdge","verts","convertAnchorCompositeToPixels","anchorComposite","primsByKind","gridStepPx","label","pixelParts","pixelOffset","startPrepTrial","display_element","jsPsych","numQuickstashSlots","maxPiecesPerMacro","minPiecesPerMacro","inputMode","requireAllSlots","prepSectors","_","createRoot","handleControllerReady","macroIndex","compositeBlueprint","sectorGeom","sectorRect","primitiveBlueprint","pieceMinX","pieceMinY","pieceMaxX","pieceMaxY","compositeCenterX","compositeCenterY","compositeBBoxMinX","compositeBBoxMinY","worldPosX","worldPosY","gridStep","alignedX","alignedY","ParameterType","TangramPrepPlugin","trial","wrappedOnTrialEnd","reactContext"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,27,28,29,30]}