sa2kit 3.0.0 → 3.2.0
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.
- package/README.md +5 -5
- package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
- package/dist/AliyunOSSProvider-7IOT5U6M.js.map +1 -0
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs.map +1 -0
- package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
- package/dist/LocalStorageProvider-KJKRCKBS.js.map +1 -0
- package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
- package/dist/LocalStorageProvider-O22465NY.mjs.map +1 -0
- package/dist/chunk-2234T4A6.js +303 -0
- package/dist/chunk-2234T4A6.js.map +1 -0
- package/dist/chunk-36KGNXKW.js +16 -0
- package/dist/chunk-36KGNXKW.js.map +1 -0
- package/dist/chunk-375C7WL7.js +2695 -0
- package/dist/chunk-375C7WL7.js.map +1 -0
- package/dist/chunk-3J24Z4MB.js +991 -0
- package/dist/chunk-3J24Z4MB.js.map +1 -0
- package/dist/chunk-3QCATFQV.js +43 -0
- package/dist/chunk-3QCATFQV.js.map +1 -0
- package/dist/chunk-3R6JHA6D.js +120 -0
- package/dist/chunk-3R6JHA6D.js.map +1 -0
- package/dist/chunk-4OXKHV7J.js +43 -0
- package/dist/chunk-4OXKHV7J.js.map +1 -0
- package/dist/chunk-4PJM4752.js +4 -0
- package/dist/chunk-4PJM4752.js.map +1 -0
- package/dist/chunk-65JRVC3F.mjs +54 -0
- package/dist/chunk-65JRVC3F.mjs.map +1 -0
- package/dist/chunk-6HL54I2B.js +336 -0
- package/dist/chunk-6HL54I2B.js.map +1 -0
- package/dist/chunk-6V2MIQPF.mjs +77 -0
- package/dist/chunk-6V2MIQPF.mjs.map +1 -0
- package/dist/chunk-6YLCRWKM.mjs +8 -0
- package/dist/chunk-6YLCRWKM.mjs.map +1 -0
- package/dist/chunk-7CRU2Y5X.mjs +152 -0
- package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
- package/dist/chunk-7PMT4L4I.js +324 -0
- package/dist/chunk-7PMT4L4I.js.map +1 -0
- package/dist/chunk-7VVZHFEM.js +88 -0
- package/dist/chunk-7VVZHFEM.js.map +1 -0
- package/dist/chunk-AWHGIKTQ.js +56 -0
- package/dist/chunk-AWHGIKTQ.js.map +1 -0
- package/dist/chunk-B3GYF6TY.js +37 -0
- package/dist/chunk-B3GYF6TY.js.map +1 -0
- package/dist/chunk-BDBJFOXM.mjs +14 -0
- package/dist/chunk-BDBJFOXM.mjs.map +1 -0
- package/dist/chunk-BTW3SWQN.mjs +25 -0
- package/dist/chunk-BTW3SWQN.mjs.map +1 -0
- package/dist/chunk-CHYSSZ4E.mjs +734 -0
- package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
- package/dist/chunk-DO6QYAZV.mjs +298 -0
- package/dist/chunk-DO6QYAZV.mjs.map +1 -0
- package/dist/chunk-DTR53LQO.mjs +781 -0
- package/dist/chunk-DTR53LQO.mjs.map +1 -0
- package/dist/chunk-EI2S4XDG.mjs +89 -0
- package/dist/chunk-EI2S4XDG.mjs.map +1 -0
- package/dist/chunk-EOZHUI46.js +93 -0
- package/dist/chunk-EOZHUI46.js.map +1 -0
- package/dist/chunk-F2BZIU67.js +184 -0
- package/dist/chunk-F2BZIU67.js.map +1 -0
- package/dist/chunk-F2TEJSCP.js +756 -0
- package/dist/chunk-F2TEJSCP.js.map +1 -0
- package/dist/chunk-FCLS5R24.js +148 -0
- package/dist/chunk-FCLS5R24.js.map +1 -0
- package/dist/chunk-FUA6ZGMI.mjs +376 -0
- package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
- package/dist/chunk-FY2X3LYR.mjs +3 -0
- package/dist/chunk-FY2X3LYR.mjs.map +1 -0
- package/dist/chunk-GS4SAW25.mjs +116 -0
- package/dist/chunk-GS4SAW25.mjs.map +1 -0
- package/dist/chunk-H56ICWUO.js +321 -0
- package/dist/chunk-H56ICWUO.js.map +1 -0
- package/dist/chunk-HG34SGMN.mjs +546 -0
- package/dist/chunk-HG34SGMN.mjs.map +1 -0
- package/dist/chunk-HL4H2HF6.js +279 -0
- package/dist/chunk-HL4H2HF6.js.map +1 -0
- package/dist/chunk-IJIQUMAK.mjs +272 -0
- package/dist/chunk-IJIQUMAK.mjs.map +1 -0
- package/dist/chunk-KEZFTDZT.mjs +559 -0
- package/dist/chunk-KEZFTDZT.mjs.map +1 -0
- package/dist/chunk-KHOVC2KL.js +144 -0
- package/dist/chunk-KHOVC2KL.js.map +1 -0
- package/dist/chunk-KRBSTLKC.js +6154 -0
- package/dist/chunk-KRBSTLKC.js.map +1 -0
- package/dist/chunk-KVYHCGRY.js +2011 -0
- package/dist/chunk-KVYHCGRY.js.map +1 -0
- package/dist/chunk-LZ5YTMMP.mjs +41 -0
- package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
- package/dist/chunk-MJ6XJGAL.js +1551 -0
- package/dist/chunk-MJ6XJGAL.js.map +1 -0
- package/dist/chunk-MKLXCV4Z.mjs +1510 -0
- package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
- package/dist/chunk-MMDSZIXD.mjs +286 -0
- package/dist/chunk-MMDSZIXD.mjs.map +1 -0
- package/dist/chunk-N2O3OX5Y.mjs +243 -0
- package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
- package/dist/chunk-O6NNSPWD.mjs +35 -0
- package/dist/chunk-O6NNSPWD.mjs.map +1 -0
- package/dist/chunk-OIRZXSYM.js +80 -0
- package/dist/chunk-OIRZXSYM.js.map +1 -0
- package/dist/chunk-P7JQRNBJ.mjs +76 -0
- package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
- package/dist/chunk-PA4ELVGI.js +20 -0
- package/dist/chunk-PA4ELVGI.js.map +1 -0
- package/dist/chunk-PLIG5257.mjs +2613 -0
- package/dist/chunk-PLIG5257.mjs.map +1 -0
- package/dist/chunk-QIF4MG5V.mjs +283 -0
- package/dist/chunk-QIF4MG5V.mjs.map +1 -0
- package/dist/chunk-RHECN4E2.mjs +6077 -0
- package/dist/chunk-RHECN4E2.mjs.map +1 -0
- package/dist/chunk-RHHTZTIN.mjs +314 -0
- package/dist/chunk-RHHTZTIN.mjs.map +1 -0
- package/dist/chunk-RRQ2X26Z.js +106 -0
- package/dist/chunk-RRQ2X26Z.js.map +1 -0
- package/dist/chunk-RST2T54Y.js +836 -0
- package/dist/chunk-RST2T54Y.js.map +1 -0
- package/dist/chunk-RVNQI6BI.js +249 -0
- package/dist/chunk-RVNQI6BI.js.map +1 -0
- package/dist/chunk-S3K4LTRI.mjs +226 -0
- package/dist/chunk-S3K4LTRI.mjs.map +1 -0
- package/dist/chunk-SWZ5XNF6.js +158 -0
- package/dist/chunk-SWZ5XNF6.js.map +1 -0
- package/dist/chunk-TNJ6LYX7.mjs +18 -0
- package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
- package/dist/chunk-U7HNBCBS.js +207 -0
- package/dist/chunk-U7HNBCBS.js.map +1 -0
- package/dist/chunk-UJS3YSD3.mjs +37 -0
- package/dist/chunk-UJS3YSD3.mjs.map +1 -0
- package/dist/chunk-UJUWDF7M.mjs +336 -0
- package/dist/chunk-UJUWDF7M.mjs.map +1 -0
- package/dist/chunk-UR5NENGE.js +78 -0
- package/dist/chunk-UR5NENGE.js.map +1 -0
- package/dist/chunk-V7HGBDCB.mjs +135 -0
- package/dist/chunk-V7HGBDCB.mjs.map +1 -0
- package/dist/chunk-V7RLIZMN.js +90 -0
- package/dist/chunk-V7RLIZMN.js.map +1 -0
- package/dist/chunk-VCKXK6V5.js +345 -0
- package/dist/chunk-VCKXK6V5.js.map +1 -0
- package/dist/chunk-VIEXDTNF.mjs +100 -0
- package/dist/chunk-VIEXDTNF.mjs.map +1 -0
- package/dist/chunk-VN2DULIA.js +579 -0
- package/dist/chunk-VN2DULIA.js.map +1 -0
- package/dist/chunk-VNWMRUY6.js +168 -0
- package/dist/chunk-VNWMRUY6.js.map +1 -0
- package/dist/chunk-VYK4M2D6.mjs +177 -0
- package/dist/chunk-VYK4M2D6.mjs.map +1 -0
- package/dist/chunk-WB4H6ZUW.mjs +86 -0
- package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
- package/dist/chunk-WM3AEJ2E.mjs +981 -0
- package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
- package/dist/chunk-X5GINUGI.mjs +162 -0
- package/dist/chunk-X5GINUGI.mjs.map +1 -0
- package/dist/chunk-XB7GUEHZ.mjs +82 -0
- package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
- package/dist/chunk-XE5RGZ3B.js +242 -0
- package/dist/chunk-XE5RGZ3B.js.map +1 -0
- package/dist/chunk-XNTIMVSL.mjs +193 -0
- package/dist/chunk-XNTIMVSL.mjs.map +1 -0
- package/dist/chunk-Y7WHUKJF.js +387 -0
- package/dist/chunk-Y7WHUKJF.js.map +1 -0
- package/dist/chunk-YIRPPMCN.mjs +1916 -0
- package/dist/chunk-YIRPPMCN.mjs.map +1 -0
- package/dist/chunk-YTGUIRRH.js +10 -0
- package/dist/chunk-YTGUIRRH.js.map +1 -0
- package/dist/chunk-Z2SNB5LJ.js +28 -0
- package/dist/chunk-Z2SNB5LJ.js.map +1 -0
- package/dist/chunk-ZOP7YIVX.js +552 -0
- package/dist/chunk-ZOP7YIVX.js.map +1 -0
- package/dist/chunk-ZUZLWHH5.mjs +146 -0
- package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
- package/dist/common/ai/llm/core/index.d.mts +70 -0
- package/dist/common/ai/llm/core/index.d.ts +70 -0
- package/dist/common/ai/llm/core/index.js +54 -0
- package/dist/common/ai/llm/core/index.mjs +5 -0
- package/dist/common/ai/llm/electron/index.d.mts +6 -0
- package/dist/common/ai/llm/electron/index.d.ts +6 -0
- package/dist/common/ai/llm/electron/index.js +67 -0
- package/dist/common/ai/llm/electron/index.mjs +10 -0
- package/dist/common/ai/llm/index.d.mts +3 -0
- package/dist/common/ai/llm/index.d.ts +3 -0
- package/dist/common/ai/llm/index.js +54 -0
- package/dist/common/ai/llm/index.mjs +5 -0
- package/dist/common/ai/llm/miniapp/index.d.mts +6 -0
- package/dist/common/ai/llm/miniapp/index.d.ts +6 -0
- package/dist/common/ai/llm/miniapp/index.js +59 -0
- package/dist/common/ai/llm/miniapp/index.mjs +6 -0
- package/dist/common/ai/llm/rn/index.d.mts +6 -0
- package/dist/common/ai/llm/rn/index.d.ts +6 -0
- package/dist/common/ai/llm/rn/index.js +59 -0
- package/dist/common/ai/llm/rn/index.mjs +6 -0
- package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
- package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
- package/dist/common/ai/llm/ui/electron/index.js +22 -0
- package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
- package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
- package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
- package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
- package/dist/common/ai/llm/ui/rn/index.js +14 -0
- package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
- package/dist/common/ai/llm/ui/web/index.d.mts +15 -0
- package/dist/common/ai/llm/ui/web/index.d.ts +15 -0
- package/dist/common/ai/llm/ui/web/index.js +21 -0
- package/dist/common/ai/llm/ui/web/index.mjs +8 -0
- package/dist/common/ai/llm/web/index.d.mts +6 -0
- package/dist/common/ai/llm/web/index.d.ts +6 -0
- package/dist/common/ai/llm/web/index.js +66 -0
- package/dist/common/ai/llm/web/index.mjs +9 -0
- package/dist/common/analytics/index.d.mts +2 -0
- package/dist/common/analytics/index.d.ts +2 -0
- package/dist/common/analytics/index.js +314 -0
- package/dist/common/analytics/index.mjs +5 -0
- package/dist/common/analytics/server/index.js +529 -0
- package/dist/common/analytics/server/index.js.map +1 -0
- package/dist/common/analytics/server/index.mjs +525 -0
- package/dist/common/analytics/server/index.mjs.map +1 -0
- package/dist/common/api/index.d.mts +3 -0
- package/dist/common/api/index.d.ts +3 -0
- package/dist/common/api/index.js +21 -0
- package/dist/common/api/index.mjs +4 -0
- package/dist/common/auth/client/index.d.mts +1 -31
- package/dist/common/auth/client/index.d.ts +1 -31
- package/dist/common/auth/client/index.js +2 -15
- package/dist/common/auth/client/index.mjs +1 -2
- package/dist/common/auth/components/index.d.mts +5 -239
- package/dist/common/auth/components/index.d.ts +5 -239
- package/dist/common/auth/components/index.js +878 -49
- package/dist/common/auth/components/index.js.map +1 -1
- package/dist/common/auth/components/index.mjs +871 -5
- package/dist/common/auth/components/index.mjs.map +1 -1
- package/dist/common/auth/hooks/index.d.mts +2 -29
- package/dist/common/auth/hooks/index.d.ts +2 -29
- package/dist/common/auth/hooks/index.js +2 -11
- package/dist/common/auth/hooks/index.mjs +1 -2
- package/dist/common/auth/index.d.mts +5 -9
- package/dist/common/auth/index.d.ts +5 -9
- package/dist/common/auth/index.js +5 -26
- package/dist/common/auth/index.mjs +3 -4
- package/dist/common/auth/rn/index.d.mts +1 -17
- package/dist/common/auth/rn/index.d.ts +1 -17
- package/dist/common/auth/rn/index.js +2 -34
- package/dist/common/auth/rn/index.js.map +1 -1
- package/dist/common/auth/rn/index.mjs +2 -31
- package/dist/common/auth/rn/index.mjs.map +1 -1
- package/dist/common/auth/server/index.d.mts +81 -2
- package/dist/common/auth/server/index.d.ts +81 -2
- package/dist/common/auth/server/index.js +128 -37
- package/dist/common/auth/server/index.js.map +1 -1
- package/dist/common/auth/server/index.mjs +124 -1
- package/dist/common/auth/server/index.mjs.map +1 -1
- package/dist/common/auth/services/index.js +12 -9
- package/dist/common/auth/services/index.js.map +1 -1
- package/dist/common/auth/services/index.mjs +10 -1
- package/dist/common/auth/services/index.mjs.map +1 -1
- package/dist/common/components/index.d.mts +4 -0
- package/dist/common/components/index.d.ts +4 -0
- package/dist/common/components/index.js +414 -0
- package/dist/common/components/index.mjs +9 -0
- package/dist/common/config/index.d.mts +1 -0
- package/dist/common/config/index.d.ts +1 -0
- package/dist/common/config/index.js +21 -0
- package/dist/common/config/index.mjs +4 -0
- package/dist/common/config/server/index.js +1177 -0
- package/dist/common/config/server/index.js.map +1 -0
- package/dist/common/config/server/index.mjs +1138 -0
- package/dist/common/config/server/index.mjs.map +1 -0
- package/dist/common/export/index.d.mts +2 -2
- package/dist/common/export/index.d.ts +2 -2
- package/dist/common/export/index.js +67 -67
- package/dist/common/export/index.mjs +3 -3
- package/dist/common/export/server/index.d.mts +2 -2
- package/dist/common/export/server/index.d.ts +2 -2
- package/dist/common/export/server/index.js +76 -48
- package/dist/common/export/server/index.mjs +3 -3
- package/dist/common/file/index.d.mts +2 -2
- package/dist/common/file/index.d.ts +2 -2
- package/dist/common/file/index.js +27 -27
- package/dist/common/file/index.mjs +5 -5
- package/dist/common/file/server/index.d.mts +2 -2
- package/dist/common/file/server/index.d.ts +2 -2
- package/dist/common/file/server/index.js +58 -50
- package/dist/common/file/server/index.mjs +8 -8
- package/dist/common/i18n/index.d.mts +2 -0
- package/dist/common/i18n/index.d.ts +2 -0
- package/dist/common/i18n/index.js +73 -0
- package/dist/common/i18n/index.mjs +4 -0
- package/dist/common/imageCrop/index.d.mts +2 -0
- package/dist/common/imageCrop/index.d.ts +2 -0
- package/dist/common/imageCrop/index.js +61 -0
- package/dist/common/imageCrop/index.mjs +4 -0
- package/dist/common/index.d.mts +17 -20
- package/dist/common/index.d.ts +17 -20
- package/dist/common/index.js +76 -70
- package/dist/common/index.mjs +27 -29
- package/dist/common/logger/index.d.mts +1 -1
- package/dist/common/logger/index.d.ts +1 -1
- package/dist/common/logger/index.js +6 -7
- package/dist/common/logger/index.mjs +1 -2
- package/dist/common/ossFile/index.d.mts +61 -0
- package/dist/common/ossFile/index.d.ts +61 -0
- package/dist/common/ossFile/index.js +96 -0
- package/dist/common/ossFile/index.mjs +7 -0
- package/dist/common/ossFile/server/index.d.mts +94 -0
- package/dist/common/ossFile/server/index.d.ts +94 -0
- package/dist/common/ossFile/server/index.js +221 -0
- package/dist/common/ossFile/server/index.mjs +12 -0
- package/dist/common/platform/index.js +8 -8
- package/dist/common/platform/index.mjs +4 -4
- package/dist/common/request/index.d.mts +1 -1
- package/dist/common/request/index.d.ts +1 -1
- package/dist/common/request/index.js +5 -7
- package/dist/common/request/index.mjs +2 -4
- package/dist/common/storage/index.d.mts +1 -1
- package/dist/common/storage/index.d.ts +1 -1
- package/dist/common/storage/index.js +17 -17
- package/dist/common/storage/index.mjs +5 -5
- package/dist/common/universalExport/index.d.mts +232 -0
- package/dist/common/universalExport/index.d.ts +232 -0
- package/dist/common/universalExport/index.js +178 -0
- package/dist/common/universalExport/index.mjs +5 -0
- package/dist/common/universalExport/server/index.d.mts +1189 -0
- package/dist/common/universalExport/server/index.d.ts +1189 -0
- package/dist/common/universalExport/server/index.js +151 -0
- package/dist/common/universalExport/server/index.mjs +6 -0
- package/dist/common/universalFile/index.d.mts +409 -0
- package/dist/common/universalFile/index.d.ts +409 -0
- package/dist/common/universalFile/index.js +1742 -0
- package/dist/common/universalFile/index.js.map +1 -0
- package/dist/common/universalFile/index.mjs +1497 -0
- package/dist/common/universalFile/index.mjs.map +1 -0
- package/dist/common/universalFile/server/index.d.mts +1064 -0
- package/dist/common/universalFile/server/index.d.ts +1064 -0
- package/dist/common/universalFile/server/index.js +311 -0
- package/dist/common/universalFile/server/index.mjs +10 -0
- package/dist/common/utils/index.d.mts +1 -1
- package/dist/common/utils/index.d.ts +1 -1
- package/dist/common/utils/index.js +11 -12
- package/dist/common/utils/index.mjs +2 -3
- package/dist/index-BRLygK4h.d.ts +67 -0
- package/dist/index-BWNK5mH2.d.ts +76 -0
- package/dist/index-Bd7cKF1j.d.mts +50 -0
- package/dist/index-BiCK6gg6.d.mts +210 -0
- package/dist/index-BiCK6gg6.d.ts +210 -0
- package/dist/index-C-P2yBTH.d.mts +76 -0
- package/dist/index-CT4K2z-O.d.ts +81 -0
- package/dist/index-D6RJTGce.d.mts +81 -0
- package/dist/index-DA7L9JlE.d.mts +159 -0
- package/dist/index-DRQxtCDw.d.ts +50 -0
- package/dist/index-DXVph21C.d.mts +201 -0
- package/dist/index-DXVph21C.d.ts +201 -0
- package/dist/index-DzyK789B.d.mts +67 -0
- package/dist/index-FVJZCEtm.d.mts +145 -0
- package/dist/index-FVJZCEtm.d.ts +145 -0
- package/dist/index-nD9vPCZT.d.ts +159 -0
- package/dist/index-nOmIv2BG.d.mts +559 -0
- package/dist/index-nOmIv2BG.d.ts +559 -0
- package/dist/path-Bzc7hj1N.d.ts +45 -0
- package/dist/path-DN_65vhO.d.mts +45 -0
- package/dist/utils-Dm3O1rAa.d.mts +366 -0
- package/dist/utils-Dm3O1rAa.d.ts +366 -0
- package/package.json +293 -348
- package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
- package/dist/AliyunOSSProvider-4GRL2FJB.js.map +0 -1
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs.map +0 -1
- package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
- package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
- package/dist/ConfigService-BxK06xP6.d.mts +0 -262
- package/dist/ConfigService-BxK06xP6.d.ts +0 -262
- package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
- package/dist/LocalStorageProvider-J5RHV37G.mjs.map +0 -1
- package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
- package/dist/LocalStorageProvider-PFA2DMIJ.js.map +0 -1
- package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
- package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
- package/dist/ai/llm/core/index.d.mts +0 -70
- package/dist/ai/llm/core/index.d.ts +0 -70
- package/dist/ai/llm/core/index.js +0 -54
- package/dist/ai/llm/core/index.mjs +0 -5
- package/dist/ai/llm/electron/index.d.mts +0 -6
- package/dist/ai/llm/electron/index.d.ts +0 -6
- package/dist/ai/llm/electron/index.js +0 -66
- package/dist/ai/llm/electron/index.mjs +0 -9
- package/dist/ai/llm/index.d.mts +0 -3
- package/dist/ai/llm/index.d.ts +0 -3
- package/dist/ai/llm/index.js +0 -54
- package/dist/ai/llm/index.mjs +0 -5
- package/dist/ai/llm/miniapp/index.d.mts +0 -6
- package/dist/ai/llm/miniapp/index.d.ts +0 -6
- package/dist/ai/llm/miniapp/index.js +0 -59
- package/dist/ai/llm/miniapp/index.mjs +0 -6
- package/dist/ai/llm/rn/index.d.mts +0 -6
- package/dist/ai/llm/rn/index.d.ts +0 -6
- package/dist/ai/llm/rn/index.js +0 -59
- package/dist/ai/llm/rn/index.mjs +0 -6
- package/dist/ai/llm/ui/electron/index.d.mts +0 -5
- package/dist/ai/llm/ui/electron/index.d.ts +0 -5
- package/dist/ai/llm/ui/electron/index.js +0 -21
- package/dist/ai/llm/ui/electron/index.mjs +0 -8
- package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
- package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
- package/dist/ai/llm/ui/miniapp/index.js +0 -14
- package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
- package/dist/ai/llm/ui/rn/index.d.mts +0 -9
- package/dist/ai/llm/ui/rn/index.d.ts +0 -9
- package/dist/ai/llm/ui/rn/index.js +0 -14
- package/dist/ai/llm/ui/rn/index.mjs +0 -5
- package/dist/ai/llm/ui/web/index.d.mts +0 -15
- package/dist/ai/llm/ui/web/index.d.ts +0 -15
- package/dist/ai/llm/ui/web/index.js +0 -20
- package/dist/ai/llm/ui/web/index.mjs +0 -7
- package/dist/ai/llm/web/index.d.mts +0 -6
- package/dist/ai/llm/web/index.d.ts +0 -6
- package/dist/ai/llm/web/index.js +0 -65
- package/dist/ai/llm/web/index.mjs +0 -8
- package/dist/analytics/index.d.mts +0 -2
- package/dist/analytics/index.d.ts +0 -2
- package/dist/analytics/index.js +0 -314
- package/dist/analytics/index.mjs +0 -5
- package/dist/analytics/server/index.js +0 -529
- package/dist/analytics/server/index.js.map +0 -1
- package/dist/analytics/server/index.mjs +0 -525
- package/dist/analytics/server/index.mjs.map +0 -1
- package/dist/api/index.d.mts +0 -3
- package/dist/api/index.d.ts +0 -3
- package/dist/api/index.js +0 -21
- package/dist/api/index.mjs +0 -4
- package/dist/audioDetection/index.d.mts +0 -449
- package/dist/audioDetection/index.d.ts +0 -449
- package/dist/audioDetection/index.js +0 -1244
- package/dist/audioDetection/index.js.map +0 -1
- package/dist/audioDetection/index.mjs +0 -1227
- package/dist/audioDetection/index.mjs.map +0 -1
- package/dist/auth/client/index.d.mts +0 -13
- package/dist/auth/client/index.d.ts +0 -13
- package/dist/auth/client/index.js +0 -26
- package/dist/auth/client/index.mjs +0 -5
- package/dist/auth/components/index.d.mts +0 -10
- package/dist/auth/components/index.d.ts +0 -10
- package/dist/auth/components/index.js +0 -70
- package/dist/auth/components/index.mjs +0 -9
- package/dist/auth/hooks/index.d.mts +0 -13
- package/dist/auth/hooks/index.d.ts +0 -13
- package/dist/auth/hooks/index.js +0 -28
- package/dist/auth/hooks/index.mjs +0 -7
- package/dist/auth/index.d.mts +0 -21
- package/dist/auth/index.d.ts +0 -21
- package/dist/auth/index.js +0 -112
- package/dist/auth/index.mjs +0 -11
- package/dist/auth/rn/index.d.mts +0 -3133
- package/dist/auth/rn/index.d.ts +0 -3133
- package/dist/auth/rn/index.js +0 -684
- package/dist/auth/rn/index.js.map +0 -1
- package/dist/auth/rn/index.mjs +0 -663
- package/dist/auth/rn/index.mjs.map +0 -1
- package/dist/auth/schema/index.d.mts +0 -4
- package/dist/auth/schema/index.d.ts +0 -4
- package/dist/auth/schema/index.js +0 -49
- package/dist/auth/schema/index.mjs +0 -4
- package/dist/auth/services/index.d.mts +0 -1
- package/dist/auth/services/index.d.ts +0 -1
- package/dist/auth/services/index.js +0 -17
- package/dist/auth/services/index.mjs +0 -4
- package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
- package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
- package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
- package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
- package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
- package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
- package/dist/business/index.d.mts +0 -2
- package/dist/business/index.d.ts +0 -2
- package/dist/business/index.js +0 -581
- package/dist/business/index.js.map +0 -1
- package/dist/business/index.mjs +0 -575
- package/dist/business/index.mjs.map +0 -1
- package/dist/calendar/index.d.mts +0 -1325
- package/dist/calendar/index.d.ts +0 -1325
- package/dist/calendar/index.js +0 -5964
- package/dist/calendar/index.js.map +0 -1
- package/dist/calendar/index.mjs +0 -5878
- package/dist/calendar/index.mjs.map +0 -1
- package/dist/calendar/routes/index.d.mts +0 -191
- package/dist/calendar/routes/index.d.ts +0 -191
- package/dist/calendar/routes/index.js +0 -844
- package/dist/calendar/routes/index.js.map +0 -1
- package/dist/calendar/routes/index.mjs +0 -826
- package/dist/calendar/routes/index.mjs.map +0 -1
- package/dist/chunk-25OFOKNF.js +0 -171
- package/dist/chunk-25OFOKNF.js.map +0 -1
- package/dist/chunk-2Y7BKFKZ.js +0 -37
- package/dist/chunk-2Y7BKFKZ.js.map +0 -1
- package/dist/chunk-3DXPQ4YV.mjs +0 -165
- package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
- package/dist/chunk-3FRAIS4T.mjs +0 -35
- package/dist/chunk-3FRAIS4T.mjs.map +0 -1
- package/dist/chunk-3NHAT7D4.mjs +0 -361
- package/dist/chunk-3NHAT7D4.mjs.map +0 -1
- package/dist/chunk-3Z43XGA4.mjs +0 -54
- package/dist/chunk-3Z43XGA4.mjs.map +0 -1
- package/dist/chunk-4FDUURSD.js +0 -22
- package/dist/chunk-4FDUURSD.js.map +0 -1
- package/dist/chunk-4WBCWJSN.js +0 -836
- package/dist/chunk-4WBCWJSN.js.map +0 -1
- package/dist/chunk-5GBDDXYL.mjs +0 -23
- package/dist/chunk-5GBDDXYL.mjs.map +0 -1
- package/dist/chunk-5USIS3UM.js +0 -4
- package/dist/chunk-5USIS3UM.js.map +0 -1
- package/dist/chunk-7E3J7VAD.mjs +0 -3
- package/dist/chunk-7E3J7VAD.mjs.map +0 -1
- package/dist/chunk-ACUFEDVQ.js +0 -345
- package/dist/chunk-ACUFEDVQ.js.map +0 -1
- package/dist/chunk-AQPU2AXH.js +0 -756
- package/dist/chunk-AQPU2AXH.js.map +0 -1
- package/dist/chunk-ATUCZXJY.js +0 -80
- package/dist/chunk-ATUCZXJY.js.map +0 -1
- package/dist/chunk-B3CZ3HXJ.mjs +0 -126
- package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
- package/dist/chunk-BCE6RUZV.js +0 -2695
- package/dist/chunk-BCE6RUZV.js.map +0 -1
- package/dist/chunk-BIHYZA67.mjs +0 -2613
- package/dist/chunk-BIHYZA67.mjs.map +0 -1
- package/dist/chunk-C6KV7VTZ.mjs +0 -152
- package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
- package/dist/chunk-CAYOQDBR.js +0 -78
- package/dist/chunk-CAYOQDBR.js.map +0 -1
- package/dist/chunk-CIVO4R6N.mjs +0 -37
- package/dist/chunk-CIVO4R6N.mjs.map +0 -1
- package/dist/chunk-CX2GHCAI.mjs +0 -217
- package/dist/chunk-CX2GHCAI.mjs.map +0 -1
- package/dist/chunk-DIF5VRL3.mjs +0 -73
- package/dist/chunk-DIF5VRL3.mjs.map +0 -1
- package/dist/chunk-FCEBAWN6.js +0 -18
- package/dist/chunk-FCEBAWN6.js.map +0 -1
- package/dist/chunk-FHIE5MTC.mjs +0 -541
- package/dist/chunk-FHIE5MTC.mjs.map +0 -1
- package/dist/chunk-FHLTPXAR.js +0 -56
- package/dist/chunk-FHLTPXAR.js.map +0 -1
- package/dist/chunk-FIUBFREP.mjs +0 -298
- package/dist/chunk-FIUBFREP.mjs.map +0 -1
- package/dist/chunk-FOQEQWX5.js +0 -4
- package/dist/chunk-FOQEQWX5.js.map +0 -1
- package/dist/chunk-FXQOXLDE.js +0 -120
- package/dist/chunk-FXQOXLDE.js.map +0 -1
- package/dist/chunk-G4NFB2QA.mjs +0 -212
- package/dist/chunk-G4NFB2QA.mjs.map +0 -1
- package/dist/chunk-G5HJGXGC.mjs +0 -39
- package/dist/chunk-G5HJGXGC.mjs.map +0 -1
- package/dist/chunk-G6HXNQ2U.mjs +0 -336
- package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
- package/dist/chunk-G6NSKJMH.js +0 -106
- package/dist/chunk-G6NSKJMH.js.map +0 -1
- package/dist/chunk-G7UBMCUT.mjs +0 -41
- package/dist/chunk-G7UBMCUT.mjs.map +0 -1
- package/dist/chunk-GQZHGSRR.js +0 -44
- package/dist/chunk-GQZHGSRR.js.map +0 -1
- package/dist/chunk-GS7XLKET.js +0 -41
- package/dist/chunk-GS7XLKET.js.map +0 -1
- package/dist/chunk-GWNBVGDT.mjs +0 -1232
- package/dist/chunk-GWNBVGDT.mjs.map +0 -1
- package/dist/chunk-HDMIOOZY.mjs +0 -546
- package/dist/chunk-HDMIOOZY.mjs.map +0 -1
- package/dist/chunk-HJ6MH7J7.js +0 -552
- package/dist/chunk-HJ6MH7J7.js.map +0 -1
- package/dist/chunk-HJZHQW5R.mjs +0 -146
- package/dist/chunk-HJZHQW5R.mjs.map +0 -1
- package/dist/chunk-I5ZPEDNR.mjs +0 -734
- package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
- package/dist/chunk-IBWDBBX5.mjs +0 -16
- package/dist/chunk-IBWDBBX5.mjs.map +0 -1
- package/dist/chunk-J77KR2EV.mjs +0 -193
- package/dist/chunk-J77KR2EV.mjs.map +0 -1
- package/dist/chunk-KH6RQ4J5.js +0 -28
- package/dist/chunk-KH6RQ4J5.js.map +0 -1
- package/dist/chunk-KQ643L7Z.js +0 -144
- package/dist/chunk-KQ643L7Z.js.map +0 -1
- package/dist/chunk-LFB5EIIM.mjs +0 -31
- package/dist/chunk-LFB5EIIM.mjs.map +0 -1
- package/dist/chunk-LHJKLUM7.mjs +0 -18
- package/dist/chunk-LHJKLUM7.mjs.map +0 -1
- package/dist/chunk-MBANGIG3.mjs +0 -781
- package/dist/chunk-MBANGIG3.mjs.map +0 -1
- package/dist/chunk-MWSAH7ZG.mjs +0 -42
- package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
- package/dist/chunk-MZOGYD4N.mjs +0 -186
- package/dist/chunk-MZOGYD4N.mjs.map +0 -1
- package/dist/chunk-NCRP2YHY.mjs +0 -1598
- package/dist/chunk-NCRP2YHY.mjs.map +0 -1
- package/dist/chunk-NDGHXVGS.js +0 -25
- package/dist/chunk-NDGHXVGS.js.map +0 -1
- package/dist/chunk-NDPO5OMC.js +0 -563
- package/dist/chunk-NDPO5OMC.js.map +0 -1
- package/dist/chunk-PBI7FKMB.js +0 -43
- package/dist/chunk-PBI7FKMB.js.map +0 -1
- package/dist/chunk-Q5EDCKQA.js +0 -336
- package/dist/chunk-Q5EDCKQA.js.map +0 -1
- package/dist/chunk-Q5VFBPMG.mjs +0 -76
- package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
- package/dist/chunk-QDUBO567.js +0 -1148
- package/dist/chunk-QDUBO567.js.map +0 -1
- package/dist/chunk-QP5N3ER6.js +0 -18
- package/dist/chunk-QP5N3ER6.js.map +0 -1
- package/dist/chunk-QXAOXBVB.mjs +0 -135
- package/dist/chunk-QXAOXBVB.mjs.map +0 -1
- package/dist/chunk-R2DXTE2L.js +0 -249
- package/dist/chunk-R2DXTE2L.js.map +0 -1
- package/dist/chunk-RJP2BRJD.mjs +0 -6077
- package/dist/chunk-RJP2BRJD.mjs.map +0 -1
- package/dist/chunk-RTD2WHQQ.mjs +0 -16
- package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
- package/dist/chunk-RWCD2CAD.mjs +0 -1132
- package/dist/chunk-RWCD2CAD.mjs.map +0 -1
- package/dist/chunk-S37OK2QG.js +0 -216
- package/dist/chunk-S37OK2QG.js.map +0 -1
- package/dist/chunk-S3PUP7N4.js +0 -20
- package/dist/chunk-S3PUP7N4.js.map +0 -1
- package/dist/chunk-S6YSGVWD.js +0 -224
- package/dist/chunk-S6YSGVWD.js.map +0 -1
- package/dist/chunk-S732H246.js +0 -6154
- package/dist/chunk-S732H246.js.map +0 -1
- package/dist/chunk-SFDJNKWC.js +0 -22
- package/dist/chunk-SFDJNKWC.js.map +0 -1
- package/dist/chunk-SKFEJPMJ.mjs +0 -226
- package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
- package/dist/chunk-SLKOEYFH.js +0 -303
- package/dist/chunk-SLKOEYFH.js.map +0 -1
- package/dist/chunk-TC5YU6A4.mjs +0 -243
- package/dist/chunk-TC5YU6A4.mjs.map +0 -1
- package/dist/chunk-TXMX6PZR.js +0 -190
- package/dist/chunk-TXMX6PZR.js.map +0 -1
- package/dist/chunk-UCOE6SET.js +0 -148
- package/dist/chunk-UCOE6SET.js.map +0 -1
- package/dist/chunk-UIYKZ73N.js +0 -36
- package/dist/chunk-UIYKZ73N.js.map +0 -1
- package/dist/chunk-V7EVKD5G.mjs +0 -116
- package/dist/chunk-V7EVKD5G.mjs.map +0 -1
- package/dist/chunk-VHN7PF5I.js +0 -20
- package/dist/chunk-VHN7PF5I.js.map +0 -1
- package/dist/chunk-VMTEDX5H.js +0 -1275
- package/dist/chunk-VMTEDX5H.js.map +0 -1
- package/dist/chunk-VRN76M56.mjs +0 -3
- package/dist/chunk-VRN76M56.mjs.map +0 -1
- package/dist/chunk-VXFUXZN5.mjs +0 -20
- package/dist/chunk-VXFUXZN5.mjs.map +0 -1
- package/dist/chunk-WEEXCPSE.mjs +0 -86
- package/dist/chunk-WEEXCPSE.mjs.map +0 -1
- package/dist/chunk-WW4GE6CZ.js +0 -1647
- package/dist/chunk-WW4GE6CZ.js.map +0 -1
- package/dist/chunk-WZDTNDYR.js +0 -207
- package/dist/chunk-WZDTNDYR.js.map +0 -1
- package/dist/chunk-XBZIS3MV.mjs +0 -13
- package/dist/chunk-XBZIS3MV.mjs.map +0 -1
- package/dist/chunk-XFOZ56FB.mjs +0 -20
- package/dist/chunk-XFOZ56FB.mjs.map +0 -1
- package/dist/chunk-XJ7ZAGC5.js +0 -88
- package/dist/chunk-XJ7ZAGC5.js.map +0 -1
- package/dist/chunk-XUS5ACKR.mjs +0 -100
- package/dist/chunk-XUS5ACKR.mjs.map +0 -1
- package/dist/chunk-YOTQG4NP.mjs +0 -314
- package/dist/chunk-YOTQG4NP.mjs.map +0 -1
- package/dist/chunk-Z23HAXHL.js +0 -136
- package/dist/chunk-Z23HAXHL.js.map +0 -1
- package/dist/chunk-ZGVB35L2.mjs +0 -25
- package/dist/chunk-ZGVB35L2.mjs.map +0 -1
- package/dist/chunk-ZLYPALF3.js +0 -242
- package/dist/chunk-ZLYPALF3.js.map +0 -1
- package/dist/chunk-ZM2SZJTZ.js +0 -158
- package/dist/chunk-ZM2SZJTZ.js.map +0 -1
- package/dist/chunk-ZRAW3HXA.js +0 -43
- package/dist/chunk-ZRAW3HXA.js.map +0 -1
- package/dist/chunk-ZWQJSZEY.js +0 -371
- package/dist/chunk-ZWQJSZEY.js.map +0 -1
- package/dist/components/index.d.mts +0 -405
- package/dist/components/index.d.ts +0 -405
- package/dist/components/index.js +0 -2516
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs +0 -2396
- package/dist/components/index.mjs.map +0 -1
- package/dist/config/index.d.mts +0 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -21
- package/dist/config/index.mjs +0 -4
- package/dist/config/server/index.js +0 -1177
- package/dist/config/server/index.js.map +0 -1
- package/dist/config/server/index.mjs +0 -1138
- package/dist/config/server/index.mjs.map +0 -1
- package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
- package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
- package/dist/festivalCard/index.d.mts +0 -76
- package/dist/festivalCard/index.d.ts +0 -76
- package/dist/festivalCard/index.js +0 -1492
- package/dist/festivalCard/index.js.map +0 -1
- package/dist/festivalCard/index.mjs +0 -1475
- package/dist/festivalCard/index.mjs.map +0 -1
- package/dist/festivalCard/routes/index.d.mts +0 -42
- package/dist/festivalCard/routes/index.d.ts +0 -42
- package/dist/festivalCard/routes/index.js +0 -361
- package/dist/festivalCard/routes/index.js.map +0 -1
- package/dist/festivalCard/routes/index.mjs +0 -356
- package/dist/festivalCard/routes/index.mjs.map +0 -1
- package/dist/festivalCard/server/index.d.mts +0 -120
- package/dist/festivalCard/server/index.d.ts +0 -120
- package/dist/festivalCard/server/index.js +0 -272
- package/dist/festivalCard/server/index.js.map +0 -1
- package/dist/festivalCard/server/index.mjs +0 -265
- package/dist/festivalCard/server/index.mjs.map +0 -1
- package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
- package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
- package/dist/i18n/index.d.mts +0 -2
- package/dist/i18n/index.d.ts +0 -2
- package/dist/i18n/index.js +0 -73
- package/dist/i18n/index.mjs +0 -4
- package/dist/imageCrop/index.d.mts +0 -165
- package/dist/imageCrop/index.d.ts +0 -165
- package/dist/imageCrop/index.js +0 -560
- package/dist/imageCrop/index.js.map +0 -1
- package/dist/imageCrop/index.mjs +0 -541
- package/dist/imageCrop/index.mjs.map +0 -1
- package/dist/index-2G9Dxjvt.d.ts +0 -81
- package/dist/index-BcjDRcKp.d.mts +0 -40
- package/dist/index-Bjem5rWn.d.mts +0 -17
- package/dist/index-BlpXrrTy.d.ts +0 -40
- package/dist/index-C5U-2hJq.d.ts +0 -23
- package/dist/index-CYuUB8aF.d.mts +0 -67
- package/dist/index-CifSBBP2.d.ts +0 -17
- package/dist/index-D0K4ehme.d.mts +0 -20
- package/dist/index-DLnfKN-a.d.mts +0 -23
- package/dist/index-DSel44Ke.d.mts +0 -93
- package/dist/index-DSel44Ke.d.ts +0 -93
- package/dist/index-DZ5iJtNO.d.mts +0 -102
- package/dist/index-DZ5iJtNO.d.ts +0 -102
- package/dist/index-Da7qdkgW.d.ts +0 -20
- package/dist/index-DrPcMJPc.d.mts +0 -250
- package/dist/index-DrPcMJPc.d.ts +0 -250
- package/dist/index-WrR57hKT.d.ts +0 -67
- package/dist/index-oLUvfqT8.d.ts +0 -20
- package/dist/index-pe38RDgC.d.mts +0 -20
- package/dist/index-qcOvRVuN.d.mts +0 -81
- package/dist/index.d.mts +0 -11590
- package/dist/index.d.ts +0 -11590
- package/dist/index.js +0 -17679
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -17403
- package/dist/index.mjs.map +0 -1
- package/dist/logger/index.d.mts +0 -125
- package/dist/logger/index.d.ts +0 -125
- package/dist/logger/index.js +0 -29
- package/dist/logger/index.mjs +0 -4
- package/dist/mikuContest/ui/web/index.d.mts +0 -2
- package/dist/mikuContest/ui/web/index.d.ts +0 -2
- package/dist/mikuContest/ui/web/index.js +0 -353
- package/dist/mikuContest/ui/web/index.js.map +0 -1
- package/dist/mikuContest/ui/web/index.mjs +0 -343
- package/dist/mikuContest/ui/web/index.mjs.map +0 -1
- package/dist/mikuFireworks3D/index.d.mts +0 -268
- package/dist/mikuFireworks3D/index.d.ts +0 -268
- package/dist/mikuFireworks3D/index.js +0 -1267
- package/dist/mikuFireworks3D/index.js.map +0 -1
- package/dist/mikuFireworks3D/index.mjs +0 -1228
- package/dist/mikuFireworks3D/index.mjs.map +0 -1
- package/dist/mikuFusionGame/index.d.mts +0 -117
- package/dist/mikuFusionGame/index.d.ts +0 -117
- package/dist/mikuFusionGame/index.js +0 -1208
- package/dist/mikuFusionGame/index.js.map +0 -1
- package/dist/mikuFusionGame/index.mjs +0 -1195
- package/dist/mikuFusionGame/index.mjs.map +0 -1
- package/dist/mmd/admin/index.d.mts +0 -487
- package/dist/mmd/admin/index.d.ts +0 -487
- package/dist/mmd/admin/index.js +0 -1058
- package/dist/mmd/admin/index.js.map +0 -1
- package/dist/mmd/admin/index.mjs +0 -1027
- package/dist/mmd/admin/index.mjs.map +0 -1
- package/dist/mmd/index.d.mts +0 -2467
- package/dist/mmd/index.d.ts +0 -2467
- package/dist/mmd/index.js +0 -10119
- package/dist/mmd/index.js.map +0 -1
- package/dist/mmd/index.mjs +0 -10028
- package/dist/mmd/index.mjs.map +0 -1
- package/dist/mmd/server/index.d.mts +0 -139
- package/dist/mmd/server/index.d.ts +0 -139
- package/dist/mmd/server/index.js +0 -424
- package/dist/mmd/server/index.js.map +0 -1
- package/dist/mmd/server/index.mjs +0 -404
- package/dist/mmd/server/index.mjs.map +0 -1
- package/dist/music/index.d.mts +0 -74
- package/dist/music/index.d.ts +0 -74
- package/dist/music/index.js +0 -830
- package/dist/music/index.js.map +0 -1
- package/dist/music/index.mjs +0 -809
- package/dist/music/index.mjs.map +0 -1
- package/dist/music/server/index.d.mts +0 -1
- package/dist/music/server/index.d.ts +0 -1
- package/dist/music/server/index.js +0 -194
- package/dist/music/server/index.js.map +0 -1
- package/dist/music/server/index.mjs +0 -182
- package/dist/music/server/index.mjs.map +0 -1
- package/dist/navigation/index.d.mts +0 -93
- package/dist/navigation/index.d.ts +0 -93
- package/dist/navigation/index.js +0 -453
- package/dist/navigation/index.js.map +0 -1
- package/dist/navigation/index.mjs +0 -443
- package/dist/navigation/index.mjs.map +0 -1
- package/dist/ossFile/index.d.mts +0 -61
- package/dist/ossFile/index.d.ts +0 -61
- package/dist/ossFile/index.js +0 -96
- package/dist/ossFile/index.js.map +0 -1
- package/dist/ossFile/index.mjs +0 -7
- package/dist/ossFile/index.mjs.map +0 -1
- package/dist/ossFile/server/index.d.mts +0 -94
- package/dist/ossFile/server/index.d.ts +0 -94
- package/dist/ossFile/server/index.js +0 -213
- package/dist/ossFile/server/index.js.map +0 -1
- package/dist/ossFile/server/index.mjs +0 -12
- package/dist/ossFile/server/index.mjs.map +0 -1
- package/dist/path-DkaHQSyW.d.mts +0 -41
- package/dist/path-qjVnH8qU.d.ts +0 -41
- package/dist/portfolio/index.d.mts +0 -66
- package/dist/portfolio/index.d.ts +0 -66
- package/dist/portfolio/index.js +0 -736
- package/dist/portfolio/index.js.map +0 -1
- package/dist/portfolio/index.mjs +0 -724
- package/dist/portfolio/index.mjs.map +0 -1
- package/dist/qqbot/server/index.d.mts +0 -216
- package/dist/qqbot/server/index.d.ts +0 -216
- package/dist/qqbot/server/index.js +0 -394
- package/dist/qqbot/server/index.js.map +0 -1
- package/dist/qqbot/server/index.mjs +0 -385
- package/dist/qqbot/server/index.mjs.map +0 -1
- package/dist/qqbot/ui/web/index.d.mts +0 -10
- package/dist/qqbot/ui/web/index.d.ts +0 -10
- package/dist/qqbot/ui/web/index.js +0 -105
- package/dist/qqbot/ui/web/index.js.map +0 -1
- package/dist/qqbot/ui/web/index.mjs +0 -99
- package/dist/qqbot/ui/web/index.mjs.map +0 -1
- package/dist/request/index.d.mts +0 -59
- package/dist/request/index.d.ts +0 -59
- package/dist/request/index.js +0 -23
- package/dist/request/index.js.map +0 -1
- package/dist/request/index.mjs +0 -6
- package/dist/request/index.mjs.map +0 -1
- package/dist/screenReceiver/index.d.mts +0 -86
- package/dist/screenReceiver/index.d.ts +0 -86
- package/dist/screenReceiver/index.js +0 -281
- package/dist/screenReceiver/index.js.map +0 -1
- package/dist/screenReceiver/index.mjs +0 -273
- package/dist/screenReceiver/index.mjs.map +0 -1
- package/dist/session-BCXvGCnm.d.mts +0 -81
- package/dist/session-BCXvGCnm.d.ts +0 -81
- package/dist/storage/index.d.mts +0 -136
- package/dist/storage/index.d.ts +0 -136
- package/dist/storage/index.js +0 -48
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/index.mjs +0 -7
- package/dist/storage/index.mjs.map +0 -1
- package/dist/testYourself/admin/index.d.mts +0 -58
- package/dist/testYourself/admin/index.d.ts +0 -58
- package/dist/testYourself/admin/index.js +0 -1009
- package/dist/testYourself/admin/index.js.map +0 -1
- package/dist/testYourself/admin/index.mjs +0 -1002
- package/dist/testYourself/admin/index.mjs.map +0 -1
- package/dist/testYourself/index.d.mts +0 -53
- package/dist/testYourself/index.d.ts +0 -53
- package/dist/testYourself/index.js +0 -2551
- package/dist/testYourself/index.js.map +0 -1
- package/dist/testYourself/index.mjs +0 -2531
- package/dist/testYourself/index.mjs.map +0 -1
- package/dist/testYourself/server/index.d.mts +0 -1029
- package/dist/testYourself/server/index.d.ts +0 -1029
- package/dist/testYourself/server/index.js +0 -825
- package/dist/testYourself/server/index.js.map +0 -1
- package/dist/testYourself/server/index.mjs +0 -816
- package/dist/testYourself/server/index.mjs.map +0 -1
- package/dist/types-3ujSNAXb.d.mts +0 -286
- package/dist/types-3ujSNAXb.d.ts +0 -286
- package/dist/types-B6B210gX.d.mts +0 -270
- package/dist/types-B6B210gX.d.ts +0 -270
- package/dist/types-Bdnte5EN.d.mts +0 -292
- package/dist/types-C_W_CoUD.d.ts +0 -99
- package/dist/types-Cs0CLvrH.d.mts +0 -70
- package/dist/types-Cs0CLvrH.d.ts +0 -70
- package/dist/types-DCRvasyH.d.mts +0 -99
- package/dist/types-HorDyIRv.d.mts +0 -303
- package/dist/types-HorDyIRv.d.ts +0 -303
- package/dist/types-_rFX1atk.d.ts +0 -292
- package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
- package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
- package/dist/universalExport/index.d.mts +0 -312
- package/dist/universalExport/index.d.ts +0 -312
- package/dist/universalExport/index.js +0 -178
- package/dist/universalExport/index.js.map +0 -1
- package/dist/universalExport/index.mjs +0 -5
- package/dist/universalExport/index.mjs.map +0 -1
- package/dist/universalExport/server/index.d.mts +0 -1270
- package/dist/universalExport/server/index.d.ts +0 -1270
- package/dist/universalExport/server/index.js +0 -123
- package/dist/universalExport/server/index.js.map +0 -1
- package/dist/universalExport/server/index.mjs +0 -6
- package/dist/universalExport/server/index.mjs.map +0 -1
- package/dist/universalFile/index.d.mts +0 -409
- package/dist/universalFile/index.d.ts +0 -409
- package/dist/universalFile/index.js +0 -1742
- package/dist/universalFile/index.js.map +0 -1
- package/dist/universalFile/index.mjs +0 -1497
- package/dist/universalFile/index.mjs.map +0 -1
- package/dist/universalFile/server/index.d.mts +0 -1064
- package/dist/universalFile/server/index.d.ts +0 -1064
- package/dist/universalFile/server/index.js +0 -311
- package/dist/universalFile/server/index.js.map +0 -1
- package/dist/universalFile/server/index.mjs +0 -10
- package/dist/universalFile/server/index.mjs.map +0 -1
- package/dist/utils/index.d.mts +0 -192
- package/dist/utils/index.d.ts +0 -192
- package/dist/utils/index.js +0 -46
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/index.mjs +0 -5
- package/dist/utils/index.mjs.map +0 -1
- package/dist/vocaloidBooth/index.d.mts +0 -64
- package/dist/vocaloidBooth/index.d.ts +0 -64
- package/dist/vocaloidBooth/index.js +0 -376
- package/dist/vocaloidBooth/index.js.map +0 -1
- package/dist/vocaloidBooth/index.mjs +0 -362
- package/dist/vocaloidBooth/index.mjs.map +0 -1
- package/dist/vocaloidBooth/server/index.d.mts +0 -111
- package/dist/vocaloidBooth/server/index.d.ts +0 -111
- package/dist/vocaloidBooth/server/index.js +0 -247
- package/dist/vocaloidBooth/server/index.js.map +0 -1
- package/dist/vocaloidBooth/server/index.mjs +0 -237
- package/dist/vocaloidBooth/server/index.mjs.map +0 -1
- package/dist/vocaloidBooth/web/index.d.mts +0 -3
- package/dist/vocaloidBooth/web/index.d.ts +0 -3
- package/dist/vocaloidBooth/web/index.js +0 -376
- package/dist/vocaloidBooth/web/index.js.map +0 -1
- package/dist/vocaloidBooth/web/index.mjs +0 -362
- package/dist/vocaloidBooth/web/index.mjs.map +0 -1
- /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
- /package/dist/{analytics → common/analytics}/index.js.map +0 -0
- /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
- /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
- /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
- /package/dist/{api → common/api}/index.js.map +0 -0
- /package/dist/{api → common/api}/index.mjs.map +0 -0
- /package/dist/{auth/client → common/components}/index.js.map +0 -0
- /package/dist/{auth/client → common/components}/index.mjs.map +0 -0
- /package/dist/{auth/components → common/config}/index.js.map +0 -0
- /package/dist/{auth/components → common/config}/index.mjs.map +0 -0
- /package/dist/{config → common/config}/server/index.d.mts +0 -0
- /package/dist/{config → common/config}/server/index.d.ts +0 -0
- /package/dist/{auth/hooks → common/i18n}/index.js.map +0 -0
- /package/dist/{auth/hooks → common/i18n}/index.mjs.map +0 -0
- /package/dist/{auth → common/imageCrop}/index.js.map +0 -0
- /package/dist/{auth → common/imageCrop}/index.mjs.map +0 -0
- /package/dist/{auth/schema → common/ossFile}/index.js.map +0 -0
- /package/dist/{auth/schema → common/ossFile}/index.mjs.map +0 -0
- /package/dist/{auth/services → common/ossFile/server}/index.js.map +0 -0
- /package/dist/{auth/services → common/ossFile/server}/index.mjs.map +0 -0
- /package/dist/{config → common/universalExport}/index.js.map +0 -0
- /package/dist/{config → common/universalExport}/index.mjs.map +0 -0
- /package/dist/{i18n → common/universalExport/server}/index.js.map +0 -0
- /package/dist/{i18n → common/universalExport/server}/index.mjs.map +0 -0
- /package/dist/{logger → common/universalFile/server}/index.js.map +0 -0
- /package/dist/{logger → common/universalFile/server}/index.mjs.map +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/audioDetection/core/AudioInputService.ts","../../src/audioDetection/core/PitchDetector.ts","../../src/audioDetection/core/ChordRecognizer.ts","../../src/audioDetection/core/AudioDetector.ts","../../src/audioDetection/core/AudioDetectorDebugger.ts","../../src/audioDetection/hooks/useAudioDetection.ts","../../src/audioDetection/components/AudioDetectionDisplay.tsx","../../src/audioDetection/components/PianoKeyboard.tsx"],"names":["useState","useRef","useEffect","useCallback","error","React","clsx","useMemo","blackKeys"],"mappings":";;;;;;;;;;AAUO,IAAM,oBAAN,MAAwB;AAAA,EAQ7B,WAAA,CAAY,MAAA,GAA2B,EAAC,EAAG;AAP3C,IAAA,IAAA,CAAQ,YAAA,GAAoC,IAAA;AAC5C,IAAA,IAAA,CAAQ,WAAA,GAAkC,IAAA;AAC1C,IAAA,IAAA,CAAQ,UAAA,GAAgD,IAAA;AACxD,IAAA,IAAA,CAAQ,YAAA,GAAoC,IAAA;AAC5C,IAAA,IAAA,CAAQ,KAAA,GAAyB,MAAA;AAI/B,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACZ,UAAA,EAAY,OAAO,UAAA,IAAc,KAAA;AAAA,MACjC,OAAA,EAAS,OAAO,OAAA,IAAW,IAAA;AAAA,MAC3B,SAAA,EAAW,OAAO,SAAA,IAAa,IAAA;AAAA;AAAA,MAC/B,aAAA,EAAe,OAAO,aAAA,IAAiB,GAAA;AAAA;AAAA,MACvC,SAAA,EAAW,OAAO,SAAA,IAAa,GAAA;AAAA,MAC/B,gBAAgB,MAAA,CAAO,cAAA,IAAkB,EAAE,GAAA,EAAK,IAAA,EAAM,KAAK,IAAA;AAAK;AAAA,KAClE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,IAAA,CAAK,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAA,CAAQ,KAAK,oEAA4B,CAAA;AACzC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,SAAS,cAAc,CAAA;AAG5B,MAAA,IAAA,CAAK,WAAA,GAAc,MAAM,SAAA,CAAU,YAAA,CAAa,YAAA,CAAa;AAAA,QAC3D,KAAA,EAAO;AAAA,UACL,gBAAA,EAAkB,KAAA;AAAA,UAClB,gBAAA,EAAkB,KAAA;AAAA,UAClB,eAAA,EAAiB,KAAA;AAAA,UACjB,UAAA,EAAY,KAAK,MAAA,CAAO;AAAA;AAC1B,OACD,CAAA;AAGD,MAAA,IAAA,CAAK,YAAA,GAAe,IAAI,YAAA,CAAa;AAAA,QACnC,UAAA,EAAY,KAAK,MAAA,CAAO;AAAA,OACzB,CAAA;AAGD,MAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,uBAAA,CAAwB,KAAK,WAAW,CAAA;AAG5E,MAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,cAAA,EAAe;AACrD,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,OAAA;AACxC,MAAA,IAAA,CAAK,YAAA,CAAa,qBAAA,GAAwB,IAAA,CAAK,MAAA,CAAO,SAAA;AAGtD,MAAA,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAK,YAAY,CAAA;AAEzC,MAAA,IAAA,CAAK,SAAS,QAAQ,CAAA;AACtB,MAAA,OAAA,CAAQ,IAAI,kDAAyB,CAAA;AAAA,IACvC,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AACrB,MAAA,OAAA,CAAQ,KAAA,CAAM,qDAA4B,KAAK,CAAA;AAC/C,MAAA,MAAM,IAAI,KAAA,CAAM,oDAAA,IAAgB,iBAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,0BAAA,CAAO,CAAA;AAAA,IAClF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAA,GAAkC;AAChC,IAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,MAAA,MAAM,IAAI,MAAM,uCAAmB,CAAA;AAAA,IACrC;AAEA,IAAA,MAAM,YAAA,GAAe,KAAK,YAAA,CAAa,OAAA;AACvC,IAAA,MAAM,SAAA,GAAY,IAAI,YAAA,CAAa,YAAY,CAAA;AAC/C,IAAA,IAAA,CAAK,YAAA,CAAa,uBAAuB,SAAS,CAAA;AAClD,IAAA,OAAO,SAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAA,GAAiC;AAC/B,IAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,MAAA,MAAM,IAAI,MAAM,uCAAmB,CAAA;AAAA,IACrC;AAEA,IAAA,MAAM,YAAA,GAAe,KAAK,YAAA,CAAa,iBAAA;AACvC,IAAA,MAAM,SAAA,GAAY,IAAI,YAAA,CAAa,YAAY,CAAA;AAC/C,IAAA,IAAA,CAAK,YAAA,CAAa,sBAAsB,SAAS,CAAA;AACjD,IAAA,OAAO,SAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAA,GAA2B;AACzB,IAAA,MAAM,cAAA,GAAiB,KAAK,iBAAA,EAAkB;AAC9C,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,QAAQ,CAAA,EAAA,EAAK;AAC9C,MAAA,MAAM,GAAA,GAAM,eAAe,CAAC,CAAA;AAC5B,MAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,QAAA,GAAA,IAAO,GAAA,GAAM,GAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,cAAA,CAAe,MAAM,CAAA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAA,GAAa;AACX,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,IAAA,CAAK,YAAY,SAAA,EAAU,CAAE,QAAQ,CAAA,KAAA,KAAS,KAAA,CAAM,MAAM,CAAA;AAC1D,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,IACrB;AAEA,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,IAAA,CAAK,WAAW,UAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAAA,IACpB;AAEA,IAAA,IAAI,KAAK,YAAA,EAAc;AACrB,MAAA,IAAA,CAAK,aAAa,UAAA,EAAW;AAC7B,MAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AAAA,IACtB;AAEA,IAAA,IAAI,KAAK,YAAA,EAAc;AACrB,MAAA,IAAA,CAAK,aAAa,KAAA,EAAM;AACxB,MAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AAAA,IACtB;AAEA,IAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AACvB,IAAA,OAAA,CAAQ,IAAI,sCAAuB,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA,GAAwC;AACtC,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,MAAA,EAAO;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAA,GAAuC;AACrC,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAA,GAAuC;AACrC,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,SAAS,KAAA,EAA8B;AAC7C,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA,GAAqB;AACnB,IAAA,OAAO,KAAK,KAAA,KAAU,QAAA;AAAA,EACxB;AACF;;;AC7LO,IAAM,cAAA,GAAN,MAAM,cAAA,CAAc;AAAA,EAQzB,YAAY,UAAA,GAAqB,KAAA,EAAO,YAAA,GAAuB,IAAA,EAAM,eAAuB,IAAA,EAAM;AAChG,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,CAAY,WAAA,EAA2B,SAAA,GAAoB,IAAA,EAAqB;AAE9E,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,YAAA,CAAa,WAAW,CAAA;AAC5C,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,aAAA,CAAc,WAAW,CAAA;AAEhD,IAAA,IAAI,cAAc,EAAA,IAAM,SAAA,GAAY,KAAK,YAAA,IAAgB,SAAA,GAAY,KAAK,YAAA,EAAc;AACtF,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,SAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,cAAc,MAAA,EAA8B;AAClD,IAAA,MAAM,OAAO,MAAA,CAAO,MAAA;AACpB,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,CAAC,CAAA;AACvC,IAAA,IAAI,WAAA,GAAc,EAAA;AAClB,IAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,IAAA,IAAI,GAAA,GAAM,CAAA;AAGV,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAC7B,MAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,MAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,QAAA,GAAA,IAAO,GAAA,GAAM,GAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,IAAI,CAAA;AAG1B,IAAA,IAAI,MAAM,IAAA,EAAM;AACd,MAAA,OAAO,EAAA;AAAA,IACT;AAGA,IAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,IAAA,KAAA,IAAS,MAAA,GAAS,CAAA,EAAG,MAAA,GAAS,WAAA,EAAa,MAAA,EAAA,EAAU;AACnD,MAAA,IAAI,WAAA,GAAc,CAAA;AAElB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,EAAa,CAAA,EAAA,EAAK;AACpC,QAAA,MAAM,IAAA,GAAO,OAAO,CAAC,CAAA;AACrB,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,CAAA,GAAI,MAAM,CAAA;AAC9B,QAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,MAAA,EAAW;AAC5C,UAAA,WAAA,IAAe,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,IAAI,CAAA;AAAA,QACrC;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,IAAI,WAAA,GAAc,WAAA;AAEhC,MAAA,IAAI,WAAA,GAAc,GAAA,IAAO,WAAA,GAAc,eAAA,EAAiB;AACtD,QAAA,MAAM,uBAAuB,WAAA,GAAc,gBAAA;AAC3C,QAAA,IAAI,oBAAA,EAAsB;AACxB,UAAA,gBAAA,GAAmB,WAAA;AACnB,UAAA,WAAA,GAAc,MAAA;AAAA,QAChB;AAAA,MACF;AAEA,MAAA,eAAA,GAAkB,WAAA;AAAA,IACpB;AAEA,IAAA,IAAI,gBAAA,GAAmB,IAAA,IAAQ,WAAA,KAAgB,EAAA,EAAI;AAEjD,MAAA,MAAM,SAAA,GAAY,KAAK,UAAA,GAAa,WAAA;AACpC,MAAA,OAAO,SAAA;AAAA,IACT;AAEA,IAAA,OAAO,EAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAa,MAAA,EAA8B;AACjD,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,MAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,MAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,QAAA,GAAA,IAAO,GAAA,GAAM,GAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,MAAA,CAAO,MAAM,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAA,CAAgB,SAAA,EAAmB,MAAA,GAAiB,CAAA,EAAoB;AACtE,IAAA,IAAI,aAAa,CAAA,EAAG;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,IAAA,GAAO,KAAK,KAAA,CAAM,EAAA,GAAK,KAAK,IAAA,CAAK,SAAA,GAAY,GAAG,CAAA,GAAI,EAAE,CAAA;AAE5D,IAAA,IAAI,IAAA,GAAO,CAAA,IAAK,IAAA,GAAO,GAAA,EAAK;AAC1B,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,YAAY,IAAA,GAAO,EAAA;AACzB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,EAAE,CAAA,GAAI,CAAA;AACvC,IAAA,MAAM,QAAA,GAAW,cAAA,CAAc,UAAA,CAAW,SAAS,CAAA,IAAK,GAAA;AACxD,IAAA,MAAM,OAAQ,QAAA,GAAa,MAAA;AAG3B,IAAA,MAAM,oBAAoB,GAAA,GAAM,IAAA,CAAK,IAAI,CAAA,EAAA,CAAI,IAAA,GAAO,MAAM,EAAE,CAAA;AAC5D,IAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,YAAY,iBAAiB,CAAA;AAC5D,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,CAAI,CAAA,EAAG,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,EAAE,CAAA;AAEvD,IAAA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAA,CAAwB,aAAA,EAA6B,SAAA,GAAoB,GAAA,EAAoB;AAC3F,IAAA,MAAM,OAAA,GAAU,KAAK,UAAA,GAAa,CAAA;AAClC,IAAA,MAAM,QAAA,GAAW,UAAU,aAAA,CAAc,MAAA;AAEzC,IAAA,IAAI,QAAA,GAAW,EAAA;AACf,IAAA,IAAI,QAAA,GAAW,CAAA,QAAA;AAGf,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,eAAe,QAAQ,CAAA;AACtD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,eAAe,QAAQ,CAAA;AAErD,IAAA,KAAA,IAAS,CAAA,GAAI,QAAQ,CAAA,GAAI,IAAA,CAAK,IAAI,MAAA,EAAQ,aAAA,CAAc,MAAM,CAAA,EAAG,CAAA,EAAA,EAAK;AACpE,MAAA,MAAM,KAAA,GAAQ,cAAc,CAAC,CAAA;AAC7B,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,GAAQ,QAAA,IAAY,QAAQ,SAAA,EAAW;AAChE,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,QAAA,GAAW,CAAA;AAAA,MACb;AAAA,IACF;AAEA,IAAA,IAAI,aAAa,EAAA,EAAI;AACnB,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,sBAAA,CAAuB,aAAA,EAAe,UAAU,QAAQ,CAAA;AAE/E,IAAA,OAAO,SAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,sBAAA,CAAuB,IAAA,EAAoB,KAAA,EAAe,QAAA,EAA0B;AAC1F,IAAA,IAAI,KAAA,IAAS,CAAA,IAAK,KAAA,IAAS,IAAA,CAAK,SAAS,CAAA,EAAG;AAC1C,MAAA,OAAO,KAAA,GAAQ,QAAA;AAAA,IACjB;AAEA,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA;AACzB,IAAA,MAAM,EAAA,GAAK,KAAK,KAAK,CAAA;AACrB,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA;AAEzB,IAAA,IAAI,EAAA,KAAO,MAAA,IAAa,EAAA,KAAO,MAAA,IAAa,OAAO,MAAA,EAAW;AAC5D,MAAA,OAAO,KAAA,GAAQ,QAAA;AAAA,IACjB;AAEA,IAAA,MAAM,QAAQ,GAAA,IAAO,EAAA,GAAK,EAAA,CAAA,IAAO,CAAA,GAAI,KAAK,EAAA,GAAK,EAAA,CAAA;AAC/C,IAAA,MAAM,oBAAoB,KAAA,GAAQ,KAAA;AAElC,IAAA,OAAO,iBAAA,GAAoB,QAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAA,CAAsB,aAAA,EAA6B,SAAA,GAAoB,GAAA,EAAiB;AACtF,IAAA,MAAM,QAAoB,EAAC;AAC3B,IAAA,MAAM,OAAA,GAAU,KAAK,UAAA,GAAa,CAAA;AAClC,IAAA,MAAM,QAAA,GAAW,UAAU,aAAA,CAAc,MAAA;AAGzC,IAAA,MAAM,QAA4C,EAAC;AAEnD,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACjD,MAAA,MAAM,OAAO,CAAA,GAAI,QAAA;AACjB,MAAA,IAAI,IAAA,GAAO,IAAA,CAAK,YAAA,IAAgB,IAAA,GAAO,KAAK,YAAA,EAAc;AACxD,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,KAAA,GAAQ,cAAc,CAAC,CAAA;AAC7B,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,GAAQ,SAAA,IAC/B,SAAS,aAAA,CAAc,CAAA,GAAI,CAAC,CAAA,IAAK,cACjC,KAAA,IAAS,aAAA,CAAc,CAAA,GAAI,CAAC,KAAK,CAAA,QAAA,CAAA,EAAY;AAC/C,QAAA,KAAA,CAAM,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA;AAAA,MAChC;AAAA,IACF;AAGA,IAAA,KAAA,CAAM,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAK,CAAA;AACtC,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAGjC,IAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,MAAA,MAAM,YAAY,IAAA,CAAK,sBAAA,CAAuB,aAAA,EAAe,IAAA,CAAK,OAAO,QAAQ,CAAA;AAGjF,MAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,QAAQ,EAAE,CAAA;AAE3C,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AACnD,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,MACjB;AAAA,IACF;AAEA,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA;AAAA;AAzPa,cAAA,CAMa,UAAA,GAAa,CAAC,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,MAAM,GAAG,CAAA;AANhG,IAAM,aAAA,GAAN;;;ACMA,IAAM,gBAAA,GAAN,MAAM,gBAAA,CAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,EAkC3B,eAAe,KAAA,EAAqC;AAClD,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,WAAA,GAAc,CAAC,GAAG,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE,IAAI,CAAA;AAG7D,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,oBAAA,CAAqB,WAAW,CAAA;AAE/D,IAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,IAAI,SAAA,GAAgF,IAAA;AAEpF,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AACjD,MAAA,MAAM,IAAA,GAAO,kBAAkB,CAAC,CAAA;AAChC,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,kBAAA,CAAmB,IAAA,EAAM,iBAAiB,CAAA;AAGjE,MAAA,KAAA,MAAW,OAAA,IAAW,iBAAgB,cAAA,EAAgB;AACpD,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,SAAA,EAAW,QAAQ,SAAS,CAAA;AAEjE,QAAA,IAAI,aAAa,GAAA,KAAQ,CAAC,SAAA,IAAa,UAAA,GAAa,UAAU,UAAA,CAAA,EAAa;AACzE,UAAA,SAAA,GAAY,EAAE,IAAA,EAAM,OAAA,EAAS,UAAA,EAAW;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,YAAa,SAAA,CAAU,IAAA,GAAS,IAAA,CAAK,cAAA,CAAe,UAAU,OAAO,CAAA;AAE3E,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,MAAM,SAAA,CAAU,IAAA;AAAA,MAChB,IAAA,EAAM,UAAU,OAAA,CAAQ,IAAA;AAAA,MACxB,KAAA,EAAO,WAAA;AAAA,MACP,YAAY,SAAA,CAAU;AAAA,KACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,qBAAqB,KAAA,EAA6B;AACxD,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAChC,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,QAAQ,CAAA;AAAA,IAC3B;AACA,IAAA,OAAO,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,kBAAA,CAAmB,MAAc,WAAA,EAAiC;AACxE,IAAA,MAAM,SAAA,GAAY,gBAAA,CAAgB,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA;AACzD,IAAA,MAAM,YAAsB,EAAC;AAE7B,IAAA,KAAA,MAAW,aAAa,WAAA,EAAa;AACnC,MAAA,MAAM,SAAA,GAAY,gBAAA,CAAgB,UAAA,CAAW,OAAA,CAAQ,SAAS,CAAA;AAC9D,MAAA,IAAI,QAAA,GAAA,CAAY,SAAA,GAAY,SAAA,GAAY,EAAA,IAAM,EAAA;AAC9C,MAAA,SAAA,CAAU,KAAK,QAAQ,CAAA;AAAA,IACzB;AAEA,IAAA,OAAO,UAAU,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,YAAA,CAAa,WAAqB,OAAA,EAA2B;AACnE,IAAA,IAAI,SAAA,CAAU,MAAA,GAAS,OAAA,CAAQ,MAAA,EAAQ;AACrC,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,GAAU,CAAA;AACd,IAAA,KAAA,MAAW,mBAAmB,OAAA,EAAS;AACrC,MAAA,IAAI,SAAA,CAAU,QAAA,CAAS,eAAe,CAAA,EAAG;AACvC,QAAA,OAAA,EAAA;AAAA,MACF;AAAA,IACF;AAGA,IAAA,MAAM,SAAA,GAAY,UAAU,OAAA,CAAQ,MAAA;AACpC,IAAA,MAAM,MAAA,GAAS,UAAU,SAAA,CAAU,MAAA;AAGnC,IAAA,IAAI,SAAA,GAAY,WAAW,CAAA,EAAG;AAC5B,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,OAAQ,CAAA,GAAI,SAAA,GAAY,MAAA,IAAW,SAAA,GAAY,MAAA,CAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,eAAe,OAAA,EAA+B;AAEpD,IAAA,IAAI,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,OAAA,CAAQ,SAAS,CAAA,EAAG;AACjD,MAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,IAAK,EAAA;AAAA,IAC/B;AAGA,IAAA,MAAM,SAAA,GAAuC;AAAA,MAC3C,OAAA,EAAS,EAAA;AAAA,MACT,OAAA,EAAS,GAAA;AAAA,MACT,YAAA,EAAc,KAAA;AAAA,MACd,WAAA,EAAa,KAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAEA,IAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA,IAAK,OAAA,CAAQ,IAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAA,CAAkB,OAAiB,KAAA,EAAyB;AAC1D,IAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,MAAM,IAAA,GAAO,KAAA,CAAM,IAAI,CAAA,GAAI,EAAA;AAEtD,IAAA,MAAM,aAAA,GAA2C;AAAA,MAC/C,CAAA,EAAG,6BAAA;AAAA,MACH,CAAA,EAAG,gCAAA;AAAA,MACH,CAAA,EAAG,gCAAA;AAAA,MACH,CAAA,EAAG,gCAAA;AAAA,MACH,CAAA,EAAG,gCAAA;AAAA,MACH,CAAA,EAAG,kCAAA;AAAA,MACH,CAAA,EAAG,iDAAA;AAAA,MACH,CAAA,EAAG,kCAAA;AAAA,MACH,CAAA,EAAG,gCAAA;AAAA,MACH,CAAA,EAAG,gCAAA;AAAA,MACH,EAAA,EAAI,gCAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAEA,IAAA,OAAO,aAAA,CAAc,SAAS,CAAA,IAAK,0BAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB,KAAA,EAA0B;AAC5C,IAAA,MAAM,YAAsB,EAAC;AAE7B,IAAA,IAAI,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,EAAG;AAChC,MAAA,SAAA,CAAU,KAAK,cAAI,CAAA;AAAA,IACrB,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,EAAG;AACvC,MAAA,SAAA,CAAU,KAAK,cAAI,CAAA;AAAA,IACrB;AAEA,IAAA,IAAI,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG;AACrC,MAAA,SAAA,CAAU,KAAK,QAAG,CAAA;AAAA,IACpB,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AAC3C,MAAA,SAAA,CAAU,KAAK,QAAG,CAAA;AAAA,IACpB;AAEA,IAAA,IAAI,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5B,MAAA,SAAA,CAAU,KAAK,oBAAK,CAAA;AAAA,IACtB,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACnC,MAAA,SAAA,CAAU,KAAK,oBAAK,CAAA;AAAA,IACtB;AAEA,IAAA,IAAI,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,EAAG;AAC9B,MAAA,SAAA,CAAU,KAAK,cAAI,CAAA;AAAA,IACrB;AAEA,IAAA,OAAO,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,IAAK,0BAAA;AAAA,EAChC;AACF,CAAA;AAAA;AA3Na,gBAAA,CAEa,cAAA,GAAiC;AAAA;AAAA,EAEvD,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,OAAA,EAAS,CAAC,KAAA,EAAO,GAAG,CAAA,EAAE;AAAA,EAC7D,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,OAAA,EAAS,CAAC,KAAA,EAAO,GAAG,CAAA,EAAE;AAAA,EAC7D,EAAE,IAAA,EAAM,YAAA,EAAc,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,OAAA,EAAS,CAAC,KAAA,EAAO,MAAG,CAAA,EAAE;AAAA,EAClE,EAAE,IAAA,EAAM,WAAA,EAAa,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,OAAA,EAAS,CAAC,KAAA,EAAO,GAAG,CAAA,EAAE;AAAA,EACjE,EAAE,MAAM,MAAA,EAAQ,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAE;AAAA,EACrC,EAAE,MAAM,MAAA,EAAQ,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAE;AAAA;AAAA,EAGrC,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,IAAI,CAAA,EAAE;AAAA,EACpE,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,IAAI,CAAA,EAAE;AAAA,EACpE,EAAE,IAAA,EAAM,WAAA,EAAa,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,GAAG,CAAA,EAAE;AAAA,EAC9D,EAAE,IAAA,EAAM,aAAA,EAAe,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,OAAI,CAAA,EAAE;AAAA,EACxE,EAAE,IAAA,EAAM,kBAAA,EAAoB,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,OAAI,CAAA,EAAE;AAAA,EAC9E,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,KAAA,EAAO,SAAS,CAAA,EAAE;AAAA,EAC9E,EAAE,IAAA,EAAM,YAAA,EAAc,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,IAAI,CAAA,EAAE;AAAA;AAAA,EAGxE,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,IAAI,CAAA,EAAE;AAAA,EACxE,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,MAAA,EAAQ,IAAI,CAAA,EAAE;AAAA,EACxE,EAAE,IAAA,EAAM,WAAA,EAAa,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,GAAG,CAAA,EAAE;AAAA,EAClE,EAAE,MAAM,MAAA,EAAQ,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAE;AAAA,EACzC,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,EAAG,OAAA,EAAS,CAAC,SAAS,CAAA;AAChE,CAAA;AA1BW,gBAAA,CA4Ba,UAAA,GAAa,CAAC,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,MAAM,GAAG,CAAA;AA5BhG,IAAM,eAAA,GAAN;;;ACIA,IAAM,gBAAN,MAAoB;AAAA,EASzB,YAAY,MAAA,GAA2B,EAAC,EAAG,MAAA,GAA8B,EAAC,EAAG;AAL7E,IAAA,IAAA,CAAQ,WAAA,GAAuB,KAAA;AAC/B,IAAA,IAAA,CAAQ,gBAAA,GAAkC,IAAA;AAE1C,IAAA,IAAA,CAAQ,UAAA,GAA0C,IAAA;AAuElD;AAAA;AAAA;AAAA;AAAA,IAAA,IAAA,CAAQ,aAAa,MAAY;AAC/B,MAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,KAAK,MAAA,EAAO;AAE3B,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,UAAA,IAAA,CAAK,MAAA,CAAO,cAAc,MAAM,CAAA;AAAA,QAClC;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,+CAAY,KAAK,CAAA;AAC/B,QAAA,IAAA,CAAK,MAAA,CAAO,OAAA,GAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,MACjF;AAGA,MAAA,IAAA,CAAK,gBAAA,GAAmB,qBAAA,CAAsB,IAAA,CAAK,UAAU,CAAA;AAAA,IAC/D,CAAA;AAvFE,IAAA,IAAA,CAAK,UAAA,GAAa,IAAI,iBAAA,CAAkB,MAAM,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,CAAW,SAAA,EAAU;AAE9C,IAAA,IAAA,CAAK,gBAAgB,IAAI,aAAA;AAAA,MACvB,WAAA,CAAY,UAAA;AAAA,MACZ,YAAY,cAAA,CAAe,GAAA;AAAA,MAC3B,YAAY,cAAA,CAAe;AAAA,KAC7B;AAEA,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC3C,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,OAAA,CAAQ,KAAK,8CAAqB,CAAA;AAClC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AAEF,MAAA,MAAM,IAAA,CAAK,WAAW,UAAA,EAAW;AAGjC,MAAA,IAAA,CAAK,MAAA,CAAO,gBAAgB,QAAQ,CAAA;AAGpC,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,MAAA,IAAA,CAAK,UAAA,EAAW;AAEhB,MAAA,OAAA,CAAQ,IAAI,kCAAmB,CAAA;AAAA,IACjC,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,MAAA,CAAO,gBAAgB,OAAO,CAAA;AACnC,MAAA,IAAA,CAAK,MAAA,CAAO,OAAA,GAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAC/E,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAA,GAAa;AACX,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAEnB,IAAA,IAAI,IAAA,CAAK,qBAAqB,IAAA,EAAM;AAClC,MAAA,oBAAA,CAAqB,KAAK,gBAAgB,CAAA;AAC1C,MAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AAAA,IAC1B;AAEA,IAAA,IAAA,CAAK,WAAW,IAAA,EAAK;AACrB,IAAA,IAAA,CAAK,MAAA,CAAO,gBAAgB,SAAS,CAAA;AAErC,IAAA,OAAA,CAAQ,IAAI,kCAAmB,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BQ,MAAA,GAAsC;AAC5C,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,SAAA,EAAU;AAGzC,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,UAAA,CAAW,iBAAA,EAAkB;AAGzD,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAiB;AAGvD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAiB;AAGhD,IAAA,IAAI,IAAA,CAAK,GAAA,EAAI,GAAI,GAAA,GAAO,GAAA,EAAK;AAC3B,MAAA,OAAA,CAAQ,GAAA,CAAI,4CAAA,GAA4B,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,GAAK,kBAAA,GAAY,MAAA,CAAO,SAAA,GAAa,kBAAA,IAAY,MAAA,IAAU,MAAA,CAAO,SAAA,GAAY,8BAAU,iCAAA,CAAS,CAAA;AAAA,IAC3J;AAGA,IAAA,IAAI,MAAA,GAAS,OAAO,SAAA,EAAW;AAC7B,MAAA,OAAO;AAAA,QACL,OAAO,EAAC;AAAA,QACR,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,QACpB,WAAA,EAAa;AAAA,OACf;AAAA,IACF;AAGA,IAAA,MAAM,oBAAoB,IAAA,CAAK,aAAA,CAAc,WAAA,CAAY,cAAA,EAAgB,OAAO,SAAS,CAAA;AAGzF,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,aAAA,CAAc,qBAAA,CAAsB,eAAe,GAAG,CAAA;AAGjF,IAAA,IAAI,iBAAA,IAAqB,oBAAoB,CAAA,EAAG;AAC9C,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,aAAA,CAAc,eAAA,CAAgB,mBAAmB,MAAM,CAAA;AACjF,MAAA,IAAI,YAAA,EAAc;AAEhB,QAAA,MAAM,MAAA,GAAS,aAAA,CAAc,IAAA,CAAK,CAAA,CAAA,KAAK,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,IAAA,GAAO,YAAA,CAAa,IAAI,CAAA,GAAI,CAAC,CAAA;AAC/E,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,aAAA,CAAc,QAAQ,YAAY,CAAA;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAGA,IAAA,MAAM,gBAAgB,aAAA,CAAc,MAAA,CAAO,UAAQ,IAAA,CAAK,UAAA,IAAc,OAAO,aAAa,CAAA;AAG1F,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI,aAAA,CAAc,UAAU,CAAA,EAAG;AAC7B,MAAA,KAAA,GAAQ,IAAA,CAAK,eAAA,CAAgB,cAAA,CAAe,aAAa,CAAA,IAAK,MAAA;AAAA,IAChE;AAEA,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,aAAA;AAAA,MACP,KAAA;AAAA,MACA,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,WAAA,EAAa,cAAc,MAAA,GAAS;AAAA,KACtC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,WAAW,QAAA,EAAS;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAA,GAA6C;AAC3C,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA,GAAqB;AACnB,IAAA,OAAO,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,UAAA,CAAW,SAAA,EAAU;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAA,GAAmC;AACjC,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA,EACd;AACF;;;AC/MO,IAAM,wBAAN,MAA4B;AAAA,EAIjC,WAAA,CAAY,MAAA,GAA2B,EAAC,EAAG;AAF3C,IAAA,IAAA,CAAQ,aAAA,GAA+B,IAAA;AAGrC,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,aAAA,CAAc,MAAA,EAAQ;AAAA,MACxC,WAAA,EAAa,CAAC,MAAA,KAAW;AACvB,QAAA,IAAI,OAAO,WAAA,EAAa;AACtB,UAAA,OAAA,CAAQ,IAAI,2CAAA,EAAa,MAAA,CAAO,MAAM,GAAA,CAAI,CAAA,CAAA,KAAM,EAAE,IAAA,GAAQ,GAAA,GAAO,CAAA,CAAE,SAAA,CAAU,QAAQ,CAAC,CAAA,GAAK,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAC5G,UAAA,IAAI,OAAO,KAAA,EAAO;AAChB,YAAA,OAAA,CAAQ,GAAA,CAAI,2CAAA,EAAa,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAAA,UAC5C;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,QAAA,OAAA,CAAQ,GAAA,CAAI,uCAAY,KAAK,CAAA;AAAA,MAC/B,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,OAAA,CAAQ,KAAA,CAAM,wBAAS,KAAK,CAAA;AAAA,MAC9B;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,MAAM,IAAA,CAAK,SAAS,KAAA,EAAM;AAG1B,IAAA,IAAA,CAAK,aAAA,GAAgB,MAAA,CAAO,WAAA,CAAY,MAAM;AAC5C,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,QAAA,CAAS,aAAA,EAAc;AAC/C,MAAA,MAAM,MAAA,GAAS,WAAW,gBAAA,EAAiB;AAC3C,MAAA,MAAM,MAAA,GAAS,WAAW,SAAA,EAAU;AACpC,MAAA,MAAM,QAAA,GAAW,WAAW,eAAA,EAAgB;AAE5C,MAAA,IAAI,QAAA,EAAU;AAEZ,QAAA,MAAM,QAAA,GAAW,IAAI,YAAA,CAAa,QAAA,CAAS,iBAAiB,CAAA;AAC5D,QAAA,QAAA,CAAS,sBAAsB,QAAQ,CAAA;AAGvC,QAAA,IAAI,YAAA,GAAe,CAAA,QAAA;AACnB,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,UAAA,MAAM,GAAA,GAAM,SAAS,CAAC,CAAA;AACtB,UAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,GAAM,YAAA,EAAc;AAC3C,YAAA,YAAA,GAAe,GAAA;AAAA,UACjB;AAAA,QACF;AAEA,QAAA,OAAA,CAAQ,GAAA,CAAI;AAAA;AAAA,wBAAA,EAEJ,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAC;AAAA,8BAAA,EACrB,OAAO,SAAS;AAAA,8BAAA,EAChB,MAAA,IAAU,MAAA,CAAO,SAAA,GAAY,iCAAA,GAAW,iCAAQ;AAAA,0CAAA,EAC9C,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,wBAAA,EAC1B,OAAO,UAAU,CAAA;AAAA,qBAAA,EACf,OAAO,OAAO;AAAA,8BAAA,EACf,OAAO,SAAS;AAAA,QAAA,CACnB,CAAA;AAAA,MACH;AAAA,IACF,GAAG,GAAI,CAAA;AAAA,EACT;AAAA,EAEA,IAAA,GAAa;AACX,IAAA,IAAI,IAAA,CAAK,kBAAkB,IAAA,EAAM;AAC/B,MAAA,aAAA,CAAc,KAAK,aAAa,CAAA;AAChC,MAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAAA,IACvB;AACA,IAAA,IAAA,CAAK,SAAS,IAAA,EAAK;AAAA,EACrB;AAAA,EAEA,WAAA,GAA6B;AAC3B,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,GAKH;AACD,IAAA,OAAA,CAAQ,IAAI,yDAAe,CAAA;AAE3B,IAAA,MAAM,IAAA,CAAK,SAAS,KAAA,EAAM;AAG1B,IAAA,MAAM,UAAoB,EAAC;AAC3B,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,QAAA,CAAS,aAAA,EAAc;AAE/C,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,MAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,QAAA,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAkB,CAAA;AAAA,MAC5C,GAAG,GAAG,CAAA;AAEN,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,aAAA,CAAc,cAAc,CAAA;AAE5B,QAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,EAAG,MAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,OAAA,CAAQ,MAAA;AACnE,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,GAAG,OAAO,CAAA;AACtC,QAAA,MAAM,mBAAmB,UAAA,GAAa,IAAA;AAEtC,QAAA,OAAA,CAAQ,GAAA,CAAI;AAAA;AAAA;AAAA,8BAAA,EAGR,gBAAA,GAAmB,kBAAQ,eAAK;AAAA,8BAAA,EAChC,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAC;AAAA,8BAAA,EACxB,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAC;AAAA,8BAAA,EAAA,CACpB,UAAA,GAAa,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC;AAAA,QAAA,CAChC,CAAA;AAED,QAAA,OAAA,CAAQ;AAAA,UACN,aAAA,EAAe,IAAA;AAAA,UACf,gBAAA;AAAA,UACA,aAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,GAAG,GAAI,CAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AACF;AAGA,eAAsB,oBAAoB,MAAA,EAA2D;AACnG,EAAA,MAAM,GAAA,GAAM,IAAI,qBAAA,CAAsB,MAAM,CAAA;AAC5C,EAAA,MAAM,IAAI,KAAA,EAAM;AAChB,EAAA,OAAO,GAAA;AACT;AAEA,eAAsB,cAAA,GAAgC;AACpD,EAAA,MAAM,GAAA,GAAM,IAAI,qBAAA,EAAsB;AACtC,EAAA,MAAM,IAAI,cAAA,EAAe;AACzB,EAAA,GAAA,CAAI,IAAA,EAAK;AACX;ACpGO,SAAS,iBAAA,CAAkB,OAAA,GAAoC,EAAC,EAA4B;AACjG,EAAA,MAAM,EAAE,SAAA,GAAY,KAAA,EAAO,iBAAiB,GAAA,EAAK,GAAG,QAAO,GAAI,OAAA;AAE/D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAsC,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAA0B,MAAM,CAAA;AAC1D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,KAAK,CAAA;AAEpD,EAAA,MAAM,WAAA,GAAcC,aAA6B,IAAI,CAAA;AACrD,EAAA,MAAM,aAAA,GAAgBA,aAAe,CAAC,CAAA;AAGtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,QAAA,GAAW,IAAI,aAAA,CAAc,MAAA,EAAQ;AAAA,MACzC,WAAA,EAAa,CAAC,eAAA,KAAoB;AAEhC,QAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,QAAA,IAAI,GAAA,GAAM,aAAA,CAAc,OAAA,IAAW,cAAA,EAAgB;AACjD,UAAA,SAAA,CAAU,eAAe,CAAA;AACzB,UAAA,aAAA,CAAc,OAAA,GAAU,GAAA;AAAA,QAC1B;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,QAAA,KAAa;AAC3B,QAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,QAAA,QAAA,CAAS,GAAG,CAAA;AACZ,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAGtB,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,QAAA,CAAS,KAAA,EAAM,CAAE,KAAA,CAAM,CAAC,GAAA,KAAQ;AAC9B,QAAA,QAAA,CAAS,GAAG,CAAA;AAAA,MACd,CAAC,CAAA;AACD,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AAGA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAA,CAAS,WAAU,EAAG;AACxB,QAAA,QAAA,CAAS,IAAA,EAAK;AAAA,MAChB;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,KAAA,GAAQC,kBAAY,YAAY;AACpC,IAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AACxB,MAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,4CAAS,CAAA;AAC/B,MAAA,QAAA,CAAS,GAAG,CAAA;AACZ,MAAA,MAAM,GAAA;AAAA,IACR;AAEA,IAAA,IAAI;AACF,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,MAAM,WAAA,CAAY,QAAQ,KAAA,EAAM;AAChC,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB,SAAS,GAAA,EAAK;AACZ,MAAA,MAAMC,MAAAA,GAAQ,eAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AAChE,MAAA,QAAA,CAASA,MAAK,CAAA;AACd,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,MAAMA,MAAAA;AAAA,IACR;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,IAAA,GAAOD,kBAAY,MAAM;AAC7B,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,WAAA,CAAY,QAAQ,IAAA,EAAK;AACzB,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,WAAA,GAAcA,kBAAY,MAAM;AACpC,IAAA,OAAO,WAAA,CAAY,OAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF;AACF;ACtGO,IAAM,wBAA8D,CAAC;AAAA,EAC1E,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA,GAAgB,KAAA;AAAA,EAChB,UAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA,GAAkB,0BAAA;AAAA,EAClB,cAAA,GAAiB,0BAAA;AAAA,EACjB,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,QAAQ,KAAA,EAAO,WAAA,EAAa,OAAO,KAAA,EAAO,IAAA,EAAK,GAAI,iBAAA,CAAkB,OAAO,CAAA;AAEpF,EAAA,MAAM,eAAe,YAAY;AAC/B,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,IAAA,EAAK;AAAA,IACP,CAAA,MAAO;AACL,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,EAAM;AAAA,MACd,SAAS,GAAA,EAAK;AACZ,QAAA,OAAA,CAAQ,KAAA,CAAM,6BAAS,GAAG,CAAA;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,uBACEE,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWC,SAAA,CAAK,yBAAA,EAA2B,SAAS,CAAA,EAAA,kBAEvDD,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,YAAA;AAAA,MACT,UAAU,KAAA,KAAU,cAAA;AAAA,MACpB,SAAA,EAAWC,SAAA,CAAK,wBAAA,EAA0B,WAAA,GAAc,WAAW,EAAE;AAAA,KAAA;AAAA,IAEpE,KAAA,KAAU,cAAA,GAAiB,6BAAA,GAAY,WAAA,GAAc,cAAA,GAAiB;AAAA,GACzE,kBAEAD,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWC,SAAA,CAAK,gCAAA,EAAkC,KAAK,CAAA,EAAA,EAAG,gBAAA,EACxD,aAAA,CAAc,KAAK,CAC1B,CACF,CAAA,EAGC,KAAA,oBACCD,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA,CAAC,QAAA,EAAA,IAAA,EAAO,eAAG,CAAA,EAAS,GAAA,EAAE,KAAA,CAAM,OAC9B,CAAA,EAID,MAAA,IAAU,MAAA,CAAO,WAAA,oBAChBA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAAA,EAEZ,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA,oBACrBA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA,CAAC,IAAA,EAAA,IAAA,EAAG,uCAAO,CAAA,kBACXA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAA,EACZ,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACvBA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,KAAA,EAAO,WAAU,WAAA,EAAA,EACxB,UAAA,GAAa,UAAA,CAAW,IAAI,CAAA,mBAAIA,sBAAA,CAAA,aAAA,CAAC,kBAAA,EAAA,EAAmB,IAAA,EAAY,CACnE,CACD,CACH,CACF,CAAA,EAID,MAAA,CAAO,KAAA,oBACNA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA,CAAC,IAAA,EAAA,IAAA,EAAG,iCAAM,CAAA,EACT,WAAA,GAAc,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA,mBAAIA,sBAAA,CAAA,aAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAO,MAAA,CAAO,OAAO,CACvF,CAAA,EAID,aAAA,oBACCA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA,CAAC,IAAA,EAAA,IAAA,EAAG,2BAAK,CAAA,kBACTA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,IAAA,EAAK,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAE,CACxC,CAEJ,CAAA,EAID,WAAA,KAAgB,CAAC,MAAA,IAAU,CAAC,MAAA,CAAO,WAAA,CAAA,oBAClCA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAAA,EAA0B,kEAEzC,CAEJ,CAAA;AAEJ;AAKA,IAAM,qBAAmD,CAAC,EAAE,IAAA,EAAK,0DAC9D,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EAAA,EAAa,KAAK,IAAK,CAAA,uDACrC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAA,EAAkB,IAAA,CAAK,UAAU,OAAA,CAAQ,CAAC,GAAE,KAAG,CAAA,uDAC7D,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAA,EAAkB,sBAAA,EAAA,CACxB,KAAK,UAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA,EAAE,GAC3C,CACF,CAAA;AAMF,IAAM,mBAAA,GAAsD,CAAC,EAAE,KAAA,EAAM,0DAClE,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAA,kBACbA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAc,KAAA,CAAM,IAAK,CAAA,kBACxCA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAa,gBAAA,EAAK,KAAA,CAAM,IAAK,CAAA,kBAC5CA,sBAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EAAA,EAAc,gBAAA,EACtB,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAC7C,CAAA,uDACC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAA,EAAmB,sBAAA,EAAA,CACzB,KAAA,CAAM,UAAA,GAAa,KAAK,OAAA,CAAQ,CAAC,CAAA,EAAE,GAC5C,CACF,CAAA;AAMF,SAAS,cAAc,KAAA,EAAuB;AAC5C,EAAA,MAAM,MAAA,GAAoC;AAAA,IACxC,IAAA,EAAM,cAAA;AAAA,IACN,YAAA,EAAc,0BAAA;AAAA,IACd,MAAA,EAAQ,oBAAA;AAAA,IACR,KAAA,EAAO,cAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AACA,EAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,KAAA;AAC1B;AAKO,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACxI7B,IAAM,gBAA8C,CAAC;AAAA,EAC1D,cAAc,EAAC;AAAA,EACf,WAAA,GAAc,CAAA;AAAA,EACd,SAAA,GAAY,CAAA;AAAA,EACZ,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA,GAAgB;AAClB,CAAA,KAAM;AAEJ,EAAA,MAAM,IAAA,GAAOE,cAAQ,MAAM;AACzB,IAAA,MAAM,SAAA,GAAY,CAAC,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,MAAM,GAAG,CAAA;AAClF,IAAA,MAAMC,UAAAA,uBAAgB,GAAA,CAAI,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AACxD,IAAA,MAAM,UAAsB,EAAC;AAE7B,IAAA,KAAA,IAAS,MAAA,GAAS,WAAA,EAAa,MAAA,IAAU,SAAA,EAAW,MAAA,EAAA,EAAU;AAC5D,MAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,QAAA,MAAM,QAAQ,MAAA,GAAS,CAAA,IAAK,EAAA,GAAK,SAAA,CAAU,QAAQ,QAAQ,CAAA;AAC3D,QAAA,MAAM,WAAW,WAAA,CAAY,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,IAAI,CAAA;AAE5D,QAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,UACX,QAAA;AAAA,UACA,MAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA,EAASA,UAAAA,CAAU,GAAA,CAAI,QAAQ,CAAA;AAAA,UAC/B;AAAA,SACD,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAA,EAAa,SAAA,EAAW,WAAW,CAAC,CAAA;AAGxC,EAAA,MAAM,YAAY,IAAA,CAAK,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,EAAE,OAAO,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA;AAE5C,EAAA,uBACEH,sBAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWC,SAAAA,CAAK,gBAAA,EAAkB,SAAS,CAAA,EAAA,kBAC9CD,sBAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAA,kBAEbA,sBAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAA,EACZ,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,EAAK,KAAA,qBACnBA,sBAAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,WAAY,GAAA,CAAI,IAAA;AAAA,MACrB,WAAWC,SAAAA,CAAK,qBAAA,EAAuB,GAAA,CAAI,QAAA,GAAW,WAAW,EAAE,CAAA;AAAA,MACnE,KAAA,EAAQ,GAAA,CAAI,QAAA,GAAa,GAAA,CAAI;AAAA,KAAA;AAAA,IAE5B,aAAA,oBACCD,sBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EAAA,EAAa,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,MAAO;AAAA,GAG3D,CACH,CAAA,kBAGAA,sBAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAA,EACZ,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,KAAQ;AAEtB,IAAA,MAAM,aAAA,GAAgB,2BAAA,CAA4B,GAAA,CAAI,QAAQ,CAAA;AAC9D,IAAA,MAAM,YAAA,GAAA,CAAgB,GAAA,CAAI,MAAA,GAAS,WAAA,IAAe,CAAA;AAClD,IAAA,MAAM,WAAW,aAAA,GAAgB,YAAA;AAEjC,IAAA,uBACEA,sBAAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAY,GAAA,CAAI,IAAA;AAAA,QACrB,WAAWC,SAAAA,CAAK,qBAAA,EAAuB,GAAA,CAAI,QAAA,GAAW,WAAW,EAAE,CAAA;AAAA,QACnE,KAAA,EAAO,EAAE,IAAA,EAAA,CAAQ,QAAA,GAAW,QAAQ,GAAA,GAAM,SAAA,CAAU,UAAW,GAAA,EAAI;AAAA,QACnE,KAAA,EAAQ,GAAA,CAAI,QAAA,GAAa,GAAA,CAAI;AAAA,OAAA;AAAA,MAE5B,aAAA,oBACCD,sBAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EAAA,EAAa,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,MAAO;AAAA,KAE1D;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CAAA;AAEJ;AAKA,SAAS,4BAA4B,QAAA,EAA0B;AAC7D,EAAA,MAAM,GAAA,GAAiC;AAAA,IACrC,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AACA,EAAA,OAAO,GAAA,CAAI,QAAQ,CAAA,IAAK,CAAA;AAC1B;AAKO,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA","file":"index.js","sourcesContent":["/**\n * 音频输入服务\n * Audio Input Service\n * \n * 负责管理麦克风输入和音频流处理\n * Manages microphone input and audio stream processing\n */\n\nimport type { AudioInputConfig, AudioInputState } from '../types';\n\nexport class AudioInputService {\n private audioContext: AudioContext | null = null;\n private mediaStream: MediaStream | null = null;\n private sourceNode: MediaStreamAudioSourceNode | null = null;\n private analyserNode: AnalyserNode | null = null;\n private state: AudioInputState = 'idle';\n private config: Required<AudioInputConfig>;\n\n constructor(config: AudioInputConfig = {}) {\n this.config = {\n sampleRate: config.sampleRate ?? 44100,\n fftSize: config.fftSize ?? 4096,\n minVolume: config.minVolume ?? 0.001, // 降低默认阈值,使其更敏感\n minConfidence: config.minConfidence ?? 0.5, // 降低默认置信度,更容易检测\n smoothing: config.smoothing ?? 0.8,\n frequencyRange: config.frequencyRange ?? { min: 27.5, max: 4186 }, // A0 到 C8\n };\n }\n\n /**\n * 初始化音频输入\n * Initialize audio input\n */\n async initialize(): Promise<void> {\n if (this.state === 'active') {\n console.warn('AudioInputService 已经处于活动状态');\n return;\n }\n\n try {\n this.setState('initializing');\n\n // 请求麦克风权限\n this.mediaStream = await navigator.mediaDevices.getUserMedia({\n audio: {\n echoCancellation: false,\n noiseSuppression: false,\n autoGainControl: false,\n sampleRate: this.config.sampleRate,\n },\n });\n\n // 创建音频上下文\n this.audioContext = new AudioContext({\n sampleRate: this.config.sampleRate,\n });\n\n // 创建音频源节点\n this.sourceNode = this.audioContext.createMediaStreamSource(this.mediaStream);\n\n // 创建分析器节点\n this.analyserNode = this.audioContext.createAnalyser();\n this.analyserNode.fftSize = this.config.fftSize;\n this.analyserNode.smoothingTimeConstant = this.config.smoothing;\n\n // 连接节点\n this.sourceNode.connect(this.analyserNode);\n\n this.setState('active');\n console.log('AudioInputService 初始化成功');\n } catch (error) {\n this.setState('error');\n console.error('AudioInputService 初始化失败:', error);\n throw new Error('麦克风初始化失败: ' + (error instanceof Error ? error.message : '未知错误'));\n }\n }\n\n /**\n * 获取时域数据\n * Get time domain data\n */\n getTimeDomainData(): Float32Array {\n if (!this.analyserNode) {\n throw new Error('AnalyserNode 未初始化');\n }\n\n const bufferLength = this.analyserNode.fftSize;\n const dataArray = new Float32Array(bufferLength);\n this.analyserNode.getFloatTimeDomainData(dataArray);\n return dataArray;\n }\n\n /**\n * 获取频域数据\n * Get frequency domain data\n */\n getFrequencyData(): Float32Array {\n if (!this.analyserNode) {\n throw new Error('AnalyserNode 未初始化');\n }\n\n const bufferLength = this.analyserNode.frequencyBinCount;\n const dataArray = new Float32Array(bufferLength);\n this.analyserNode.getFloatFrequencyData(dataArray);\n return dataArray;\n }\n\n /**\n * 获取当前音量\n * Get current volume\n */\n getCurrentVolume(): number {\n const timeDomainData = this.getTimeDomainData();\n let sum = 0;\n for (let i = 0; i < timeDomainData.length; i++) {\n const val = timeDomainData[i];\n if (val !== undefined) {\n sum += val * val;\n }\n }\n return Math.sqrt(sum / timeDomainData.length);\n }\n\n /**\n * 停止音频输入\n * Stop audio input\n */\n stop(): void {\n if (this.mediaStream) {\n this.mediaStream.getTracks().forEach(track => track.stop());\n this.mediaStream = null;\n }\n\n if (this.sourceNode) {\n this.sourceNode.disconnect();\n this.sourceNode = null;\n }\n\n if (this.analyserNode) {\n this.analyserNode.disconnect();\n this.analyserNode = null;\n }\n\n if (this.audioContext) {\n this.audioContext.close();\n this.audioContext = null;\n }\n\n this.setState('stopped');\n console.log('AudioInputService 已停止');\n }\n\n /**\n * 获取当前状态\n * Get current state\n */\n getState(): AudioInputState {\n return this.state;\n }\n\n /**\n * 获取配置\n * Get configuration\n */\n getConfig(): Required<AudioInputConfig> {\n return { ...this.config };\n }\n\n /**\n * 获取音频上下文\n * Get audio context\n */\n getAudioContext(): AudioContext | null {\n return this.audioContext;\n }\n\n /**\n * 获取分析器节点\n * Get analyser node\n */\n getAnalyserNode(): AnalyserNode | null {\n return this.analyserNode;\n }\n\n /**\n * 设置状态\n * Set state\n */\n private setState(state: AudioInputState): void {\n this.state = state;\n }\n\n /**\n * 检查是否正在运行\n * Check if running\n */\n isRunning(): boolean {\n return this.state === 'active';\n }\n}\n\n","/**\n * 音高检测器\n * Pitch Detector\n * \n * 使用自相关算法检测音频中的音高\n * Uses autocorrelation algorithm to detect pitch in audio\n */\n\nimport type { NoteInfo } from '../types';\n\nexport class PitchDetector {\n private sampleRate: number;\n private minFrequency: number;\n private maxFrequency: number;\n\n // 音符名称映射\n private static readonly NOTE_NAMES = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];\n\n constructor(sampleRate: number = 44100, minFrequency: number = 27.5, maxFrequency: number = 4186) {\n this.sampleRate = sampleRate;\n this.minFrequency = minFrequency;\n this.maxFrequency = maxFrequency;\n }\n\n /**\n * 检测音高\n * Detect pitch using autocorrelation\n */\n detectPitch(audioBuffer: Float32Array, minVolume: number = 0.01): number | null {\n // 计算RMS音量\n const volume = this.calculateRMS(audioBuffer);\n if (volume < minVolume) {\n return null; // 音量太小,不检测\n }\n\n // 使用自相关算法检测音高\n const frequency = this.autoCorrelate(audioBuffer);\n \n if (frequency === -1 || frequency < this.minFrequency || frequency > this.maxFrequency) {\n return null;\n }\n\n return frequency;\n }\n\n /**\n * 自相关算法\n * Autocorrelation algorithm\n */\n private autoCorrelate(buffer: Float32Array): number {\n const SIZE = buffer.length;\n const MAX_SAMPLES = Math.floor(SIZE / 2);\n let best_offset = -1;\n let best_correlation = 0;\n let rms = 0;\n\n // 计算RMS\n for (let i = 0; i < SIZE; i++) {\n const val = buffer[i];\n if (val !== undefined) {\n rms += val * val;\n }\n }\n rms = Math.sqrt(rms / SIZE);\n\n // 音量太小,不是音符\n if (rms < 0.01) {\n return -1;\n }\n\n // 找到第一个过零点\n let lastCorrelation = 1;\n for (let offset = 0; offset < MAX_SAMPLES; offset++) {\n let correlation = 0;\n\n for (let i = 0; i < MAX_SAMPLES; i++) {\n const val1 = buffer[i];\n const val2 = buffer[i + offset];\n if (val1 !== undefined && val2 !== undefined) {\n correlation += Math.abs(val1 - val2);\n }\n }\n\n correlation = 1 - correlation / MAX_SAMPLES;\n\n if (correlation > 0.9 && correlation > lastCorrelation) {\n const foundGoodCorrelation = correlation > best_correlation;\n if (foundGoodCorrelation) {\n best_correlation = correlation;\n best_offset = offset;\n }\n }\n\n lastCorrelation = correlation;\n }\n\n if (best_correlation > 0.01 && best_offset !== -1) {\n // 使用抛物线插值改进频率估计\n const frequency = this.sampleRate / best_offset;\n return frequency;\n }\n\n return -1;\n }\n\n /**\n * 计算RMS音量\n * Calculate RMS volume\n */\n private calculateRMS(buffer: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < buffer.length; i++) {\n const val = buffer[i];\n if (val !== undefined) {\n sum += val * val;\n }\n }\n return Math.sqrt(sum / buffer.length);\n }\n\n /**\n * 将频率转换为音符信息\n * Convert frequency to note information\n */\n frequencyToNote(frequency: number, volume: number = 1): NoteInfo | null {\n if (frequency <= 0) {\n return null;\n }\n\n // 计算MIDI音符编号\n const midi = Math.round(12 * Math.log2(frequency / 440) + 69);\n \n if (midi < 0 || midi > 127) {\n return null;\n }\n\n // 计算音符名称和八度\n const noteIndex = midi % 12;\n const octave = Math.floor(midi / 12) - 1;\n const noteName = PitchDetector.NOTE_NAMES[noteIndex] || 'C';\n const name = (noteName) + (octave);\n\n // 计算标准频率(用于计算置信度)\n const standardFrequency = 440 * Math.pow(2, (midi - 69) / 12);\n const cents = 1200 * Math.log2(frequency / standardFrequency);\n const confidence = Math.max(0, 1 - Math.abs(cents) / 50); // 50音分容差\n\n return {\n name,\n frequency,\n noteName,\n octave,\n midi,\n volume,\n confidence,\n };\n }\n\n /**\n * 使用FFT检测主频率\n * Detect dominant frequency using FFT\n */\n detectDominantFrequency(frequencyData: Float32Array, minVolume: number = -60): number | null {\n const nyquist = this.sampleRate / 2;\n const binWidth = nyquist / frequencyData.length;\n \n let maxIndex = -1;\n let maxValue = -Infinity;\n\n // 只在我们关心的频率范围内搜索\n const minBin = Math.floor(this.minFrequency / binWidth);\n const maxBin = Math.ceil(this.maxFrequency / binWidth);\n\n for (let i = minBin; i < Math.min(maxBin, frequencyData.length); i++) {\n const value = frequencyData[i];\n if (value !== undefined && value > maxValue && value > minVolume) {\n maxValue = value;\n maxIndex = i;\n }\n }\n\n if (maxIndex === -1) {\n return null;\n }\n\n // 使用抛物线插值改进频率估计\n const frequency = this.parabolicInterpolation(frequencyData, maxIndex, binWidth);\n \n return frequency;\n }\n\n /**\n * 抛物线插值\n * Parabolic interpolation for better frequency estimation\n */\n private parabolicInterpolation(data: Float32Array, index: number, binWidth: number): number {\n if (index <= 0 || index >= data.length - 1) {\n return index * binWidth;\n }\n\n const y1 = data[index - 1];\n const y2 = data[index];\n const y3 = data[index + 1];\n\n if (y1 === undefined || y2 === undefined || y3 === undefined) {\n return index * binWidth;\n }\n\n const delta = 0.5 * (y3 - y1) / (2 * y2 - y1 - y3);\n const interpolatedIndex = index + delta;\n\n return interpolatedIndex * binWidth;\n }\n\n /**\n * 检测多个音高(和弦)\n * Detect multiple pitches (chords)\n */\n detectMultiplePitches(frequencyData: Float32Array, minVolume: number = -60): NoteInfo[] {\n const notes: NoteInfo[] = [];\n const nyquist = this.sampleRate / 2;\n const binWidth = nyquist / frequencyData.length;\n \n // 找到所有峰值\n const peaks: { index: number; value: number }[] = [];\n \n for (let i = 1; i < frequencyData.length - 1; i++) {\n const freq = i * binWidth;\n if (freq < this.minFrequency || freq > this.maxFrequency) {\n continue;\n }\n\n const value = frequencyData[i];\n if (value !== undefined && value > minVolume && \n value > (frequencyData[i - 1] ?? -Infinity) && \n value > (frequencyData[i + 1] ?? -Infinity)) {\n peaks.push({ index: i, value });\n }\n }\n\n // 按强度排序,取前5个\n peaks.sort((a, b) => b.value - a.value);\n const topPeaks = peaks.slice(0, 5);\n\n // 转换为音符\n for (const peak of topPeaks) {\n const frequency = this.parabolicInterpolation(frequencyData, peak.index, binWidth);\n \n // 计算相对音量(归一化到0-1)\n const volume = Math.pow(10, peak.value / 20); // 从dB转换\n \n const note = this.frequencyToNote(frequency, volume);\n if (note) {\n notes.push(note);\n }\n }\n\n return notes;\n }\n}\n\n","/**\n * 和弦识别器\n * Chord Recognizer\n * \n * 根据检测到的音符识别和弦\n * Recognizes chords based on detected notes\n */\n\nimport type { NoteInfo, ChordInfo } from '../types';\n\ninterface ChordPattern {\n name: string;\n intervals: number[]; // 相对于根音的半音数\n aliases?: string[];\n}\n\nexport class ChordRecognizer {\n // 和弦模式定义\n private static readonly CHORD_PATTERNS: ChordPattern[] = [\n // 三和弦\n { name: 'major', intervals: [0, 4, 7], aliases: ['maj', 'M'] },\n { name: 'minor', intervals: [0, 3, 7], aliases: ['min', 'm'] },\n { name: 'diminished', intervals: [0, 3, 6], aliases: ['dim', '°'] },\n { name: 'augmented', intervals: [0, 4, 8], aliases: ['aug', '+'] },\n { name: 'sus2', intervals: [0, 2, 7] },\n { name: 'sus4', intervals: [0, 5, 7] },\n \n // 七和弦\n { name: 'major7', intervals: [0, 4, 7, 11], aliases: ['maj7', 'M7'] },\n { name: 'minor7', intervals: [0, 3, 7, 10], aliases: ['min7', 'm7'] },\n { name: 'dominant7', intervals: [0, 4, 7, 10], aliases: ['7'] },\n { name: 'diminished7', intervals: [0, 3, 6, 9], aliases: ['dim7', '°7'] },\n { name: 'half-diminished7', intervals: [0, 3, 6, 10], aliases: ['m7b5', 'ø7'] },\n { name: 'minor-major7', intervals: [0, 3, 7, 11], aliases: ['mM7', 'm(maj7)'] },\n { name: 'augmented7', intervals: [0, 4, 8, 10], aliases: ['aug7', '+7'] },\n \n // 扩展和弦\n { name: 'major9', intervals: [0, 4, 7, 11, 14], aliases: ['maj9', 'M9'] },\n { name: 'minor9', intervals: [0, 3, 7, 10, 14], aliases: ['min9', 'm9'] },\n { name: 'dominant9', intervals: [0, 4, 7, 10, 14], aliases: ['9'] },\n { name: 'add9', intervals: [0, 4, 7, 14] },\n { name: 'madd9', intervals: [0, 3, 7, 14], aliases: ['m(add9)'] },\n ];\n\n private static readonly NOTE_NAMES = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];\n\n /**\n * 识别和弦\n * Recognize chord from notes\n */\n recognizeChord(notes: NoteInfo[]): ChordInfo | null {\n if (notes.length < 2) {\n return null; // 至少需要2个音符才能构成和弦\n }\n\n // 按音高排序\n const sortedNotes = [...notes].sort((a, b) => a.midi - b.midi);\n\n // 去重(相同音符的不同八度)\n const uniqueNoteClasses = this.getUniqueNoteClasses(sortedNotes);\n \n if (uniqueNoteClasses.length < 2) {\n return null;\n }\n\n // 尝试所有可能的根音\n let bestMatch: { root: string; pattern: ChordPattern; confidence: number } | null = null;\n\n for (let i = 0; i < uniqueNoteClasses.length; i++) {\n const root = uniqueNoteClasses[i];\n if (!root) continue; // 跳过 undefined\n \n const intervals = this.calculateIntervals(root, uniqueNoteClasses);\n \n // 匹配和弦模式\n for (const pattern of ChordRecognizer.CHORD_PATTERNS) {\n const confidence = this.matchPattern(intervals, pattern.intervals);\n \n if (confidence > 0.8 && (!bestMatch || confidence > bestMatch.confidence)) {\n bestMatch = { root, pattern, confidence };\n }\n }\n }\n\n if (!bestMatch) {\n return null;\n }\n\n // 构建和弦信息\n const chordName = (bestMatch.root) + (this.getChordSuffix(bestMatch.pattern));\n \n return {\n name: chordName,\n root: bestMatch.root,\n type: bestMatch.pattern.name,\n notes: sortedNotes,\n confidence: bestMatch.confidence,\n };\n }\n\n /**\n * 获取唯一的音符类别(不考虑八度)\n * Get unique note classes (ignoring octave)\n */\n private getUniqueNoteClasses(notes: NoteInfo[]): string[] {\n const noteSet = new Set<string>();\n for (const note of notes) {\n noteSet.add(note.noteName);\n }\n return Array.from(noteSet);\n }\n\n /**\n * 计算音程\n * Calculate intervals from root\n */\n private calculateIntervals(root: string, noteClasses: string[]): number[] {\n const rootIndex = ChordRecognizer.NOTE_NAMES.indexOf(root);\n const intervals: number[] = [];\n\n for (const noteClass of noteClasses) {\n const noteIndex = ChordRecognizer.NOTE_NAMES.indexOf(noteClass);\n let interval = (noteIndex - rootIndex + 12) % 12;\n intervals.push(interval);\n }\n\n return intervals.sort((a, b) => a - b);\n }\n\n /**\n * 匹配和弦模式\n * Match chord pattern\n */\n private matchPattern(intervals: number[], pattern: number[]): number {\n if (intervals.length < pattern.length) {\n return 0;\n }\n\n let matches = 0;\n for (const patternInterval of pattern) {\n if (intervals.includes(patternInterval)) {\n matches++;\n }\n }\n\n // 计算匹配度\n const precision = matches / pattern.length;\n const recall = matches / intervals.length;\n \n // 使用F1分数\n if (precision + recall === 0) {\n return 0;\n }\n \n return (2 * precision * recall) / (precision + recall);\n }\n\n /**\n * 获取和弦后缀\n * Get chord suffix for display\n */\n private getChordSuffix(pattern: ChordPattern): string {\n // 使用最短的别名或原名称\n if (pattern.aliases && pattern.aliases.length > 0) {\n return pattern.aliases[0] || '';\n }\n \n // 转换常见名称\n const suffixMap: { [key: string]: string } = {\n 'major': '',\n 'minor': 'm',\n 'diminished': 'dim',\n 'augmented': 'aug',\n 'dominant7': '7',\n };\n \n return suffixMap[pattern.name] ?? pattern.name;\n }\n\n /**\n * 识别八度内的音程(用于简单的音程识别)\n * Recognize interval within an octave\n */\n recognizeInterval(note1: NoteInfo, note2: NoteInfo): string {\n const semitones = Math.abs(note1.midi - note2.midi) % 12;\n \n const intervalNames: { [key: number]: string } = {\n 0: '纯一度 (Unison)',\n 1: '小二度 (Minor 2nd)',\n 2: '大二度 (Major 2nd)',\n 3: '小三度 (Minor 3rd)',\n 4: '大三度 (Major 3rd)',\n 5: '纯四度 (Perfect 4th)',\n 6: '增四度/减五度 (Tritone)',\n 7: '纯五度 (Perfect 5th)',\n 8: '小六度 (Minor 6th)',\n 9: '大六度 (Major 6th)',\n 10: '小七度 (Minor 7th)',\n 11: '大七度 (Major 7th)',\n };\n \n return intervalNames[semitones] || '未知音程';\n }\n\n /**\n * 分析和弦质量\n * Analyze chord quality\n */\n analyzeChordQuality(chord: ChordInfo): string {\n const qualities: string[] = [];\n \n if (chord.type.includes('major')) {\n qualities.push('大调');\n } else if (chord.type.includes('minor')) {\n qualities.push('小调');\n }\n \n if (chord.type.includes('diminished')) {\n qualities.push('减');\n } else if (chord.type.includes('augmented')) {\n qualities.push('增');\n }\n \n if (chord.type.includes('7')) {\n qualities.push('七和弦');\n } else if (chord.type.includes('9')) {\n qualities.push('九和弦');\n }\n \n if (chord.type.includes('sus')) {\n qualities.push('挂留');\n }\n \n return qualities.join(' ') || '基础和弦';\n }\n}\n\n","/**\n * 音频检测器 - 主控制器\n * Audio Detector - Main Controller\n * \n * 整合音频输入、音高检测和和弦识别\n * Integrates audio input, pitch detection, and chord recognition\n */\n\nimport { AudioInputService } from './AudioInputService';\nimport { PitchDetector } from './PitchDetector';\nimport { ChordRecognizer } from './ChordRecognizer';\nimport type { \n AudioInputConfig, \n AudioDetectionResult, \n AudioDetectorEvents,\n AudioInputState,\n NoteInfo,\n ChordInfo,\n} from '../types';\n\nexport class AudioDetector {\n private audioInput: AudioInputService;\n private pitchDetector: PitchDetector;\n private chordRecognizer: ChordRecognizer;\n private isDetecting: boolean = false;\n private animationFrameId: number | null = null;\n private events: AudioDetectorEvents;\n private lastResult: AudioDetectionResult | null = null;\n\n constructor(config: AudioInputConfig = {}, events: AudioDetectorEvents = {}) {\n this.audioInput = new AudioInputService(config);\n const audioConfig = this.audioInput.getConfig();\n \n this.pitchDetector = new PitchDetector(\n audioConfig.sampleRate,\n audioConfig.frequencyRange.min,\n audioConfig.frequencyRange.max\n );\n \n this.chordRecognizer = new ChordRecognizer();\n this.events = events;\n }\n\n /**\n * 启动音频检测\n * Start audio detection\n */\n async start(): Promise<void> {\n if (this.isDetecting) {\n console.warn('AudioDetector 已经在运行');\n return;\n }\n\n try {\n // 初始化音频输入\n await this.audioInput.initialize();\n \n // 通知状态变化\n this.events.onStateChange?.('active');\n \n // 开始检测循环\n this.isDetecting = true;\n this.detectLoop();\n \n console.log('AudioDetector 已启动');\n } catch (error) {\n this.events.onStateChange?.('error');\n this.events.onError?.(error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * 停止音频检测\n * Stop audio detection\n */\n stop(): void {\n if (!this.isDetecting) {\n return;\n }\n\n this.isDetecting = false;\n \n if (this.animationFrameId !== null) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n\n this.audioInput.stop();\n this.events.onStateChange?.('stopped');\n \n console.log('AudioDetector 已停止');\n }\n\n /**\n * 检测循环\n * Detection loop\n */\n private detectLoop = (): void => {\n if (!this.isDetecting) {\n return;\n }\n\n try {\n const result = this.detect();\n \n if (result) {\n this.lastResult = result;\n this.events.onDetection?.(result);\n }\n } catch (error) {\n console.error('检测过程中出错:', error);\n this.events.onError?.(error instanceof Error ? error : new Error(String(error)));\n }\n\n // 继续下一帧\n this.animationFrameId = requestAnimationFrame(this.detectLoop);\n };\n\n /**\n * 执行一次检测\n * Perform single detection\n */\n private detect(): AudioDetectionResult | null {\n const config = this.audioInput.getConfig();\n\n // 获取时域数据(用于自相关)\n const timeDomainData = this.audioInput.getTimeDomainData();\n \n // 获取频域数据(用于多音检测)\n const frequencyData = this.audioInput.getFrequencyData();\n \n // 获取当前音量\n const volume = this.audioInput.getCurrentVolume();\n\n // 调试日志:每2秒输出一次音量信息\n if (Date.now() % 2000 < 100) {\n console.log('[AudioDetector] 当前音量: ' + (volume.toFixed(6)) + ', 阈值: ' + (config.minVolume) + ', 状态: ' + (volume >= config.minVolume ? '✅ 有声音' : '❌ 音量太低'));\n }\n\n // 检查是否有足够的音量\n if (volume < config.minVolume) {\n return {\n notes: [],\n timestamp: Date.now(),\n isDetecting: false,\n };\n }\n\n // 方法1: 使用时域自相关检测主音高\n const dominantFrequency = this.pitchDetector.detectPitch(timeDomainData, config.minVolume);\n \n // 方法2: 使用频域检测多个音高\n const detectedNotes = this.pitchDetector.detectMultiplePitches(frequencyData, -60);\n \n // 如果时域检测到了主音高,确保它在结果中\n if (dominantFrequency && dominantFrequency > 0) {\n const dominantNote = this.pitchDetector.frequencyToNote(dominantFrequency, volume);\n if (dominantNote) {\n // 检查是否已经在列表中\n const exists = detectedNotes.some(n => Math.abs(n.midi - dominantNote.midi) < 1);\n if (!exists) {\n detectedNotes.unshift(dominantNote);\n }\n }\n }\n\n // 过滤掉置信度太低的音符\n const filteredNotes = detectedNotes.filter(note => note.confidence >= config.minConfidence);\n\n // 识别和弦\n let chord: ChordInfo | undefined;\n if (filteredNotes.length >= 2) {\n chord = this.chordRecognizer.recognizeChord(filteredNotes) ?? undefined;\n }\n\n return {\n notes: filteredNotes,\n chord,\n timestamp: Date.now(),\n isDetecting: filteredNotes.length > 0,\n };\n }\n\n /**\n * 获取当前状态\n * Get current state\n */\n getState(): AudioInputState {\n return this.audioInput.getState();\n }\n\n /**\n * 获取最后的检测结果\n * Get last detection result\n */\n getLastResult(): AudioDetectionResult | null {\n return this.lastResult;\n }\n\n /**\n * 检查是否正在运行\n * Check if running\n */\n isRunning(): boolean {\n return this.isDetecting && this.audioInput.isRunning();\n }\n\n /**\n * 获取音频输入服务\n * Get audio input service\n */\n getAudioInput(): AudioInputService {\n return this.audioInput;\n }\n}\n\n","/**\n * 音频检测调试工具\n * Audio Detection Debug Tool\n */\n\nimport { AudioDetector } from './AudioDetector';\nimport type { AudioInputConfig } from '../types';\n\nexport class AudioDetectorDebugger {\n private detector: AudioDetector;\n private debugInterval: number | null = null;\n\n constructor(config: AudioInputConfig = {}) {\n this.detector = new AudioDetector(config, {\n onDetection: (result) => {\n if (result.isDetecting) {\n console.log('🎵 检测到音符:', result.notes.map(n => (n.name) + '(' + (n.frequency.toFixed(1)) + 'Hz)').join(', '));\n if (result.chord) {\n console.log('🎹 检测到和弦:', result.chord.name);\n }\n }\n },\n onStateChange: (state) => {\n console.log('📊 状态变化:', state);\n },\n onError: (error) => {\n console.error('❌ 错误:', error);\n },\n });\n }\n\n async start(): Promise<void> {\n await this.detector.start();\n \n // 启动调试信息输出\n this.debugInterval = window.setInterval(() => {\n const audioInput = this.detector.getAudioInput();\n const volume = audioInput.getCurrentVolume();\n const config = audioInput.getConfig();\n const analyser = audioInput.getAnalyserNode();\n \n if (analyser) {\n // 获取频域数据\n const freqData = new Float32Array(analyser.frequencyBinCount);\n analyser.getFloatFrequencyData(freqData);\n \n // 找到最大值\n let maxFreqValue = -Infinity;\n for (let i = 0; i < freqData.length; i++) {\n const val = freqData[i];\n if (val !== undefined && val > maxFreqValue) {\n maxFreqValue = val;\n }\n }\n \n console.log(`\n🎤 音频调试信息:\n - 音量 (RMS): ${volume.toFixed(6)}\n - 音量阈值: ${config.minVolume}\n - 音量状态: ${volume >= config.minVolume ? '✅ 超过阈值' : '❌ 低于阈值'}\n - 最大频率强度: ${maxFreqValue.toFixed(2)} dB\n - 采样率: ${config.sampleRate} Hz\n - FFT大小: ${config.fftSize}\n - 平滑系数: ${config.smoothing}\n `);\n }\n }, 2000);\n }\n\n stop(): void {\n if (this.debugInterval !== null) {\n clearInterval(this.debugInterval);\n this.debugInterval = null;\n }\n this.detector.stop();\n }\n\n getDetector(): AudioDetector {\n return this.detector;\n }\n\n /**\n * 测试麦克风是否正常工作\n */\n async testMicrophone(): Promise<{\n hasPermission: boolean;\n isReceivingAudio: boolean;\n averageVolume: number;\n peakVolume: number;\n }> {\n console.log('🔍 开始测试麦克风...');\n \n await this.detector.start();\n \n // 收集5秒的音量数据\n const volumes: number[] = [];\n const audioInput = this.detector.getAudioInput();\n \n return new Promise((resolve) => {\n const sampleInterval = setInterval(() => {\n volumes.push(audioInput.getCurrentVolume());\n }, 100);\n \n setTimeout(() => {\n clearInterval(sampleInterval);\n \n const averageVolume = volumes.reduce((a, b) => a + b, 0) / volumes.length;\n const peakVolume = Math.max(...volumes);\n const isReceivingAudio = peakVolume > 0.0001;\n \n console.log(`\n✅ 麦克风测试完成:\n - 权限状态: ✅ 已授权\n - 接收音频: ${isReceivingAudio ? '✅ 是' : '❌ 否'}\n - 平均音量: ${averageVolume.toFixed(6)}\n - 峰值音量: ${peakVolume.toFixed(6)}\n - 建议阈值: ${(peakVolume * 0.1).toFixed(6)}\n `);\n \n resolve({\n hasPermission: true,\n isReceivingAudio,\n averageVolume,\n peakVolume,\n });\n }, 5000);\n });\n }\n}\n\n// 导出便捷函数\nexport async function debugAudioDetection(config?: AudioInputConfig): Promise<AudioDetectorDebugger> {\n const dbg = new AudioDetectorDebugger(config);\n await dbg.start();\n return dbg;\n}\n\nexport async function testMicrophone(): Promise<void> {\n const dbg = new AudioDetectorDebugger();\n await dbg.testMicrophone();\n dbg.stop();\n}\n\n","/**\n * 音频检测 React Hook\n * Audio Detection React Hook\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { AudioDetector } from '../core/AudioDetector';\nimport type { \n AudioInputConfig, \n AudioDetectionResult, \n AudioInputState,\n} from '../types';\n\nexport interface UseAudioDetectionOptions extends AudioInputConfig {\n /** 是否自动开始检测 */\n autoStart?: boolean;\n /** 检测结果更新间隔(毫秒) */\n updateInterval?: number;\n}\n\nexport interface UseAudioDetectionReturn {\n /** 当前检测结果 */\n result: AudioDetectionResult | null;\n /** 音频输入状态 */\n state: AudioInputState;\n /** 是否正在检测 */\n isDetecting: boolean;\n /** 错误信息 */\n error: Error | null;\n /** 启动检测 */\n start: () => Promise<void>;\n /** 停止检测 */\n stop: () => void;\n /** 获取检测器实例 */\n getDetector: () => AudioDetector | null;\n}\n\n/**\n * 使用音频检测的 Hook\n * Hook for using audio detection\n */\nexport function useAudioDetection(options: UseAudioDetectionOptions = {}): UseAudioDetectionReturn {\n const { autoStart = false, updateInterval = 100, ...config } = options;\n \n const [result, setResult] = useState<AudioDetectionResult | null>(null);\n const [state, setState] = useState<AudioInputState>('idle');\n const [error, setError] = useState<Error | null>(null);\n const [isDetecting, setIsDetecting] = useState(false);\n \n const detectorRef = useRef<AudioDetector | null>(null);\n const lastUpdateRef = useRef<number>(0);\n\n // 初始化检测器\n useEffect(() => {\n const detector = new AudioDetector(config, {\n onDetection: (detectionResult) => {\n // 限制更新频率\n const now = Date.now();\n if (now - lastUpdateRef.current >= updateInterval) {\n setResult(detectionResult);\n lastUpdateRef.current = now;\n }\n },\n onStateChange: (newState) => {\n setState(newState);\n },\n onError: (err) => {\n setError(err);\n setIsDetecting(false);\n },\n });\n\n detectorRef.current = detector;\n\n // 自动启动\n if (autoStart) {\n detector.start().catch((err) => {\n setError(err);\n });\n setIsDetecting(true);\n }\n\n // 清理\n return () => {\n if (detector.isRunning()) {\n detector.stop();\n }\n };\n }, []); // 只在挂载时初始化\n\n // 启动检测\n const start = useCallback(async () => {\n if (!detectorRef.current) {\n const err = new Error('检测器未初始化');\n setError(err);\n throw err;\n }\n\n try {\n setError(null);\n await detectorRef.current.start();\n setIsDetecting(true);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n setIsDetecting(false);\n throw error;\n }\n }, []);\n\n // 停止检测\n const stop = useCallback(() => {\n if (detectorRef.current) {\n detectorRef.current.stop();\n setIsDetecting(false);\n setResult(null);\n }\n }, []);\n\n // 获取检测器实例\n const getDetector = useCallback(() => {\n return detectorRef.current;\n }, []);\n\n return {\n result,\n state,\n isDetecting,\n error,\n start,\n stop,\n getDetector,\n };\n}\n\n","/**\n * 音频检测组件\n * Audio Detection Component\n * \n * 显示实时音频检测结果的React组件\n * React component for displaying real-time audio detection results\n */\n\nimport React from 'react';\nimport { useAudioDetection, type UseAudioDetectionOptions } from '../hooks/useAudioDetection';\nimport type { NoteInfo, ChordInfo } from '../types';\nimport { clsx } from 'clsx';\n\nexport interface AudioDetectionDisplayProps extends UseAudioDetectionOptions {\n /** 自定义类名 */\n className?: string;\n /** 是否显示调试信息 */\n showDebugInfo?: boolean;\n /** 自定义渲染音符 */\n renderNote?: (note: NoteInfo) => React.ReactNode;\n /** 自定义渲染和弦 */\n renderChord?: (chord: ChordInfo) => React.ReactNode;\n /** 开始按钮文本 */\n startButtonText?: string;\n /** 停止按钮文本 */\n stopButtonText?: string;\n}\n\n/**\n * 音频检测显示组件\n */\nexport const AudioDetectionDisplay: React.FC<AudioDetectionDisplayProps> = ({\n className = '',\n showDebugInfo = false,\n renderNote,\n renderChord,\n startButtonText = '开始检测',\n stopButtonText = '停止检测',\n ...options\n}) => {\n const { result, state, isDetecting, error, start, stop } = useAudioDetection(options);\n\n const handleToggle = async () => {\n if (isDetecting) {\n stop();\n } else {\n try {\n await start();\n } catch (err) {\n console.error('启动失败:', err);\n }\n }\n };\n\n return (\n <div className={clsx('audio-detection-display', className)}>\n {/* 控制按钮 */}\n <div className=\"audio-detection-controls\">\n <button\n onClick={handleToggle}\n disabled={state === 'initializing'}\n className={clsx('audio-detection-button', isDetecting ? 'active' : '')}\n >\n {state === 'initializing' ? '初始化中...' : isDetecting ? stopButtonText : startButtonText}\n </button>\n \n <div className={clsx('audio-detection-status status-', state)}>\n 状态: {getStateLabel(state)}\n </div>\n </div>\n\n {/* 错误信息 */}\n {error && (\n <div className=\"audio-detection-error\">\n <strong>错误:</strong> {error.message}\n </div>\n )}\n\n {/* 检测结果 */}\n {result && result.isDetecting && (\n <div className=\"audio-detection-result\">\n {/* 音符显示 */}\n {result.notes.length > 0 && (\n <div className=\"audio-detection-notes\">\n <h3>检测到的音符:</h3>\n <div className=\"notes-grid\">\n {result.notes.map((note, index) => (\n <div key={index} className=\"note-item\">\n {renderNote ? renderNote(note) : <DefaultNoteDisplay note={note} />}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* 和弦显示 */}\n {result.chord && (\n <div className=\"audio-detection-chord\">\n <h3>识别的和弦:</h3>\n {renderChord ? renderChord(result.chord) : <DefaultChordDisplay chord={result.chord} />}\n </div>\n )}\n\n {/* 调试信息 */}\n {showDebugInfo && (\n <div className=\"audio-detection-debug\">\n <h4>调试信息:</h4>\n <pre>{JSON.stringify(result, null, 2)}</pre>\n </div>\n )}\n </div>\n )}\n\n {/* 无检测结果时的提示 */}\n {isDetecting && (!result || !result.isDetecting) && (\n <div className=\"audio-detection-waiting\">\n 正在监听... 请弹奏电子琴\n </div>\n )}\n </div>\n );\n};\n\n/**\n * 默认音符显示\n */\nconst DefaultNoteDisplay: React.FC<{ note: NoteInfo }> = ({ note }) => (\n <div className=\"default-note-display\">\n <div className=\"note-name\">{note.name}</div>\n <div className=\"note-frequency\">{note.frequency.toFixed(2)} Hz</div>\n <div className=\"note-confidence\">\n 置信度: {(note.confidence * 100).toFixed(0)}%\n </div>\n </div>\n);\n\n/**\n * 默认和弦显示\n */\nconst DefaultChordDisplay: React.FC<{ chord: ChordInfo }> = ({ chord }) => (\n <div className=\"default-chord-display\">\n <div className=\"chord-name\">{chord.name}</div>\n <div className=\"chord-type\">类型: {chord.type}</div>\n <div className=\"chord-notes\">\n 音符: {chord.notes.map(n => n.name).join(', ')}\n </div>\n <div className=\"chord-confidence\">\n 置信度: {(chord.confidence * 100).toFixed(0)}%\n </div>\n </div>\n);\n\n/**\n * 获取状态标签\n */\nfunction getStateLabel(state: string): string {\n const labels: { [key: string]: string } = {\n idle: '空闲',\n initializing: '初始化中',\n active: '运行中',\n error: '错误',\n stopped: '已停止',\n };\n return labels[state] || state;\n}\n\n/**\n * 默认样式(可以通过CSS覆盖)\n */\nexport const audioDetectionStyles = `\n.audio-detection-display {\n padding: 20px;\n border: 1px solid #ddd;\n border-radius: 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}\n\n.audio-detection-controls {\n display: flex;\n gap: 12px;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.audio-detection-button {\n padding: 10px 20px;\n font-size: 16px;\n border: none;\n border-radius: 6px;\n background-color: #007bff;\n color: white;\n cursor: pointer;\n transition: background-color 0.3s;\n}\n\n.audio-detection-button:hover {\n background-color: #0056b3;\n}\n\n.audio-detection-button:disabled {\n background-color: #ccc;\n cursor: not-allowed;\n}\n\n.audio-detection-button.active {\n background-color: #dc3545;\n}\n\n.audio-detection-button.active:hover {\n background-color: #c82333;\n}\n\n.audio-detection-status {\n padding: 8px 16px;\n border-radius: 4px;\n font-size: 14px;\n}\n\n.status-idle { background-color: #e7f3ff; color: #004085; }\n.status-initializing { background-color: #fff3cd; color: #856404; }\n.status-active { background-color: #d4edda; color: #155724; }\n.status-error { background-color: #f8d7da; color: #721c24; }\n.status-stopped { background-color: #e2e3e5; color: #383d41; }\n\n.audio-detection-error {\n padding: 12px;\n background-color: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 4px;\n color: #721c24;\n margin-bottom: 16px;\n}\n\n.audio-detection-result {\n margin-top: 20px;\n}\n\n.audio-detection-notes h3,\n.audio-detection-chord h3 {\n margin-bottom: 12px;\n font-size: 18px;\n}\n\n.notes-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n gap: 12px;\n}\n\n.note-item {\n padding: 12px;\n border: 2px solid #007bff;\n border-radius: 6px;\n background-color: #f8f9fa;\n}\n\n.default-note-display {\n text-align: center;\n}\n\n.note-name {\n font-size: 24px;\n font-weight: bold;\n color: #007bff;\n margin-bottom: 4px;\n}\n\n.note-frequency {\n font-size: 14px;\n color: #666;\n margin-bottom: 4px;\n}\n\n.note-confidence {\n font-size: 12px;\n color: #999;\n}\n\n.audio-detection-chord {\n margin-top: 20px;\n padding: 16px;\n border: 2px solid #28a745;\n border-radius: 8px;\n background-color: #f8f9fa;\n}\n\n.default-chord-display {\n text-align: center;\n}\n\n.chord-name {\n font-size: 32px;\n font-weight: bold;\n color: #28a745;\n margin-bottom: 8px;\n}\n\n.chord-type,\n.chord-notes,\n.chord-confidence {\n margin-bottom: 4px;\n color: #666;\n}\n\n.audio-detection-waiting {\n text-align: center;\n padding: 40px;\n color: #666;\n font-size: 18px;\n}\n\n.audio-detection-debug {\n margin-top: 20px;\n padding: 12px;\n background-color: #f4f4f4;\n border-radius: 4px;\n}\n\n.audio-detection-debug pre {\n margin: 8px 0 0 0;\n font-size: 12px;\n overflow-x: auto;\n}\n`;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","/**\n * 钢琴键盘可视化组件\n * Piano Keyboard Visualization Component\n */\n\nimport React, { useMemo } from 'react';\nimport type { NoteInfo } from '../types';\nimport { clsx } from 'clsx';\n\nexport interface PianoKeyboardProps {\n /** 当前激活的音符 */\n activeNotes?: NoteInfo[];\n /** 起始八度 (默认: 2) */\n startOctave?: number;\n /** 结束八度 (默认: 6) */\n endOctave?: number;\n /** 自定义类名 */\n className?: string;\n /** 是否显示音符名称 */\n showNoteNames?: boolean;\n}\n\ninterface PianoKey {\n noteName: string;\n octave: number;\n midi: number;\n isBlack: boolean;\n isActive: boolean;\n}\n\n/**\n * 钢琴键盘可视化\n */\nexport const PianoKeyboard: React.FC<PianoKeyboardProps> = ({\n activeNotes = [],\n startOctave = 2,\n endOctave = 6,\n className = '',\n showNoteNames = true,\n}) => {\n // 生成钢琴键\n const keys = useMemo(() => {\n const noteNames = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];\n const blackKeys = new Set(['C#', 'D#', 'F#', 'G#', 'A#']);\n const allKeys: PianoKey[] = [];\n\n for (let octave = startOctave; octave <= endOctave; octave++) {\n for (const noteName of noteNames) {\n const midi = (octave + 1) * 12 + noteNames.indexOf(noteName);\n const isActive = activeNotes.some(note => note.midi === midi);\n \n allKeys.push({\n noteName,\n octave,\n midi,\n isBlack: blackKeys.has(noteName),\n isActive,\n });\n }\n }\n\n return allKeys;\n }, [startOctave, endOctave, activeNotes]);\n\n // 分离白键和黑键\n const whiteKeys = keys.filter(k => !k.isBlack);\n const blackKeys = keys.filter(k => k.isBlack);\n\n return (\n <div className={clsx('piano-keyboard', className)}>\n <div className=\"piano-keys-container\">\n {/* 白键 */}\n <div className=\"white-keys\">\n {whiteKeys.map((key, index) => (\n <div\n key={'white-' + (key.midi)}\n className={clsx('piano-key white-key', key.isActive ? 'active' : '')}\n title={(key.noteName) + (key.octave)}\n >\n {showNoteNames && (\n <span className=\"key-label\">{key.noteName}{key.octave}</span>\n )}\n </div>\n ))}\n </div>\n\n {/* 黑键 */}\n <div className=\"black-keys\">\n {blackKeys.map((key) => {\n // 计算黑键的位置\n const whiteKeyIndex = getWhiteKeyIndexBeforeBlack(key.noteName);\n const octaveOffset = (key.octave - startOctave) * 7; // 每个八度有7个白键\n const position = whiteKeyIndex + octaveOffset;\n\n return (\n <div\n key={'black-' + (key.midi)}\n className={clsx('piano-key black-key', key.isActive ? 'active' : '')}\n style={{ left: ((position + 0.7) * (100 / whiteKeys.length)) + '%' }}\n title={(key.noteName) + (key.octave)}\n >\n {showNoteNames && (\n <span className=\"key-label\">{key.noteName}{key.octave}</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\n/**\n * 获取黑键之前的白键索引\n */\nfunction getWhiteKeyIndexBeforeBlack(noteName: string): number {\n const map: { [key: string]: number } = {\n 'C#': 0,\n 'D#': 1,\n 'F#': 3,\n 'G#': 4,\n 'A#': 5,\n };\n return map[noteName] || 0;\n}\n\n/**\n * 钢琴键盘样式\n */\nexport const pianoKeyboardStyles = `\n.piano-keyboard {\n width: 100%;\n padding: 20px;\n background-color: #2c3e50;\n border-radius: 8px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\n}\n\n.piano-keys-container {\n position: relative;\n width: 100%;\n height: 200px;\n}\n\n.white-keys {\n display: flex;\n height: 100%;\n gap: 2px;\n}\n\n.piano-key {\n position: relative;\n border: 1px solid #000;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.white-key {\n flex: 1;\n background: linear-gradient(to bottom, #ffffff 0%, #f0f0f0 100%);\n border-radius: 0 0 4px 4px;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n padding-bottom: 8px;\n}\n\n.white-key:hover {\n background: linear-gradient(to bottom, #f8f8f8 0%, #e8e8e8 100%);\n}\n\n.white-key.active {\n background: linear-gradient(to bottom, #4CAF50 0%, #45a049 100%) !important;\n box-shadow: 0 0 20px rgba(76, 175, 80, 0.8);\n}\n\n.black-keys {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 60%;\n pointer-events: none;\n}\n\n.black-key {\n position: absolute;\n width: calc(100% / 52 * 0.6); /* 假设有52个白键的宽度 */\n height: 100%;\n background: linear-gradient(to bottom, #2c3e50 0%, #1a252f 100%);\n border-radius: 0 0 3px 3px;\n pointer-events: all;\n transform: translateX(-50%);\n display: flex;\n align-items: flex-end;\n justify-content: center;\n padding-bottom: 6px;\n z-index: 10;\n}\n\n.black-key:hover {\n background: linear-gradient(to bottom, #34495e 0%, #2c3e50 100%);\n}\n\n.black-key.active {\n background: linear-gradient(to bottom, #4CAF50 0%, #388E3C 100%) !important;\n box-shadow: 0 0 20px rgba(76, 175, 80, 0.8);\n}\n\n.key-label {\n font-size: 11px;\n font-weight: bold;\n user-select: none;\n}\n\n.white-key .key-label {\n color: #666;\n}\n\n.white-key.active .key-label {\n color: white;\n}\n\n.black-key .key-label {\n color: #ddd;\n}\n\n.black-key.active .key-label {\n color: white;\n}\n`;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"]}
|