{"ast":null,"code":"var _jsxFileName = \"/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/Wave/Wave.jsx\",\n  _s = $RefreshSig$();\nimport { useState, useEffect } from \"react\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useFreq } from \"../FreqContext\";\nimport waveDrawLoop from './lib/waveDrawLoop.js';\nimport WaveCanvas from './WaveCanvas.jsx';\nimport RefTable from '../table/RefTable';\nimport CaliTable from '../table/CaliTable';\nimport './Wave.css';\nimport { Slider, Button, Col, Row, Flex, Dropdown, Space, Modal, Collapse, message, Tooltip, Tag } from \"antd\";\nimport { QuestionCircleOutlined } from '@ant-design/icons';\nimport 'antd/dist/reset.css';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst items = [{\n  key: '0',\n  label: 'Baseline'\n}, {\n  key: '1',\n  label: 'Moderately Darker (Baseline * 0.92)'\n}, {\n  key: '2',\n  label: 'Slightly Darker (Baseline * 0.98)'\n}, {\n  key: '3',\n  label: 'Slightly Brighter (Baseline * 1.02)'\n}, {\n  key: '4',\n  label: 'Moderately Brighter (Baseline * 1.08)'\n}];\nconst tooltiptext = /*#__PURE__*/_jsxDEV(\"span\", {\n  children: \"Adjust the slider to the desired value and click 'Save as custom value' to set a custom value for the current vowel. Once saved, the custom value will be used as the default target value.\"\n}, void 0, false, {\n  fileName: _jsxFileName,\n  lineNumber: 38,\n  columnNumber: 19\n}, this);\nconst Wave = ({\n  currentVowelIdx,\n  refFreqArray\n}) => {\n  _s();\n  var _refFreqArray$current, _refFreqArray$current2, _freqData$customFrequ, _freqData$caliBaselin;\n  const {\n    freqData,\n    updateFreqData\n  } = useFreq();\n  const navigate = useNavigate();\n  const currentVowel = (refFreqArray === null || refFreqArray === void 0 ? void 0 : (_refFreqArray$current = refFreqArray[currentVowelIdx]) === null || _refFreqArray$current === void 0 ? void 0 : _refFreqArray$current.vowel) || '';\n  const refFreq = (refFreqArray === null || refFreqArray === void 0 ? void 0 : (_refFreqArray$current2 = refFreqArray[currentVowelIdx]) === null || _refFreqArray$current2 === void 0 ? void 0 : _refFreqArray$current2.freq) || 0;\n  const defaultFreq = (freqData === null || freqData === void 0 ? void 0 : (_freqData$customFrequ = freqData.customFrequencies) === null || _freqData$customFrequ === void 0 ? void 0 : _freqData$customFrequ[currentVowel]) || (freqData === null || freqData === void 0 ? void 0 : (_freqData$caliBaselin = freqData.caliBaseline) === null || _freqData$caliBaselin === void 0 ? void 0 : _freqData$caliBaselin[currentVowel]) || refFreq || 1500;\n  const [waveIsPaused, setWaveIsPaused] = useState(false);\n  const [pos, setPos] = useState(defaultFreq);\n  const [messageApi, contextHolder] = message.useMessage();\n\n  // For Modals\n  const [refOpen, setRefOpen] = useState(false);\n  const [caliOpen, setCaliOpen] = useState(false);\n  useEffect(() => {\n    if (!refFreqArray || refFreqArray.length === 0 || currentVowelIdx >= refFreqArray.length) {\n      // message.error('No vowel data provided. Please select vowels first. Redirecting to home page...');\n      setTimeout(() => {\n        navigate('/resonance/selection');\n      }, 2000);\n    }\n  }, [refFreqArray, currentVowelIdx, navigate]);\n  const text = /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [\"We provide 3 types of values: Referenced, Calibrated, and Customized. You can jump to any of these target by clicking the buttons below. If the button is disabled, it means you haven't set the corresponding value yet. To set a customized target, you can drag the slider below the waveform to the desired position, and click the button \\\"Set Current Value as Customized Target\\\". To set a calibrated target, please start from the \", /*#__PURE__*/_jsxDEV(Link, {\n      to: \"/resonance/calibrate\",\n      children: \"calibration routine\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 69,\n      columnNumber: 63\n    }, this), \". Just record your voice and follow the instructions, then the calibrated values will be automatically calculated. You can also batch set calibrated and customized values manually \", /*#__PURE__*/_jsxDEV(\"a\", {\n      onClick: () => setCaliOpen(true),\n      children: \"here\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 70,\n      columnNumber: 78\n    }, this), \".\"]\n  }, void 0, true);\n  useEffect(() => {\n    if (defaultFreq) {\n      setPos(defaultFreq);\n      console.log(`Default Frequency is set to ${defaultFreq} Hz. currentVowel is ${currentVowel}.`);\n    }\n  }, [defaultFreq, currentVowel]);\n  useEffect(() => {\n    if (freqData.customFrequencies[currentVowel]) {\n      setPos(freqData.customFrequencies[currentVowel]);\n    }\n  }, [freqData.customFrequencies, currentVowel]);\n  const handlePauseWave = e => setWaveIsPaused(!waveIsPaused);\n  const handleJumpToRef = () => setPos(refFreq || 1500);\n  const handleJumpToCustom = () => {\n    setPos(freqData.customFrequencies[currentVowel]);\n  };\n  const handleSetCurrentAsCustom = () => {\n    const updates = {\n      customFrequencies: {\n        [currentVowel]: pos\n      }\n    };\n    updateFreqData(updates);\n    console.log(`Freq Data: ${freqData.customFrequencies[currentVowel]}`);\n    success(pos);\n  };\n  const handleOnChangeSlider = value => {\n    setPos(value);\n  };\n  const success = pos => {\n    messageApi.open({\n      type: 'success',\n      content: 'Successfully set the customized target frequency to ' + pos + ' Hz.'\n    });\n  };\n  const handleJumpToCalibratedTarget = e => {\n    const caliBaseline = freqData.caliBaseline[currentVowel];\n    if (caliBaseline !== undefined && caliBaseline !== '') {\n      switch (e.key) {\n        case '0':\n          setPos(caliBaseline);\n          break;\n        case '1':\n          setPos(Math.round(caliBaseline * 0.92));\n          break;\n        case '2':\n          setPos(Math.round(caliBaseline * 0.98));\n          break;\n        case '3':\n          setPos(Math.round(caliBaseline * 1.02));\n          break;\n        case '4':\n          setPos(Math.round(caliBaseline * 1.08));\n          break;\n        default:\n          setPos(Math.round(caliBaseline));\n      }\n    }\n    console.log('Current Vowel:', currentVowel);\n    console.log('Custom Frequencies:', freqData.customFrequencies);\n    console.log('Calibrated Baseline:', freqData.caliBaseline);\n  };\n  return /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [contextHolder, /*#__PURE__*/_jsxDEV(Flex, {\n      gap: \"small\",\n      style: {\n        margin: '10px'\n      },\n      children: [/*#__PURE__*/_jsxDEV(Button, {\n        onClick: handleJumpToRef,\n        children: [\"Jump to Reference Value (\", freqData.customFrequencies[currentVowel], \") Hz\"]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 152,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Button, {\n        onClick: handleJumpToCustom,\n        disabled: freqData.customFrequencies[currentVowel] === '' || freqData.customFrequencies[currentVowel] === undefined,\n        children: [\"Jump to Custom Value \", freqData.customFrequencies[currentVowel] ? `(${freqData.customFrequencies[currentVowel]} Hz)` : '']\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 174,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Row, {\n        children: /*#__PURE__*/_jsxDEV(Col, {\n          span: 24,\n          children: [/*#__PURE__*/_jsxDEV(Tag, {\n            color: \"purple\",\n            children: [\"Current: \", pos, \" Hz\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 186,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n            placement: \"right\",\n            title: tooltiptext,\n            children: /*#__PURE__*/_jsxDEV(Button, {\n              type: \"primary\",\n              onClick: handleSetCurrentAsCustom,\n              style: {\n                marginLeft: '10px'\n              },\n              children: \"Save as custom value\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 188,\n              columnNumber: 27\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 187,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 185,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 184,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 151,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"wlMainParent\",\n      children: [/*#__PURE__*/_jsxDEV(Row, {\n        children: /*#__PURE__*/_jsxDEV(Col, {\n          span: 24,\n          children: [/*#__PURE__*/_jsxDEV(\"div\", {\n            className: \"canvasandslider\",\n            children: [/*#__PURE__*/_jsxDEV(WaveCanvas, {\n              className: \"waveCanvas\",\n              draw: waveDrawLoop,\n              isPaused: waveIsPaused,\n              strokeStyle: \"#C8A1E0\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 203,\n              columnNumber: 29\n            }, this), /*#__PURE__*/_jsxDEV(Slider, {\n              className: \"triangle-slider\",\n              min: 0,\n              max: 4096,\n              value: pos,\n              onChange: handleOnChangeSlider,\n              defaultValue: 1500,\n              style: {\n                margin: 0\n              },\n              tooltip: {\n                open: false\n              }\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 209,\n              columnNumber: 29\n            }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'flex',\n                justifyContent: 'space-between',\n                marginTop: '10px'\n              },\n              children: [/*#__PURE__*/_jsxDEV(\"span\", {\n                children: \"Darker\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 220,\n                columnNumber: 31\n              }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n                children: \"Brighter\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 221,\n                columnNumber: 31\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 219,\n              columnNumber: 29\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 202,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n            style: {\n              textAlign: 'center',\n              marginTop: '20px'\n            },\n            children: /*#__PURE__*/_jsxDEV(\"svg\", {\n              width: \"750\",\n              height: \"20\",\n              xmlns: \"http://www.w3.org/2000/svg\",\n              children: [/*#__PURE__*/_jsxDEV(\"defs\", {\n                children: /*#__PURE__*/_jsxDEV(\"linearGradient\", {\n                  id: \"grad1\",\n                  x1: \"0%\",\n                  y1: \"0%\",\n                  x2: \"100%\",\n                  y2: \"0%\",\n                  gradientUnits: \"userSpaceOnUse\",\n                  children: [/*#__PURE__*/_jsxDEV(\"stop\", {\n                    offset: \"0%\",\n                    style: {\n                      stopColor: '#2D0054'\n                    }\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 228,\n                    columnNumber: 37\n                  }, this), /*#__PURE__*/_jsxDEV(\"stop\", {\n                    offset: \"100%\",\n                    style: {\n                      stopColor: '#9501F6'\n                    }\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 229,\n                    columnNumber: 37\n                  }, this)]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 227,\n                  columnNumber: 35\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 226,\n                columnNumber: 33\n              }, this), /*#__PURE__*/_jsxDEV(\"line\", {\n                x1: \"10\",\n                y1: \"10\",\n                x2: \"740\",\n                y2: \"10\",\n                stroke: \"url(#grad1)\",\n                strokeWidth: \"5\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 232,\n                columnNumber: 33\n              }, this), /*#__PURE__*/_jsxDEV(\"polygon\", {\n                points: \"10,5 0,10 10,15\",\n                fill: \"2D0054\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 233,\n                columnNumber: 33\n              }, this), /*#__PURE__*/_jsxDEV(\"polygon\", {\n                points: \"740,5 750,10 740,15\",\n                fill: \"#9501F6\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 234,\n                columnNumber: 33\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 225,\n              columnNumber: 31\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 224,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 201,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 200,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Row, {\n        children: /*#__PURE__*/_jsxDEV(Col, {\n          span: 24,\n          children: [/*#__PURE__*/_jsxDEV(\"span\", {\n            className: \"label\",\n            children: \"Waveform Play Control: \"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 241,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(Button, {\n            onClick: handlePauseWave,\n            style: {\n              marginTop: '10px',\n              marginLeft: '10px'\n            },\n            type: \"primary\",\n            children: waveIsPaused ? \"Play\" : \"Pause\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 242,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 240,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 239,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 199,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"Reference Frequency Values\",\n      centered: true,\n      open: refOpen,\n      onOk: () => setRefOpen(false),\n      onCancel: () => setRefOpen(false),\n      width: 1000,\n      footer: [/*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        onClick: () => setRefOpen(false),\n        children: \"OK\"\n      }, \"submit\", false, {\n        fileName: _jsxFileName,\n        lineNumber: 260,\n        columnNumber: 17\n      }, this)],\n      children: /*#__PURE__*/_jsxDEV(RefTable, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 265,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 252,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"Calibrated Frequency Values\",\n      centered: true,\n      open: caliOpen,\n      onOk: () => setCaliOpen(false),\n      onCancel: () => setCaliOpen(false),\n      width: 1000,\n      footer: [/*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        onClick: () => setCaliOpen(false),\n        children: \"OK\"\n      }, \"submit\", false, {\n        fileName: _jsxFileName,\n        lineNumber: 275,\n        columnNumber: 17\n      }, this)],\n      children: /*#__PURE__*/_jsxDEV(CaliTable, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 280,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 267,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true);\n};\n_s(Wave, \"mzrjC5YSFOiWdE9qYINpseX+EFg=\", false, function () {\n  return [useFreq, useNavigate, message.useMessage];\n});\n_c = Wave;\nexport default Wave;\nvar _c;\n$RefreshReg$(_c, \"Wave\");","map":{"version":3,"names":["useState","useEffect","Link","useNavigate","useFreq","waveDrawLoop","WaveCanvas","RefTable","CaliTable","Slider","Button","Col","Row","Flex","Dropdown","Space","Modal","Collapse","message","Tooltip","Tag","QuestionCircleOutlined","jsxDEV","_jsxDEV","Fragment","_Fragment","items","key","label","tooltiptext","children","fileName","_jsxFileName","lineNumber","columnNumber","Wave","currentVowelIdx","refFreqArray","_s","_refFreqArray$current","_refFreqArray$current2","_freqData$customFrequ","_freqData$caliBaselin","freqData","updateFreqData","navigate","currentVowel","vowel","refFreq","freq","defaultFreq","customFrequencies","caliBaseline","waveIsPaused","setWaveIsPaused","pos","setPos","messageApi","contextHolder","useMessage","refOpen","setRefOpen","caliOpen","setCaliOpen","length","setTimeout","text","to","onClick","console","log","handlePauseWave","e","handleJumpToRef","handleJumpToCustom","handleSetCurrentAsCustom","updates","success","handleOnChangeSlider","value","open","type","content","handleJumpToCalibratedTarget","undefined","Math","round","gap","style","margin","disabled","span","color","placement","title","marginLeft","className","draw","isPaused","strokeStyle","min","max","onChange","defaultValue","tooltip","display","justifyContent","marginTop","textAlign","width","height","xmlns","id","x1","y1","x2","y2","gradientUnits","offset","stopColor","stroke","strokeWidth","points","fill","centered","onOk","onCancel","footer","_c","$RefreshReg$"],"sources":["/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/Wave/Wave.jsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useFreq } from \"../FreqContext\";\n\nimport waveDrawLoop from './lib/waveDrawLoop.js';\nimport WaveCanvas from './WaveCanvas.jsx';\nimport RefTable from '../table/RefTable';\nimport CaliTable from '../table/CaliTable';\nimport './Wave.css';\n\nimport { Slider, Button, Col, Row, Flex, Dropdown, Space, Modal, Collapse, message, Tooltip, Tag } from \"antd\";\nimport { QuestionCircleOutlined } from '@ant-design/icons';\nimport 'antd/dist/reset.css'; \n\nconst items = [\n    {\n        key: '0',\n        label: 'Baseline',\n    },\n    {\n      key: '1',\n      label: 'Moderately Darker (Baseline * 0.92)',\n    },\n    {\n      key: '2',\n      label: 'Slightly Darker (Baseline * 0.98)',\n    },\n    {\n      key: '3',\n      label: 'Slightly Brighter (Baseline * 1.02)',\n    },\n    {\n        key: '4',\n        label: 'Moderately Brighter (Baseline * 1.08)',\n      },\n];\n\nconst tooltiptext=<span>Adjust the slider to the desired value and click 'Save as custom value' to set a custom value for the current vowel. Once saved, the custom value will be used as the default target value.</span>\n\nconst Wave = ({currentVowelIdx, refFreqArray}) => {\n    const { freqData, updateFreqData } = useFreq();\n    const navigate = useNavigate();\n    \n    const currentVowel = refFreqArray?.[currentVowelIdx]?.vowel || '';\n    const refFreq = refFreqArray?.[currentVowelIdx]?.freq || 0;\n    const defaultFreq = freqData?.customFrequencies?.[currentVowel] || freqData?.caliBaseline?.[currentVowel] || refFreq || 1500;\n\n    const [waveIsPaused, setWaveIsPaused] = useState(false);\n    const [pos, setPos] = useState( defaultFreq );\n    const [messageApi, contextHolder] = message.useMessage();\n\n    // For Modals\n    const [refOpen, setRefOpen] = useState(false);\n    const [caliOpen, setCaliOpen] = useState(false);\n\n    useEffect(() => {\n        if (!refFreqArray || refFreqArray.length === 0 || currentVowelIdx >= refFreqArray.length) {\n          // message.error('No vowel data provided. Please select vowels first. Redirecting to home page...');\n          setTimeout(() => {\n            navigate('/resonance/selection');\n          }, 2000);\n        }\n      }, [refFreqArray, currentVowelIdx, navigate]);\n\n    const text =\n        <>\n            We provide 3 types of values: Referenced, Calibrated, and Customized. You can jump to any of these target by clicking the buttons below. If the button is disabled,\n            it means you haven't set the corresponding value yet. To set a customized target, you can drag the slider below the waveform to the desired position, and click the button \"Set Current Value as Customized Target\".\n            To set a calibrated target, please start from the <Link to=\"/resonance/calibrate\">calibration routine</Link>. Just record your voice and follow the instructions, then the calibrated values will be automatically calculated.\n            You can also batch set calibrated and customized values manually <a onClick={()=>setCaliOpen(true)}>here</a>.\n        </>\n\n    useEffect(() => {\n        if (defaultFreq) {\n            setPos(defaultFreq);\n            console.log(`Default Frequency is set to ${defaultFreq} Hz. currentVowel is ${currentVowel}.`)\n        }\n    }, [defaultFreq, currentVowel]);\n\n    useEffect(() => {\n        if (freqData.customFrequencies[currentVowel]) {\n            setPos(freqData.customFrequencies[currentVowel]);\n        }\n    }, [freqData.customFrequencies, currentVowel]);\n\n    const handlePauseWave = (e) => setWaveIsPaused(!waveIsPaused)\n\n    const handleJumpToRef = () => setPos(refFreq || 1500);\n\n    const handleJumpToCustom = () => {\n        setPos(freqData.customFrequencies[currentVowel]);\n    };\n\n    const handleSetCurrentAsCustom = () => {\n        const updates = {\n            customFrequencies: { [currentVowel]: pos }\n        };\n        updateFreqData(updates);\n        console.log(`Freq Data: ${freqData.customFrequencies[currentVowel]}`)\n        success(pos);\n    };\n    \n    const handleOnChangeSlider = (value) => {\n        setPos(value)\n    };\n\n    const success = (pos) => {\n        messageApi.open({\n          type: 'success',\n          content: 'Successfully set the customized target frequency to ' + pos + ' Hz.',\n        });\n    };\n\n    const handleJumpToCalibratedTarget = (e) => {\n        const caliBaseline = freqData.caliBaseline[currentVowel];\n        if (caliBaseline !== undefined && caliBaseline !== '') {\n            switch (e.key) {\n                case '0':\n                    setPos(caliBaseline);\n                    break;\n                case '1':\n                    setPos(Math.round(caliBaseline * 0.92));\n                    break;\n                case '2':\n                    setPos(Math.round(caliBaseline * 0.98));\n                    break;\n                case '3':\n                    setPos(Math.round(caliBaseline * 1.02));\n                    break;\n                case '4':\n                    setPos(Math.round(caliBaseline * 1.08));\n                    break;\n                default:\n                    setPos(Math.round(caliBaseline));\n            }\n        }\n        console.log('Current Vowel:', currentVowel);\n        console.log('Custom Frequencies:', freqData.customFrequencies);\n        console.log('Calibrated Baseline:', freqData.caliBaseline);\n    }\n\n    return (\n        <>\n            {contextHolder}\n            {/* <div style={{ width: '70%' }}>\n                <Collapse\n                    items={[{ key: '1', label: 'Instructions', children: <div>{text}</div> }]}\n                />\n            </div> */}\n\n            <Flex gap=\"small\" style={{margin:'10px'}}>\n                <Button \n                    onClick={handleJumpToRef}\n                >\n                    Jump to Reference Value ({freqData.customFrequencies[currentVowel]}) Hz\n                </Button>\n\n                {/* <Dropdown\n                    menu={{\n                        items,\n                        onClick: handleJumpToCalibratedTarget\n                    }}\n                    disabled={freqData.caliBaseline[currentVowel] === undefined || freqData.caliBaseline[currentVowel] === ''}\n                >\n                    <Button>\n                        <Space>\n                            Jump to Calibrated Value\n                            <DownOutlined />\n                        </Space>\n                    </Button>\n                    \n                </Dropdown> */}\n\n                <Button \n                    onClick={handleJumpToCustom}\n                    disabled={freqData.customFrequencies[currentVowel] === '' || freqData.customFrequencies[currentVowel] === undefined}\n                >\n                    Jump to Custom Value {freqData.customFrequencies[currentVowel] ? `(${freqData.customFrequencies[currentVowel]} Hz)` : ''}\n                </Button>\n                {/* <Tooltip title={tooltiptext}\n                >\n                  <QuestionCircleOutlined style={{ marginLeft: 1}} />\n                </Tooltip> */}\n                <Row>\n                    <Col span={24}> \n                        <Tag color='purple'>Current: {pos} Hz</Tag>\n                        <Tooltip placement=\"right\" title={tooltiptext}>\n                          <Button\n                              type=\"primary\"\n                              onClick={ handleSetCurrentAsCustom }\n                              style = {{ marginLeft: '10px' }}\n                          >\n                              Save as custom value\n                          </Button>\n                        </Tooltip>\n                    </Col>\n                </Row>\n            </Flex>\n            <div className=\"wlMainParent\">\n                <Row>\n                    <Col span={24}>\n                        <div className=\"canvasandslider\">\n                            <WaveCanvas\n                                className=\"waveCanvas\"\n                                draw={waveDrawLoop}\n                                isPaused={waveIsPaused}\n                                strokeStyle=\"#C8A1E0\"\n                            />\n                            <Slider\n                                className=\"triangle-slider\"\n                                min={0}\n                                max={4096}\n                                value={pos}\n                                onChange={handleOnChangeSlider}\n                                defaultValue={1500}\n                                style={{ margin: 0}}\n                                tooltip={{open: false}}\n                            />\n                            <div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '10px' }}>\n                              <span>Darker</span>\n                              <span>Brighter</span>\n                            </div>\n                        </div>\n                        <div style={{ textAlign: 'center', marginTop: '20px' }}>\n                              <svg width=\"750\" height=\"20\" xmlns=\"http://www.w3.org/2000/svg\">\n                                <defs>\n                                  <linearGradient id=\"grad1\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\" gradientUnits=\"userSpaceOnUse\">\n                                    <stop offset=\"0%\" style={{ stopColor: '#2D0054'}} />\n                                    <stop offset=\"100%\" style={{ stopColor: '#9501F6'}} />\n                                  </linearGradient>\n                                </defs>\n                                <line x1=\"10\" y1=\"10\" x2=\"740\" y2=\"10\" stroke=\"url(#grad1)\" strokeWidth=\"5\" />\n                                <polygon points=\"10,5 0,10 10,15\" fill=\"2D0054\" />\n                                <polygon points=\"740,5 750,10 740,15\" fill=\"#9501F6\" />\n                              </svg>\n                        </div>\n                    </Col>\n                </Row>\n                <Row>\n                    <Col span={24}>\n                        <span className=\"label\">Waveform Play Control: </span>\n                        <Button\n                            onClick={ handlePauseWave }\n                            style={{ marginTop: '10px', marginLeft: '10px'}}\n                            type=\"primary\"\n                        >\n                            {(waveIsPaused) ? \"Play\" : \"Pause\"}\n                        </Button>\n                    </Col>\n                </Row>\n            </div>\n            <Modal\n                title=\"Reference Frequency Values\"\n                centered\n                open={refOpen}\n                onOk={() => setRefOpen(false)}\n                onCancel={() => setRefOpen(false)}\n                width={1000}\n                footer={[\n                <Button key=\"submit\" type=\"primary\" onClick={() => setRefOpen(false)}>\n                    OK\n                </Button>\n                ]}\n            >\n                <RefTable />\n            </Modal>\n            <Modal\n                title=\"Calibrated Frequency Values\"\n                centered\n                open={caliOpen}\n                onOk={() => setCaliOpen(false)}\n                onCancel={() => setCaliOpen(false)}\n                width={1000}\n                footer={[\n                <Button key=\"submit\" type=\"primary\" onClick={() => setCaliOpen(false)}>\n                    OK\n                </Button>\n                ]}\n            >\n                <CaliTable />\n            </Modal>\n        </>\n    )\n}\n\nexport default Wave;"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAC3C,SAASC,IAAI,EAAEC,WAAW,QAAQ,kBAAkB;AACpD,SAASC,OAAO,QAAQ,gBAAgB;AAExC,OAAOC,YAAY,MAAM,uBAAuB;AAChD,OAAOC,UAAU,MAAM,kBAAkB;AACzC,OAAOC,QAAQ,MAAM,mBAAmB;AACxC,OAAOC,SAAS,MAAM,oBAAoB;AAC1C,OAAO,YAAY;AAEnB,SAASC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAEC,GAAG,QAAQ,MAAM;AAC9G,SAASC,sBAAsB,QAAQ,mBAAmB;AAC1D,OAAO,qBAAqB;AAAC,SAAAC,MAAA,IAAAC,OAAA,EAAAC,QAAA,IAAAC,SAAA;AAE7B,MAAMC,KAAK,GAAG,CACV;EACIC,GAAG,EAAE,GAAG;EACRC,KAAK,EAAE;AACX,CAAC,EACD;EACED,GAAG,EAAE,GAAG;EACRC,KAAK,EAAE;AACT,CAAC,EACD;EACED,GAAG,EAAE,GAAG;EACRC,KAAK,EAAE;AACT,CAAC,EACD;EACED,GAAG,EAAE,GAAG;EACRC,KAAK,EAAE;AACT,CAAC,EACD;EACID,GAAG,EAAE,GAAG;EACRC,KAAK,EAAE;AACT,CAAC,CACN;AAED,MAAMC,WAAW,gBAACN,OAAA;EAAAO,QAAA,EAAM;AAA2L;EAAAC,QAAA,EAAAC,YAAA;EAAAC,UAAA;EAAAC,YAAA;AAAA,OAAM,CAAC;AAE1N,MAAMC,IAAI,GAAGA,CAAC;EAACC,eAAe;EAAEC;AAAY,CAAC,KAAK;EAAAC,EAAA;EAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,qBAAA;EAC9C,MAAM;IAAEC,QAAQ;IAAEC;EAAe,CAAC,GAAGxC,OAAO,CAAC,CAAC;EAC9C,MAAMyC,QAAQ,GAAG1C,WAAW,CAAC,CAAC;EAE9B,MAAM2C,YAAY,GAAG,CAAAT,YAAY,aAAZA,YAAY,wBAAAE,qBAAA,GAAZF,YAAY,CAAGD,eAAe,CAAC,cAAAG,qBAAA,uBAA/BA,qBAAA,CAAiCQ,KAAK,KAAI,EAAE;EACjE,MAAMC,OAAO,GAAG,CAAAX,YAAY,aAAZA,YAAY,wBAAAG,sBAAA,GAAZH,YAAY,CAAGD,eAAe,CAAC,cAAAI,sBAAA,uBAA/BA,sBAAA,CAAiCS,IAAI,KAAI,CAAC;EAC1D,MAAMC,WAAW,GAAG,CAAAP,QAAQ,aAARA,QAAQ,wBAAAF,qBAAA,GAARE,QAAQ,CAAEQ,iBAAiB,cAAAV,qBAAA,uBAA3BA,qBAAA,CAA8BK,YAAY,CAAC,MAAIH,QAAQ,aAARA,QAAQ,wBAAAD,qBAAA,GAARC,QAAQ,CAAES,YAAY,cAAAV,qBAAA,uBAAtBA,qBAAA,CAAyBI,YAAY,CAAC,KAAIE,OAAO,IAAI,IAAI;EAE5H,MAAM,CAACK,YAAY,EAAEC,eAAe,CAAC,GAAGtD,QAAQ,CAAC,KAAK,CAAC;EACvD,MAAM,CAACuD,GAAG,EAAEC,MAAM,CAAC,GAAGxD,QAAQ,CAAEkD,WAAY,CAAC;EAC7C,MAAM,CAACO,UAAU,EAAEC,aAAa,CAAC,GAAGxC,OAAO,CAACyC,UAAU,CAAC,CAAC;;EAExD;EACA,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG7D,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC8D,QAAQ,EAAEC,WAAW,CAAC,GAAG/D,QAAQ,CAAC,KAAK,CAAC;EAE/CC,SAAS,CAAC,MAAM;IACZ,IAAI,CAACoC,YAAY,IAAIA,YAAY,CAAC2B,MAAM,KAAK,CAAC,IAAI5B,eAAe,IAAIC,YAAY,CAAC2B,MAAM,EAAE;MACxF;MACAC,UAAU,CAAC,MAAM;QACfpB,QAAQ,CAAC,sBAAsB,CAAC;MAClC,CAAC,EAAE,IAAI,CAAC;IACV;EACF,CAAC,EAAE,CAACR,YAAY,EAAED,eAAe,EAAES,QAAQ,CAAC,CAAC;EAE/C,MAAMqB,IAAI,gBACN3C,OAAA,CAAAE,SAAA;IAAAK,QAAA,GAAE,+aAGoD,eAAAP,OAAA,CAACrB,IAAI;MAACiE,EAAE,EAAC,sBAAsB;MAAArC,QAAA,EAAC;IAAmB;MAAAC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAM,CAAC,wLAC3C,eAAAX,OAAA;MAAG6C,OAAO,EAAEA,CAAA,KAAIL,WAAW,CAAC,IAAI,CAAE;MAAAjC,QAAA,EAAC;IAAI;MAAAC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAG,CAAC,KAChH;EAAA,eAAE,CAAC;EAEPjC,SAAS,CAAC,MAAM;IACZ,IAAIiD,WAAW,EAAE;MACbM,MAAM,CAACN,WAAW,CAAC;MACnBmB,OAAO,CAACC,GAAG,CAAE,+BAA8BpB,WAAY,wBAAuBJ,YAAa,GAAE,CAAC;IAClG;EACJ,CAAC,EAAE,CAACI,WAAW,EAAEJ,YAAY,CAAC,CAAC;EAE/B7C,SAAS,CAAC,MAAM;IACZ,IAAI0C,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,EAAE;MAC1CU,MAAM,CAACb,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,CAAC;IACpD;EACJ,CAAC,EAAE,CAACH,QAAQ,CAACQ,iBAAiB,EAAEL,YAAY,CAAC,CAAC;EAE9C,MAAMyB,eAAe,GAAIC,CAAC,IAAKlB,eAAe,CAAC,CAACD,YAAY,CAAC;EAE7D,MAAMoB,eAAe,GAAGA,CAAA,KAAMjB,MAAM,CAACR,OAAO,IAAI,IAAI,CAAC;EAErD,MAAM0B,kBAAkB,GAAGA,CAAA,KAAM;IAC7BlB,MAAM,CAACb,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,CAAC;EACpD,CAAC;EAED,MAAM6B,wBAAwB,GAAGA,CAAA,KAAM;IACnC,MAAMC,OAAO,GAAG;MACZzB,iBAAiB,EAAE;QAAE,CAACL,YAAY,GAAGS;MAAI;IAC7C,CAAC;IACDX,cAAc,CAACgC,OAAO,CAAC;IACvBP,OAAO,CAACC,GAAG,CAAE,cAAa3B,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAE,EAAC,CAAC;IACrE+B,OAAO,CAACtB,GAAG,CAAC;EAChB,CAAC;EAED,MAAMuB,oBAAoB,GAAIC,KAAK,IAAK;IACpCvB,MAAM,CAACuB,KAAK,CAAC;EACjB,CAAC;EAED,MAAMF,OAAO,GAAItB,GAAG,IAAK;IACrBE,UAAU,CAACuB,IAAI,CAAC;MACdC,IAAI,EAAE,SAAS;MACfC,OAAO,EAAE,sDAAsD,GAAG3B,GAAG,GAAG;IAC1E,CAAC,CAAC;EACN,CAAC;EAED,MAAM4B,4BAA4B,GAAIX,CAAC,IAAK;IACxC,MAAMpB,YAAY,GAAGT,QAAQ,CAACS,YAAY,CAACN,YAAY,CAAC;IACxD,IAAIM,YAAY,KAAKgC,SAAS,IAAIhC,YAAY,KAAK,EAAE,EAAE;MACnD,QAAQoB,CAAC,CAAC7C,GAAG;QACT,KAAK,GAAG;UACJ6B,MAAM,CAACJ,YAAY,CAAC;UACpB;QACJ,KAAK,GAAG;UACJI,MAAM,CAAC6B,IAAI,CAACC,KAAK,CAAClC,YAAY,GAAG,IAAI,CAAC,CAAC;UACvC;QACJ,KAAK,GAAG;UACJI,MAAM,CAAC6B,IAAI,CAACC,KAAK,CAAClC,YAAY,GAAG,IAAI,CAAC,CAAC;UACvC;QACJ,KAAK,GAAG;UACJI,MAAM,CAAC6B,IAAI,CAACC,KAAK,CAAClC,YAAY,GAAG,IAAI,CAAC,CAAC;UACvC;QACJ,KAAK,GAAG;UACJI,MAAM,CAAC6B,IAAI,CAACC,KAAK,CAAClC,YAAY,GAAG,IAAI,CAAC,CAAC;UACvC;QACJ;UACII,MAAM,CAAC6B,IAAI,CAACC,KAAK,CAAClC,YAAY,CAAC,CAAC;MACxC;IACJ;IACAiB,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAExB,YAAY,CAAC;IAC3CuB,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAE3B,QAAQ,CAACQ,iBAAiB,CAAC;IAC9DkB,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAE3B,QAAQ,CAACS,YAAY,CAAC;EAC9D,CAAC;EAED,oBACI7B,OAAA,CAAAE,SAAA;IAAAK,QAAA,GACK4B,aAAa,eAOdnC,OAAA,CAACV,IAAI;MAAC0E,GAAG,EAAC,OAAO;MAACC,KAAK,EAAE;QAACC,MAAM,EAAC;MAAM,CAAE;MAAA3D,QAAA,gBACrCP,OAAA,CAACb,MAAM;QACH0D,OAAO,EAAEK,eAAgB;QAAA3C,QAAA,GAC5B,2BAC4B,EAACa,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,EAAC,MACvE;MAAA;QAAAf,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAAQ,CAAC,eAkBTX,OAAA,CAACb,MAAM;QACH0D,OAAO,EAAEM,kBAAmB;QAC5BgB,QAAQ,EAAE/C,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,KAAK,EAAE,IAAIH,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,KAAKsC,SAAU;QAAAtD,QAAA,GACvH,uBACwB,EAACa,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAC,GAAI,IAAGH,QAAQ,CAACQ,iBAAiB,CAACL,YAAY,CAAE,MAAK,GAAG,EAAE;MAAA;QAAAf,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACpH,CAAC,eAKTX,OAAA,CAACX,GAAG;QAAAkB,QAAA,eACAP,OAAA,CAACZ,GAAG;UAACgF,IAAI,EAAE,EAAG;UAAA7D,QAAA,gBACVP,OAAA,CAACH,GAAG;YAACwE,KAAK,EAAC,QAAQ;YAAA9D,QAAA,GAAC,WAAS,EAACyB,GAAG,EAAC,KAAG;UAAA;YAAAxB,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAAK,CAAC,eAC3CX,OAAA,CAACJ,OAAO;YAAC0E,SAAS,EAAC,OAAO;YAACC,KAAK,EAAEjE,WAAY;YAAAC,QAAA,eAC5CP,OAAA,CAACb,MAAM;cACHuE,IAAI,EAAC,SAAS;cACdb,OAAO,EAAGO,wBAA0B;cACpCa,KAAK,EAAI;gBAAEO,UAAU,EAAE;cAAO,CAAE;cAAAjE,QAAA,EACnC;YAED;cAAAC,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAQ;UAAC;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACF,CAAC;QAAA;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACT;MAAC;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACL,CAAC;IAAA;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACJ,CAAC,eACPX,OAAA;MAAKyE,SAAS,EAAC,cAAc;MAAAlE,QAAA,gBACzBP,OAAA,CAACX,GAAG;QAAAkB,QAAA,eACAP,OAAA,CAACZ,GAAG;UAACgF,IAAI,EAAE,EAAG;UAAA7D,QAAA,gBACVP,OAAA;YAAKyE,SAAS,EAAC,iBAAiB;YAAAlE,QAAA,gBAC5BP,OAAA,CAACjB,UAAU;cACP0F,SAAS,EAAC,YAAY;cACtBC,IAAI,EAAE5F,YAAa;cACnB6F,QAAQ,EAAE7C,YAAa;cACvB8C,WAAW,EAAC;YAAS;cAAApE,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OACxB,CAAC,eACFX,OAAA,CAACd,MAAM;cACHuF,SAAS,EAAC,iBAAiB;cAC3BI,GAAG,EAAE,CAAE;cACPC,GAAG,EAAE,IAAK;cACVtB,KAAK,EAAExB,GAAI;cACX+C,QAAQ,EAAExB,oBAAqB;cAC/ByB,YAAY,EAAE,IAAK;cACnBf,KAAK,EAAE;gBAAEC,MAAM,EAAE;cAAC,CAAE;cACpBe,OAAO,EAAE;gBAACxB,IAAI,EAAE;cAAK;YAAE;cAAAjD,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAC1B,CAAC,eACFX,OAAA;cAAKiE,KAAK,EAAE;gBAAEiB,OAAO,EAAE,MAAM;gBAAEC,cAAc,EAAE,eAAe;gBAAEC,SAAS,EAAE;cAAO,CAAE;cAAA7E,QAAA,gBAClFP,OAAA;gBAAAO,QAAA,EAAM;cAAM;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAM,CAAC,eACnBX,OAAA;gBAAAO,QAAA,EAAM;cAAQ;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAM,CAAC;YAAA;cAAAH,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAClB,CAAC;UAAA;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACL,CAAC,eACNX,OAAA;YAAKiE,KAAK,EAAE;cAAEoB,SAAS,EAAE,QAAQ;cAAED,SAAS,EAAE;YAAO,CAAE;YAAA7E,QAAA,eACjDP,OAAA;cAAKsF,KAAK,EAAC,KAAK;cAACC,MAAM,EAAC,IAAI;cAACC,KAAK,EAAC,4BAA4B;cAAAjF,QAAA,gBAC7DP,OAAA;gBAAAO,QAAA,eACEP,OAAA;kBAAgByF,EAAE,EAAC,OAAO;kBAACC,EAAE,EAAC,IAAI;kBAACC,EAAE,EAAC,IAAI;kBAACC,EAAE,EAAC,MAAM;kBAACC,EAAE,EAAC,IAAI;kBAACC,aAAa,EAAC,gBAAgB;kBAAAvF,QAAA,gBACzFP,OAAA;oBAAM+F,MAAM,EAAC,IAAI;oBAAC9B,KAAK,EAAE;sBAAE+B,SAAS,EAAE;oBAAS;kBAAE;oBAAAxF,QAAA,EAAAC,YAAA;oBAAAC,UAAA;oBAAAC,YAAA;kBAAA,OAAE,CAAC,eACpDX,OAAA;oBAAM+F,MAAM,EAAC,MAAM;oBAAC9B,KAAK,EAAE;sBAAE+B,SAAS,EAAE;oBAAS;kBAAE;oBAAAxF,QAAA,EAAAC,YAAA;oBAAAC,UAAA;oBAAAC,YAAA;kBAAA,OAAE,CAAC;gBAAA;kBAAAH,QAAA,EAAAC,YAAA;kBAAAC,UAAA;kBAAAC,YAAA;gBAAA,OACxC;cAAC;gBAAAH,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OACb,CAAC,eACPX,OAAA;gBAAM0F,EAAE,EAAC,IAAI;gBAACC,EAAE,EAAC,IAAI;gBAACC,EAAE,EAAC,KAAK;gBAACC,EAAE,EAAC,IAAI;gBAACI,MAAM,EAAC,aAAa;gBAACC,WAAW,EAAC;cAAG;gBAAA1F,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAE,CAAC,eAC9EX,OAAA;gBAASmG,MAAM,EAAC,iBAAiB;gBAACC,IAAI,EAAC;cAAQ;gBAAA5F,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAE,CAAC,eAClDX,OAAA;gBAASmG,MAAM,EAAC,qBAAqB;gBAACC,IAAI,EAAC;cAAS;gBAAA5F,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAE,CAAC;YAAA;cAAAH,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OACpD;UAAC;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACP,CAAC;QAAA;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACL;MAAC;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACL,CAAC,eACNX,OAAA,CAACX,GAAG;QAAAkB,QAAA,eACAP,OAAA,CAACZ,GAAG;UAACgF,IAAI,EAAE,EAAG;UAAA7D,QAAA,gBACVP,OAAA;YAAMyE,SAAS,EAAC,OAAO;YAAAlE,QAAA,EAAC;UAAuB;YAAAC,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAAM,CAAC,eACtDX,OAAA,CAACb,MAAM;YACH0D,OAAO,EAAGG,eAAiB;YAC3BiB,KAAK,EAAE;cAAEmB,SAAS,EAAE,MAAM;cAAEZ,UAAU,EAAE;YAAM,CAAE;YAChDd,IAAI,EAAC,SAAS;YAAAnD,QAAA,EAEZuB,YAAY,GAAI,MAAM,GAAG;UAAO;YAAAtB,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAC9B,CAAC;QAAA;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACR;MAAC;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACL,CAAC;IAAA;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACL,CAAC,eACNX,OAAA,CAACP,KAAK;MACF8E,KAAK,EAAC,4BAA4B;MAClC8B,QAAQ;MACR5C,IAAI,EAAEpB,OAAQ;MACdiE,IAAI,EAAEA,CAAA,KAAMhE,UAAU,CAAC,KAAK,CAAE;MAC9BiE,QAAQ,EAAEA,CAAA,KAAMjE,UAAU,CAAC,KAAK,CAAE;MAClCgD,KAAK,EAAE,IAAK;MACZkB,MAAM,EAAE,cACRxG,OAAA,CAACb,MAAM;QAAcuE,IAAI,EAAC,SAAS;QAACb,OAAO,EAAEA,CAAA,KAAMP,UAAU,CAAC,KAAK,CAAE;QAAA/B,QAAA,EAAC;MAEtE,GAFY,QAAQ;QAAAC,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAEZ,CAAC,CACP;MAAAJ,QAAA,eAEFP,OAAA,CAAChB,QAAQ;QAAAwB,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAAE;IAAC;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACT,CAAC,eACRX,OAAA,CAACP,KAAK;MACF8E,KAAK,EAAC,6BAA6B;MACnC8B,QAAQ;MACR5C,IAAI,EAAElB,QAAS;MACf+D,IAAI,EAAEA,CAAA,KAAM9D,WAAW,CAAC,KAAK,CAAE;MAC/B+D,QAAQ,EAAEA,CAAA,KAAM/D,WAAW,CAAC,KAAK,CAAE;MACnC8C,KAAK,EAAE,IAAK;MACZkB,MAAM,EAAE,cACRxG,OAAA,CAACb,MAAM;QAAcuE,IAAI,EAAC,SAAS;QAACb,OAAO,EAAEA,CAAA,KAAML,WAAW,CAAC,KAAK,CAAE;QAAAjC,QAAA,EAAC;MAEvE,GAFY,QAAQ;QAAAC,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAEZ,CAAC,CACP;MAAAJ,QAAA,eAEFP,OAAA,CAACf,SAAS;QAAAuB,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAAE;IAAC;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACV,CAAC;EAAA,eACV,CAAC;AAEX,CAAC;AAAAI,EAAA,CApPKH,IAAI;EAAA,QAC+B/B,OAAO,EAC3BD,WAAW,EAQQe,OAAO,CAACyC,UAAU;AAAA;AAAAqE,EAAA,GAVpD7F,IAAI;AAsPV,eAAeA,IAAI;AAAC,IAAA6F,EAAA;AAAAC,YAAA,CAAAD,EAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}