muzical-ui 0.1.10 → 0.1.13
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +7 -1
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +75 -3
- package/.next/standalone/.next/required-server-files.json +3 -0
- package/.next/standalone/.next/routes-manifest.json +36 -0
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +24 -18
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +24 -18
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js +6 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route.js +6 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route.js +6 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/favicon.ico/route.js +2 -1
- package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +20 -17
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +20 -17
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/musicbrainz/page.js +4 -4
- package/.next/standalone/.next/server/app/musicbrainz/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/musicbrainz/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/musicbrainz.html +1 -1
- package/.next/standalone/.next/server/app/musicbrainz.rsc +22 -19
- package/.next/standalone/.next/server/app/musicbrainz.segments/_full.segment.rsc +22 -19
- package/.next/standalone/.next/server/app/musicbrainz.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/musicbrainz.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/musicbrainz.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/browse/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/browse/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/settings/browse/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/browse/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/browse/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/browse/page.js +15 -0
- package/.next/standalone/.next/server/app/settings/browse/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/browse/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/browse/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/settings/browse.html +1 -0
- package/.next/standalone/.next/server/app/settings/browse.meta +16 -0
- package/.next/standalone/.next/server/app/settings/browse.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_full.segment.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_index.segment.rsc +11 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/settings.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/display/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/display/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/display/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/display/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/display.html +1 -1
- package/.next/standalone/.next/server/app/settings/display.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/display.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/display.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/display.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/display.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/display.segments/settings/display/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/display.segments/settings/display.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/display.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/lastfm/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js +15 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/settings/lastfm.html +1 -0
- package/.next/standalone/.next/server/app/settings/lastfm.meta +16 -0
- package/.next/standalone/.next/server/app/settings/lastfm.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_full.segment.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_index.segment.rsc +11 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/library/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/library/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/library/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/library/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/library.html +1 -1
- package/.next/standalone/.next/server/app/settings/library.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/library.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/library.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/library.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/library.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/library.segments/settings/library/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/library.segments/settings/library.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/library.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/playback/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/playback/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/playback/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/playback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/playback.html +1 -1
- package/.next/standalone/.next/server/app/settings/playback.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/playback.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/playback.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/playback.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/playback.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/playback.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/youtube/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/youtube/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/youtube/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/youtube/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/youtube.html +1 -1
- package/.next/standalone/.next/server/app/settings/youtube.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/youtube.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/youtube.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/youtube.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/youtube.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +21 -18
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +21 -18
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/youtube/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/youtube/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/youtube/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/youtube/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/youtube/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/youtube/page.js +15 -0
- package/.next/standalone/.next/server/app/youtube/page.js.map +5 -0
- package/.next/standalone/.next/server/app/youtube/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/youtube/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/youtube.html +1 -0
- package/.next/standalone/.next/server/app/youtube.meta +17 -0
- package/.next/standalone/.next/server/app/youtube.rsc +25 -0
- package/.next/standalone/.next/server/app/youtube.segments/_full.segment.rsc +25 -0
- package/.next/standalone/.next/server/app/youtube.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/youtube.segments/_index.segment.rsc +11 -0
- package/.next/standalone/.next/server/app/youtube.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/youtube.segments/youtube/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/youtube.segments/youtube.segment.rsc +5 -0
- package/.next/standalone/.next/server/app-paths-manifest.json +7 -1
- package/.next/standalone/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0mm3io..js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04rmaa_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iga-fk._.js +13 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0syodc9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yh0qgz._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_lastfm_track-similar_route_actions_0o0aksj.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_resolve_route_actions_00u-beh.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_search_route_actions_11oame5.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0952jxx._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0epj5a8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0lxnb~i._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0mpaeoj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0vvxdoi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0xiet5m._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0xr.otg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_apev2_APEv2Parser_0baa0n9.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_id3v2_048_t.z._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_matroska_MatroskaParser_129r4d4.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_mpeg_MpegParser_02l3ght.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_02m-902._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0v8tsu.._.js → 0z~i_next_dist_0y7_gi1._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_05w__hq.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0rtq_vg.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0zexs35.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.kc4tr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03-3mbr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__044c9~u._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0v30c9w._.js → [root-of-the-server]__05f62me._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hiy0el._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0wgbp9t._.js → [root-of-the-server]__0jowkig._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lkpda-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0sn2..k._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_014lxrc._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_06it0sh._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0b8qx~m._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0~cb-t9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_browse_page_actions_0_gn~yf.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_lastfm_page_actions_002qs5v.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_youtube_page_actions_12geo5h.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_00y4y-o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_0c.t1du._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_0dp4-uk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_LastfmSettingsPanel_tsx_0tqjys8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_LibrarySettingsPanel_tsx_0krc7dk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_MusicPlayer_tsx_06~82ey._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_SettingsOverview_tsx_0axvc~a._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_SettingsSwitchRow_tsx_0rn035g._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_0mppqs2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0bx6yug._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0f~0-nb._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +12 -0
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/00bzw__-m1fpe.js +1 -0
- package/.next/standalone/.next/static/chunks/00ffr5pv82u34.js +1 -0
- package/.next/standalone/.next/static/chunks/03f3hyhv4x63v.js +1 -0
- package/.next/standalone/.next/static/chunks/04-q~k1s4h2o9.js +31 -0
- package/.next/standalone/.next/static/chunks/0638t8cqzkdfe.js +1 -0
- package/.next/standalone/.next/static/chunks/073k~no118gmz.js +1 -0
- package/.next/standalone/.next/static/chunks/0c5m3gpe71ppi.js +1 -0
- package/.next/standalone/.next/static/chunks/0dusa1wc1mnfl.js +1 -0
- package/.next/standalone/.next/static/chunks/0me.0ghc7bi2f.js +1 -0
- package/.next/standalone/.next/static/chunks/0ps~ft3qx-shn.css +3 -0
- package/.next/standalone/.next/static/chunks/0ty~h16-~8eka.js +1 -0
- package/.next/standalone/.next/static/chunks/0w~k0r.qfm0zf.js +1 -0
- package/.next/standalone/.next/static/chunks/0xj5z58rgukgs.js +1 -0
- package/.next/standalone/.next/static/chunks/109xoml1ptc8~.js +1 -0
- package/.next/standalone/.next/static/chunks/14z_1xu7t6lay.js +2 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0g-.7kit-b4.8.js → turbopack-0ctpbjx-g6dyl.js} +1 -1
- package/.next/standalone/package.json +9 -8
- package/.next/standalone/server.js +1 -1
- package/package.json +9 -8
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~e2g3i._.js +0 -13
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_0z0kx9a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00e_fc7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_8f2hf._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_09vx.ql._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/components_0-e3h_v._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/components_YouTubeSettingsPanel_tsx_0t6pw~9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/lib_library_favorite-keys_ts_0mlju9x._.js +0 -3
- package/.next/standalone/.next/static/chunks/06c2c_.-4ag08.css +0 -3
- package/.next/standalone/.next/static/chunks/0_fmjohj6n9ax.js +0 -1
- package/.next/standalone/.next/static/chunks/0cx3-_9jp9j1a.js +0 -1
- package/.next/standalone/.next/static/chunks/0d05.rh-.aulc.js +0 -1
- package/.next/standalone/.next/static/chunks/0gs~olgu8~txo.js +0 -1
- package/.next/standalone/.next/static/chunks/0lse6x.rhc0i5.js +0 -1
- package/.next/standalone/.next/static/chunks/0nh7t0mlv.533.js +0 -2
- package/.next/standalone/.next/static/chunks/0wvzb~7kpzo6n.js +0 -1
- package/.next/standalone/.next/static/chunks/0y-bftn0gphdn.js +0 -1
- package/.next/standalone/.next/static/chunks/10e1sx.nf-s.5.js +0 -1
- package/.next/standalone/.next/static/chunks/10l3mqv783cbv.js +0 -1
- package/.next/standalone/.next/static/chunks/118x8mar90jp8.js +0 -1
- package/.next/standalone/.next/static/chunks/148g6~qgt.qca.js +0 -31
- /package/.next/standalone/.next/static/{n5DAS0x4tZcr-pX-g7jcA → 6R8dLcmFAc7AeUCNbCJAA}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{n5DAS0x4tZcr-pX-g7jcA → 6R8dLcmFAc7AeUCNbCJAA}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{n5DAS0x4tZcr-pX-g7jcA → 6R8dLcmFAc7AeUCNbCJAA}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[91465,(a,b,c)=>{"use strict";var d=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,e=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,g=/\\([\u000b\u0020-\u00ff])/g,h=/([\\"])/g,i=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function j(a){this.parameters=Object.create(null),this.type=a}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.parameters,c=a.type;if(!c||!i.test(c))throw TypeError("invalid type");var d=c;if(b&&"object"==typeof b)for(var g,j=Object.keys(b).sort(),k=0;k<j.length;k++){if(g=j[k],!f.test(g))throw TypeError("invalid parameter name");d+="; "+g+"="+function(a){var b=String(a);if(f.test(b))return b;if(b.length>0&&!e.test(b))throw TypeError("invalid parameter value");return'"'+b.replace(h,"\\$1")+'"'}(b[g])}return d},c.parse=function(a){if(!a)throw TypeError("argument string is required");var b,c,e,f="object"==typeof a?function(a){var b;if("function"==typeof a.getHeader?b=a.getHeader("content-type"):"object"==typeof a.headers&&(b=a.headers&&a.headers["content-type"]),"string"!=typeof b)throw TypeError("content-type header is missing from object");return b}(a):a;if("string"!=typeof f)throw TypeError("argument string is required to be a string");var h=f.indexOf(";"),k=-1!==h?f.slice(0,h).trim():f.trim();if(!i.test(k))throw TypeError("invalid media type");var l=new j(k.toLowerCase());if(-1!==h){for(d.lastIndex=h;c=d.exec(f);){if(c.index!==h)throw TypeError("invalid parameter format");h+=c[0].length,b=c[1].toLowerCase(),34===(e=c[2]).charCodeAt(0)&&-1!==(e=e.slice(1,-1)).indexOf("\\")&&(e=e.replace(g,"$1")),l.parameters[b]=e}if(h!==f.length)throw TypeError("invalid parameter format")}return l}},96151,(a,b,c)=>{"use strict";var d=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,e=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,f=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;function g(a,b,c){this.type=a,this.subtype=b,this.suffix=c}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.subtype,c=a.suffix,f=a.type;if(!f||!e.test(f))throw TypeError("invalid type");if(!b||!d.test(b))throw TypeError("invalid subtype");var g=f+"/"+b;if(c){if(!e.test(c))throw TypeError("invalid suffix");g+="+"+c}return g},c.parse=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");var b,c=f.exec(a.toLowerCase());if(!c)throw TypeError("invalid media type");var d=c[1],e=c[2],h=e.lastIndexOf("+");return -1!==h&&(b=e.substr(h+1),e=e.substr(0,h)),new g(d,e,b)},c.test=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");return f.test(a.toLowerCase())}},58760,41994,96332,17479,24388,2196,a=>{"use strict";var b=a.i(39752),c=a.i(34542);let d="muzical-library",e="libraryRoots",f="libraryCatalog",g=[".mp3",".flac",".m4a",".aac",".ogg",".opus",".wav",".webm",".aiff",".aif",".alac",".wma"];a.s(["LIBRARY_AUDIO_EXTENSIONS",0,g,"LIBRARY_CATALOG_STORE_NAME",0,f,"LIBRARY_DB_NAME",0,d,"LIBRARY_DB_VERSION",0,3,"LIBRARY_STORE_NAME",0,e],41994);let h="catalog",i="favorites";function j(a,b,c){if(!a.objectStoreNames.contains(f))return Promise.reject(Error(`Missing object store ${f}`));let d={key:h,rootIds:[...b].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})),tracks:[...c],savedAt:Date.now()};return new Promise((b,c)=>{let e=a.transaction(f,"readwrite"),g=e.objectStore(f).put(d);g.onerror=()=>{c(g.error??Error("IndexedDB catalog put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{c(e.error??Error("IndexedDB catalog transaction failed"))}})}let k=()=>({key:i,songIds:[],artistNames:[],albumKeys:[]}),l=new Set(g);a.s(["parseBlob",()=>aV,"scanAppendingHeaders",()=>aW],96332),a.i(61102);var m=a.i(1766),n=a.i(1962),o=a.i(82663),p=a.i(35617);let q={get:a=>({signature:n.UINT32_LE.get(a,0),compressedSize:n.UINT32_LE.get(a,8),uncompressedSize:n.UINT32_LE.get(a,12)}),len:16},r={get(a){let b=n.UINT16_LE.get(a,6);return{signature:n.UINT32_LE.get(a,0),minVersion:n.UINT16_LE.get(a,4),dataDescriptor:!!(8&b),compressedMethod:n.UINT16_LE.get(a,8),compressedSize:n.UINT32_LE.get(a,18),uncompressedSize:n.UINT32_LE.get(a,22),filenameLength:n.UINT16_LE.get(a,26),extraFieldLength:n.UINT16_LE.get(a,28),filename:null}},len:30},s={get:a=>({signature:n.UINT32_LE.get(a,0),nrOfThisDisk:n.UINT16_LE.get(a,4),nrOfThisDiskWithTheStart:n.UINT16_LE.get(a,6),nrOfEntriesOnThisDisk:n.UINT16_LE.get(a,8),nrOfEntriesOfSize:n.UINT16_LE.get(a,10),sizeOfCd:n.UINT32_LE.get(a,12),offsetOfStartOfCd:n.UINT32_LE.get(a,16),zipFileCommentLength:n.UINT16_LE.get(a,20)}),len:22},t={get(a){let b=n.UINT16_LE.get(a,8);return{signature:n.UINT32_LE.get(a,0),minVersion:n.UINT16_LE.get(a,6),dataDescriptor:!!(8&b),compressedMethod:n.UINT16_LE.get(a,10),compressedSize:n.UINT32_LE.get(a,20),uncompressedSize:n.UINT32_LE.get(a,24),filenameLength:n.UINT16_LE.get(a,28),extraFieldLength:n.UINT16_LE.get(a,30),fileCommentLength:n.UINT16_LE.get(a,32),relativeOffsetOfLocalHeader:n.UINT32_LE.get(a,42),filename:null}},len:46};function u(a){let b=new Uint8Array(n.UINT32_LE.len);return n.UINT32_LE.put(b,0,a),b}let v=(0,p.default)("tokenizer:inflate"),w=u(0x8074b50),x=u(0x6054b50);class y{constructor(a){this.tokenizer=a,this.syncBuffer=new Uint8Array(262144)}async isZip(){return await this.peekSignature()===0x4034b50}peekSignature(){return this.tokenizer.peekToken(n.UINT32_LE)}async findEndOfCentralDirectoryLocator(){let a=this.tokenizer,b=Math.min(16384,a.fileInfo.size),c=this.syncBuffer.subarray(0,b);await this.tokenizer.readBuffer(c,{position:a.fileInfo.size-b});for(let d=c.length-4;d>=0;d--)if(c[d]===x[0]&&c[d+1]===x[1]&&c[d+2]===x[2]&&c[d+3]===x[3])return a.fileInfo.size-b+d;return -1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess())return void v("Cannot reading central-directory without random-read support");v("Reading central-directory...");let a=this.tokenizer.position,b=await this.findEndOfCentralDirectoryLocator();if(b>0){v("Central-directory 32-bit signature found");let c=await this.tokenizer.readToken(s,b),d=[];this.tokenizer.setPosition(c.offsetOfStartOfCd);for(let a=0;a<c.nrOfEntriesOfSize;++a){let b=await this.tokenizer.readToken(t);if(0x2014b50!==b.signature)throw Error("Expected Central-File-Header signature");b.filename=await this.tokenizer.readToken(new n.StringType(b.filenameLength,"utf-8")),await this.tokenizer.ignore(b.extraFieldLength),await this.tokenizer.ignore(b.fileCommentLength),d.push(b),v(`Add central-directory file-entry: n=${a+1}/${d.length}: filename=${d[a].filename}`)}return this.tokenizer.setPosition(a),d}this.tokenizer.setPosition(a)}async unzip(a){let b=await this.readCentralDirectory();if(b)return this.iterateOverCentralDirectory(b,a);let c=!1;do{let b,d=await this.readLocalFileHeader();if(!d)break;let e=a(d);if(c=!!e.stop,await this.tokenizer.ignore(d.extraFieldLength),d.dataDescriptor&&0===d.compressedSize){let a=[],b=262144;v("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let c=-1;for(;c<0&&262144===b;){b=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0});let d=(c=function(a,b){let c=a.length,d=b.length;if(d>c)return -1;for(let e=0;e<=c-d;e++){let c=!0;for(let f=0;f<d;f++)if(a[e+f]!==b[f]){c=!1;break}if(c)return e}return -1}(this.syncBuffer.subarray(0,b),w))>=0?c:b;if(e.handler){let b=new Uint8Array(d);await this.tokenizer.readBuffer(b),a.push(b)}else await this.tokenizer.ignore(d)}v(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),e.handler&&await this.inflate(d,function(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}(a),e.handler)}else e.handler?(v(`Reading compressed-file-data: ${d.compressedSize} bytes`),b=new Uint8Array(d.compressedSize),await this.tokenizer.readBuffer(b),await this.inflate(d,b,e.handler)):(v(`Ignoring compressed-file-data: ${d.compressedSize} bytes`),await this.tokenizer.ignore(d.compressedSize));if(v(`Reading data-descriptor at pos=${this.tokenizer.position}`),d.dataDescriptor&&0x8074b50!==(await this.tokenizer.readToken(q)).signature)throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-q.len}`)}while(!c)}async iterateOverCentralDirectory(a,b){for(let c of a){let a=b(c);if(a.handler){this.tokenizer.setPosition(c.relativeOffsetOfLocalHeader);let b=await this.readLocalFileHeader();if(b){await this.tokenizer.ignore(b.extraFieldLength);let d=new Uint8Array(c.compressedSize);await this.tokenizer.readBuffer(d),await this.inflate(b,d,a.handler)}}if(a.stop)break}}async inflate(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return v(`Decompress filename=${a.filename}, compressed-size=${b.length}`),c(await y.decompressDeflateRaw(b))}static async decompressDeflateRaw(a){let b=new ReadableStream({start(b){b.enqueue(a),b.close()}}),c=new DecompressionStream("deflate-raw"),d=b.pipeThrough(c);try{let a=new Response(d),b=await a.arrayBuffer();return new Uint8Array(b)}catch(a){throw TypeError(a instanceof Error?`Failed to deflate ZIP entry: ${a.message}`:"Unknown decompression error in ZIP entry")}}async readLocalFileHeader(){let a=await this.tokenizer.peekToken(n.UINT32_LE);if(0x4034b50===a){let a=await this.tokenizer.readToken(r);return a.filename=await this.tokenizer.readToken(new n.StringType(a.filenameLength,"utf-8")),a}if(0x2014b50===a)return!1;if(0xe011cfd0===a)throw Error("Encrypted ZIP");throw Error("Unexpected signature")}}class z{constructor(a){this.tokenizer=a}inflate(){let a=this.tokenizer;return new ReadableStream({async pull(b){let c=new Uint8Array(1024),d=await a.readBuffer(c,{mayBeLess:!0});0===d?b.close():b.enqueue(c.subarray(0,d))}}).pipeThrough(new DecompressionStream("gzip"))}}var A=a.i(37187);let B={get:(a,b)=>127&a[b+3]|a[b+2]<<7|a[b+1]<<14|a[b]<<21,len:4},C=0x80000000-1,D=new Set(["Unexpected signature","Encrypted ZIP","Expected Central-File-Header signature"]),E=["ZIP entry count exceeds ","Unsupported ZIP compression method:","ZIP entry compressed data exceeds ","ZIP entry decompressed data exceeds ","Expected data-descriptor-signature at position "],F=new Set(["Z_BUF_ERROR","Z_DATA_ERROR","ERR_INVALID_STATE"]);class G extends Error{}function H(a,b,c){if(!Number.isFinite(a)||a<0||a>b)throw new G(`${c} has invalid size ${a} (maximum ${b} bytes)`);return a}async function I(a,b,{maximumLength:c=0x1000000,reason:d="skip"}={}){let e=H(b,c,d);await a.ignore(e)}async function J(a,b,c,{maximumLength:d=b.length,reason:e="read"}={}){let f=H(c?.length??b.length,d,e);return a.readBuffer(b,{...c,length:f})}async function K(a,{maximumLength:b=1048576}={}){let c=new ReadableStream({start(b){b.enqueue(a),b.close()}}).pipeThrough(new DecompressionStream("deflate-raw")).getReader(),d=[],e=0;try{for(;;){let{done:a,value:f}=await c.read();if(a)break;if((e+=f.length)>b)throw await c.cancel(),Error(`ZIP entry decompressed data exceeds ${b} bytes`);d.push(f)}}finally{c.releaseLock()}let f=new Uint8Array(e),g=0;for(let a of d)f.set(a,g),g+=a.length;return f}async function L(a,{shouldBuffer:b,maximumLength:c=1048576}={}){let{syncBuffer:d}=a,{length:e}=d,f=[],g=0;for(;;){let h=await a.tokenizer.peekBuffer(d,{mayBeLess:!0}),i=function(a,b){if(a.length<16)return -1;let c=a.length-16;for(let d=0;d<=c;d++)if(0x8074b50===n.UINT32_LE.get(a,d)&&n.UINT32_LE.get(a,d+8)===b+d)return d;return -1}(d.subarray(0,h),g),j=i>=0?0:h===e?Math.min(15,h-1):0,k=i>=0?i:h-j;if(0===k)break;if((g+=k)>c)throw Error(`ZIP entry compressed data exceeds ${c} bytes`);if(b){let b=new Uint8Array(k);await a.tokenizer.readBuffer(b),f.push(b)}else await a.tokenizer.ignore(k);if(i>=0)break}if(Q(a.tokenizer)||(a.knownSizeDescriptorScannedBytes+=g),b){let a=new Uint8Array(g),b=0;for(let c of f)a.set(c,b),b+=c.length;return a}}async function M(a,b,{shouldBuffer:c,maximumDescriptorLength:d=1048576}={}){var e;let f;if(b.dataDescriptor&&0===b.compressedSize)return L(a,{shouldBuffer:c,maximumLength:d});if(!c)return void await I(a.tokenizer,b.compressedSize,{maximumLength:Q(a.tokenizer)?1048576:a.tokenizer.fileInfo.size,reason:"ZIP entry compressed data"});let g=Math.min(Number.isFinite(f=(e=a.tokenizer).fileInfo.size)?Math.max(0,f-e.position):Number.MAX_SAFE_INTEGER,C);if(!Number.isFinite(b.compressedSize)||b.compressedSize<0||b.compressedSize>g)throw Error(`ZIP entry compressed data exceeds ${g} bytes`);let h=new Uint8Array(b.compressedSize);return await a.tokenizer.readBuffer(h),h}async function N(a,b){return new U(b).fromBuffer(a)}function O(a){switch(a=a.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:a};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:a};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:a};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:a};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:a};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:a};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:a};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:a};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:a};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:a};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:a};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:a};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:a};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:a};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:a};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:a};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"}}}function P(a,b,c){for(let[d,e]of(c={offset:0,...c},b.entries()))if(c.mask){if(e!==(c.mask[d]&a[d+c.offset]))return!1}else if(e!==a[d+c.offset])return!1;return!0}function Q(a){let b=a.fileInfo.size;return!Number.isFinite(b)||b===Number.MAX_SAFE_INTEGER}function R(a,b,c){return Q(a)&&a.position-b>c}function S(a,b=1048576){for(let c of[a.compressedSize,a.uncompressedSize])if(!Number.isFinite(c)||c<0||c>b)return!1;return!0}function T(a){if(a.hasContentTypesEntry&&!a.hasUnparseableContentTypes&&!a.isParsingContentTypes&&!a.hasParsedContentTypesEntry){if(a.hasWordDirectory)return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a.hasPresentationDirectory)return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a.hasSpreadsheetDirectory)return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};if(a.hasThreeDimensionalModelEntry)return{ext:"3mf",mime:"model/3mf"}}}y.prototype.inflate=async function(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return c(await K(b,{maximumLength:1048576}))},y.prototype.unzip=async function(a){let b=!1,c=0,d=this.tokenizer.position;this.knownSizeDescriptorScannedBytes=0;do{if(R(this.tokenizer,d,0x1000000))throw new G("ZIP stream probing exceeds 16777216 bytes");let e=await this.readLocalFileHeader();if(!e)break;if(++c>1024)throw Error("ZIP entry count exceeds 1024");let f=a(e);b=!!f.stop,await this.tokenizer.ignore(e.extraFieldLength);let g=await M(this,e,{shouldBuffer:!!f.handler,maximumDescriptorLength:Math.min(1048576,Q(this.tokenizer)?Math.max(0,0x1000000-(this.tokenizer.position-d)):Math.max(0,1048576-this.knownSizeDescriptorScannedBytes))});if(f.handler&&await this.inflate(e,g,f.handler),e.dataDescriptor){let a=new Uint8Array(16);if(await this.tokenizer.readBuffer(a),0x8074b50!==n.UINT32_LE.get(a,0))throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-a.length}`)}if(R(this.tokenizer,d,0x1000000))throw new G("ZIP stream probing exceeds 16777216 bytes")}while(!b)};class U{constructor(a){const b=function(a){return Number.isFinite(a)?Math.max(0,Math.min(4098,Math.trunc(a))):0}(a?.mpegOffsetTolerance);this.options={...a,mpegOffsetTolerance:b},this.detectors=[...this.options.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:this.options.signal},this.gzipProbeDepth=0}getTokenizerOptions(){return{...this.tokenizerOptions}}createTokenizerFromWebStream(a){return function(a){let b=a?.streamReader;if(b?.constructor?.name!=="WebStreamByobReader")return a;let{reader:c}=b,d=async()=>{await c.cancel(),c.releaseLock()};return b.close=d,b.abort=async()=>{b.interrupted=!0,await d()},a}(m.fromWebStream(a,this.getTokenizerOptions()))}async parseTokenizer(a,b=0){this.detectionReentryCount=b;let c=a.position;for(let b of this.detectors){let d;try{d=await b.detect(a)}catch(a){if(a instanceof o.EndOfStreamError||a instanceof G)return;throw a}if(d)return d;if(c!==a.position)return}}async fromTokenizer(a){try{return await this.parseTokenizer(a)}finally{await a.close()}}async fromBuffer(a){if(!(a instanceof Uint8Array||a instanceof ArrayBuffer))throw TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof a}\``);let b=a instanceof Uint8Array?a:new Uint8Array(a);if(b?.length>1)return this.fromTokenizer(m.fromBuffer(b,this.getTokenizerOptions()))}async fromBlob(a){this.options.signal?.throwIfAborted();let b=m.fromBlob(a,this.getTokenizerOptions());return this.fromTokenizer(b)}async fromStream(a){this.options.signal?.throwIfAborted();let b=this.createTokenizerFromWebStream(a);return this.fromTokenizer(b)}async toDetectionStream(a,b){var c,d,e;let f,g,h=Number.isFinite(c=b?.sampleSize??4100)?Math.max(1,Math.trunc(c)):4100,i=a.getReader({mode:"byob"});try{let{value:a,done:b}=await (d=new Uint8Array(h),e=this.options.signal,void 0===e?i.read(d):(e.throwIfAborted(),new Promise((a,b)=>{let c=()=>{e.removeEventListener("abort",f)},f=()=>{let a=e.reason;c(),(async()=>{try{await i.cancel(a)}catch{}})(),b(a)};e.addEventListener("abort",f,{once:!0}),(async()=>{try{let b=await i.read(d);c(),a(b)}catch(a){c(),b(a)}})()})));if(g=a,!b&&a)try{f=await this.fromBuffer(a.subarray(0,h))}catch(a){if(!(a instanceof o.EndOfStreamError))throw a;f=void 0}g=a}finally{i.releaseLock()}let j=new TransformStream({async start(a){a.enqueue(g)},transform(a,b){b.enqueue(a)}}),k=a.pipeThrough(j);return k.fileType=f,k}async detectGzip(a){let b,c,d,e,f,g,h,i,j;if(this.gzipProbeDepth>=1)return{ext:"gz",mime:"application/gzip"};let k=(f=new z(a).inflate().getReader(),g=0,h=!1,i=!1,j=async a=>{h||i||(i=!0,await f.cancel(a))},new ReadableStream({async pull(a){if(g>=0x1000000){a.close(),await j();return}let{done:b,value:c}=await f.read();if(b||!c){h=!0,a.close();return}let d=0x1000000-g;if(c.length>d){a.enqueue(c.subarray(0,d)),g+=d,a.close(),await j();return}a.enqueue(c),g+=c.length},async cancel(a){await j(a)}})),l=Q(a);if(l){let a=new AbortController;b=setTimeout(()=>{a.abort(new DOMException("Operation timed out after 100 ms","TimeoutError"))},100),c=void 0===this.options.signal?a.signal:AbortSignal.any([this.options.signal,a.signal]),(d=new U({...this.options,signal:c})).gzipProbeDepth=this.gzipProbeDepth+1}else this.gzipProbeDepth++;try{e=await (d??this).fromStream(k)}catch(a){if(a?.name==="AbortError"&&c?.reason?.name!=="TimeoutError")throw a}finally{clearTimeout(b),!l&&this.gzipProbeDepth--}return e?.ext==="tar"?{ext:"tar.gz",mime:"application/gzip"}:{ext:"gz",mime:"application/gzip"}}check(a,b){return P(this.buffer,a,b)}checkString(a,b){return this.check(function(a,b){if("utf-16le"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(255&d,d>>8&255)}return b}if("utf-16be"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(d>>8&255,255&d)}return b}return[...a].map(a=>a.charCodeAt(0))}(a,b?.encoding),b)}detectConfident=async a=>{if(this.buffer=new Uint8Array(4100),void 0===a.fileInfo.size&&(a.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=a,Q(a)&&(await a.peekBuffer(this.buffer,{length:3,mayBeLess:!0}),this.check([31,139,8])))return this.detectGzip(a);if(await a.peekBuffer(this.buffer,{length:32,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return(await a.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14}))?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191])){if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,await this.tokenizer.ignore(3),this.detectConfident(a)}if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return this.detectGzip(a);if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await I(a,6,{maximumLength:6,reason:"ID3 header prefix"});let b=await a.readToken(B),c=Q(a);if(!Number.isFinite(b)||b<0||c&&(b>0x1000000||a.position+b>0x1000000))return;if(a.position+b>a.fileInfo.size){if(c)return;return{ext:"mp3",mime:"audio/mpeg"}}try{await I(a,b,{maximumLength:c?0x1000000:a.fileInfo.size,reason:"ID3 payload"})}catch(a){if(a instanceof o.EndOfStreamError)return;throw a}if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,this.parseTokenizer(a,this.detectionReentryCount)}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((67===this.buffer[0]||70===this.buffer[0])&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let b,c={hasContentTypesEntry:!1,hasParsedContentTypesEntry:!1,isParsingContentTypes:!1,hasUnparseableContentTypes:!1,hasWordDirectory:!1,hasPresentationDirectory:!1,hasSpreadsheetDirectory:!1,hasThreeDimensionalModelEntry:!1};try{await new y(a).unzip(a=>{var d;(d=a.filename).startsWith("word/")&&(c.hasWordDirectory=!0),d.startsWith("ppt/")&&(c.hasPresentationDirectory=!0),d.startsWith("xl/")&&(c.hasSpreadsheetDirectory=!0),d.startsWith("3D/")&&d.endsWith(".model")&&(c.hasThreeDimensionalModelEntry=!0);let e="[Content_Types].xml"===a.filename,f=T(c);if(!e&&f)return b=f,{stop:!0};switch(a.filename){case"META-INF/mozilla.rsa":return b={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return b={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":if(!S(a,1048576))return{};return{async handler(a){let c=new TextDecoder("utf-8").decode(a).trim();b=O(c)},stop:!0};case"[Content_Types].xml":if(c.hasContentTypesEntry=!0,!S(a,1048576))return c.hasUnparseableContentTypes=!0,{};return c.isParsingContentTypes=!0,{async handler(a){let d=new TextDecoder("utf-8").decode(a),e=function(a){let b=a.indexOf('.main+xml"');if(-1===b){let b="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";return a.includes(`ContentType="${b}"`)?b:void 0}let c=a.slice(0,b),d=c.lastIndexOf('"');return c.slice(d+1)}(d);e&&(b=O(e)),c.hasParsedContentTypesEntry=!0,c.isParsingContentTypes=!1},stop:!0};default:if(/classes\d*\.dex/.test(a.filename))return b={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0};return{}}})}catch(a){if(!function(a){if(a instanceof o.EndOfStreamError||a instanceof G)return!0;if(!(a instanceof Error))return!1;if(D.has(a.message)||F.has(a.code))return!0;for(let b of E)if(a.message.startsWith(b))return!0;return!1}(a))throw a;c.isParsingContentTypes&&(c.isParsingContentTypes=!1,c.hasUnparseableContentTypes=!0)}return b??T(c)??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await a.ignore(28);let b=new Uint8Array(8);return(await a.readBuffer(b),P(b,[79,112,117,115,72,101,97,100]))?{ext:"opus",mime:"audio/ogg; codecs=opus"}:P(b,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:P(b,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:P(b,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:P(b,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:P(b,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(3===this.buffer[2]||5===this.buffer[2]||7===this.buffer[2])&&(4===this.buffer[3]||6===this.buffer[3]||8===this.buffer[3]))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF"))return{ext:"pdf",mime:"application/pdf"};if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let a=await this.readTiffHeader(!1);if(a)return a}if(this.check([77,77])){let a=await this.readTiffHeader(!0);if(a)return a}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function b(){let b=await a.peekNumber(n.UINT8),c=128,d=0;for(;(b&c)==0&&0!==c;)++d,c>>=1;let e=new Uint8Array(d+1);return await J(a,e,void 0,{maximumLength:e.length,reason:"EBML field"}),e}async function c(){let a=await b(),c=await b();c[0]^=128>>c.length-1;let d=Math.min(6,c.length),e=new DataView(a.buffer),f=new DataView(c.buffer,c.length-d,d);return{id:(0,A.getUintBE)(e),len:(0,A.getUintBE)(f)}}async function d(b){let d=0;for(;b>0;){if(++d>256||R(a,f,0x1000000))return;let e=a.position,g=await c();if(17026===g.id){if(g.len>64)return;let b=H(g.len,64,"EBML DocType");return(await a.readToken(new n.StringType(b))).replaceAll(/\00.*$/g,"")}if(Q(a)&&(!Number.isFinite(g.len)||g.len<0||g.len>1048576)||(await I(a,g.len,{maximumLength:Q(a)?1048576:a.fileInfo.size,reason:"EBML payload"}),--b,a.position<=e))return}}let e=await c(),f=a.position;switch(await d(e.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1")||this.checkString("PARE"))return{ext:"parquet",mime:"application/vnd.apache.parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([254,237,250,206])||this.check([254,237,250,207])||this.check([206,250,237,254])||this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.checkString("regf"))return{ext:"dat",mime:"application/x-ft-windows-registry-hive"};if(this.checkString("$FL2")||this.checkString("$FL3"))return{ext:"sav",mime:"application/x-spss-sav"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190])){let a=n.UINT32_BE.get(this.buffer,4),b=n.UINT16_BE.get(this.buffer,6);if(a>0&&a<=30)return{ext:"macho",mime:"application/x-mach-binary"};if(b>30)return{ext:"class",mime:"application/java-vm"}}if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(0===this.buffer[6]||1===this.buffer[6]))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let a=new n.StringType(4,"latin1").get(this.buffer,2);if(a.match("^d*")&&a>=1e3&&a<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return(await a.ignore(8),"debian-binary"===await a.readToken(new n.StringType(13,"ascii")))?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&["\n","\r"," "," ","\0"].some(a=>this.checkString(a,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){let b={ext:"png",mime:"image/png"},c={ext:"apng",mime:"image/apng"};async function e(){return{length:await a.readToken(n.INT32_BE),type:await a.readToken(new n.StringType(4,"latin1"))}}await a.ignore(8);let d=Q(a),f=a.position,g=0,h=!1;do{if(++g>512||R(a,f,0x1000000))break;let i=a.position,j=await e();if(j.length<0)return;if("IHDR"===j.type){if(13!==j.length)return;h=!0}switch(j.type){case"IDAT":return b;case"acTL":return c;default:if(!h&&"CgBI"!==j.type)return;if(d&&j.length>1048576)return h&&(32&j.type.codePointAt(0))!=0?b:void 0;try{await I(a,j.length+4,{maximumLength:d?1048580:a.fileInfo.size,reason:"PNG chunk payload"})}catch(a){if(!d&&(a instanceof G||a instanceof o.EndOfStreamError))return b;throw a}}if(a.position<=i)break}while(a.position+8<a.fileInfo.size)return b}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/vnd.apache.arrow.file"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(this.check([102,114,101,101],{offset:4})||this.check([109,100,97,116],{offset:4})||this.check([109,111,111,118],{offset:4})||this.check([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(96&this.buffer[8])!=0){let a=new n.StringType(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(a){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:if(a.startsWith("3g")){if(a.startsWith("3g2"))return{ext:"3g2",mime:"video/3gpp2"};return{ext:"3gp",mime:"video/3gpp"}}return{ext:"mp4",mime:"video/mp4"}}}if(this.checkString("REGEDIT4\r\n"))return{ext:"reg",mime:"application/x-ms-regedit"};if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){let b=!1;try{async function f(){let b=new Uint8Array(16);return await J(a,b,void 0,{maximumLength:b.length,reason:"ASF header GUID"}),{id:b,size:Number(await a.readToken(n.UINT64_LE))}}await I(a,30,{maximumLength:30,reason:"ASF header prelude"});let c=Q(a),d=a.position,e=0;for(;a.position+24<a.fileInfo.size&&!(++e>512||R(a,d,0x1000000));){let d=a.position,e=await f(),g=e.size-24;if(!Number.isFinite(g)||g<0){b=!0;break}if(P(e.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let b=new Uint8Array(16);if(g-=await J(a,b,void 0,{maximumLength:b.length,reason:"ASF stream type GUID"}),P(b,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(P(b,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}if(c&&g>1048576||(await I(a,g,{maximumLength:c?1048576:a.fileInfo.size,reason:"ASF header payload"}),a.position<=d)){b=!0;break}}}catch(c){if(c instanceof o.EndOfStreamError||c instanceof G)Q(a)&&(b=!0);else throw c}if(b)return;return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await a.ignore(20),await a.readToken(new n.StringType(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.checkString("<?xml ",{offset:2,encoding:"utf-16be"})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await a.peekBuffer(this.buffer,{length:Math.min(256,a.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let a=new DataView(this.buffer.buffer).getUint32(12,!0);if(a>12&&this.buffer.length>=a+16)try{let b=new TextDecoder().decode(this.buffer.subarray(16,a+16));if(JSON.parse(b).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188})||this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(this.check([255,255,0,0,7,0,0,0,4,0,0,0,1,0,1,0])||this.check([0,0,255,255,0,0,0,7,0,0,0,4,0,1,0,1]))return{ext:"jmp",mime:"application/x-jmp-data"};if(await a.peekBuffer(this.buffer,{length:Math.min(512,a.fileInfo.size),mayBeLess:!0}),this.checkString("ustar",{offset:257})&&(this.checkString("\0",{offset:262})||this.checkString(" ",{offset:262}))||this.check([0,0,0,0,0,0],{offset:257})&&function(a,b=0){let c=Number.parseInt(new n.StringType(6).get(a,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(c))return!1;let d=256;for(let c=b;c<b+148;c++)d+=a[c];for(let c=b+156;c<b+512;c++)d+=a[c];return c===d}(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254])){let a="utf-16le";return this.checkString("<?xml ",{offset:2,encoding:a})?{ext:"xml",mime:"application/xml"}:this.check([255,14],{offset:2})&&this.checkString("SketchUp Model",{offset:4,encoding:a})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:this.checkString("Windows Registry Editor Version 5.00\r\n",{offset:2,encoding:a})?{ext:"reg",mime:"application/x-ms-regedit"}:void 0}if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async a=>{var b;this.buffer=new Uint8Array(4100);let c=Number.isFinite(b=a.fileInfo.size)?Math.max(0,b):Number.MAX_SAFE_INTEGER;if(await a.peekBuffer(this.buffer,{length:Math.min(8,c),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(await a.peekBuffer(this.buffer,{length:Math.min(2+this.options.mpegOffsetTolerance,c),mayBeLess:!0}),this.buffer.length>=2+this.options.mpegOffsetTolerance)for(let a=0;a<=this.options.mpegOffsetTolerance;++a){let b=this.scanMpeg(a);if(b)return b}};async readTiffTag(a){let b=await this.tokenizer.readToken(a?n.UINT16_BE:n.UINT16_LE);switch(await this.tokenizer.ignore(10),b){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"}}}async readTiffIFD(a){let b=await this.tokenizer.readToken(a?n.UINT16_BE:n.UINT16_LE);if(!(b>512)&&(!Q(this.tokenizer)||!(2+12*b>0x1000000)))for(let c=0;c<b;++c){let b=await this.readTiffTag(a);if(b)return b}}async readTiffHeader(a){let b={ext:"tif",mime:"image/tiff"},c=(a?n.UINT16_BE:n.UINT16_LE).get(this.buffer,2),d=(a?n.UINT32_BE:n.UINT32_LE).get(this.buffer,4);if(42===c){let c;if(d>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(d>=8){let b=(a?n.UINT16_BE:n.UINT16_LE).get(this.buffer,8),c=(a?n.UINT16_BE:n.UINT16_LE).get(this.buffer,10);if(28===b&&254===c||31===b&&11===c)return{ext:"nef",mime:"image/x-nikon-nef"}}}if(Q(this.tokenizer)&&d>1048576)return b;let e=Q(this.tokenizer)?0x1000000:this.tokenizer.fileInfo.size;try{await I(this.tokenizer,d,{maximumLength:e,reason:"TIFF IFD offset"})}catch(a){if(a instanceof o.EndOfStreamError)return;throw a}try{c=await this.readTiffIFD(a)}catch(a){if(a instanceof o.EndOfStreamError)return;throw a}return c??b}if(43===c)return b}scanMpeg(a){if(this.check([255,224],{offset:a,mask:[255,224]})){if(this.check([16],{offset:a+1,mask:[22]}))return this.check([8],{offset:a+1,mask:[8]}),{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:a+1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:a+1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:a+1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}}}var V=a.i(91465),W=a.i(96151),X=a.i(44753);let Y={multiple:!1},Z={year:Y,track:Y,disk:Y,title:Y,artist:Y,artists:{multiple:!0,unique:!0},albumartist:Y,albumartists:{multiple:!0,unique:!0},album:Y,date:Y,originaldate:Y,originalyear:Y,releasedate:Y,comment:{multiple:!0,unique:!1},genre:{multiple:!0,unique:!0},picture:{multiple:!0,unique:!0},composer:{multiple:!0,unique:!0},lyrics:{multiple:!0,unique:!1},albumsort:{multiple:!1,unique:!0},titlesort:{multiple:!1,unique:!0},work:{multiple:!1,unique:!0},artistsort:{multiple:!1,unique:!0},albumartistsort:{multiple:!1,unique:!0},composersort:{multiple:!1,unique:!0},lyricist:{multiple:!0,unique:!0},writer:{multiple:!0,unique:!0},conductor:{multiple:!0,unique:!0},remixer:{multiple:!0,unique:!0},arranger:{multiple:!0,unique:!0},engineer:{multiple:!0,unique:!0},producer:{multiple:!0,unique:!0},technician:{multiple:!0,unique:!0},djmixer:{multiple:!0,unique:!0},mixer:{multiple:!0,unique:!0},label:{multiple:!0,unique:!0},grouping:Y,subtitle:{multiple:!0},discsubtitle:Y,totaltracks:Y,totaldiscs:Y,compilation:Y,rating:{multiple:!0},bpm:Y,mood:Y,media:Y,catalognumber:{multiple:!0,unique:!0},tvShow:Y,tvShowSort:Y,tvSeason:Y,tvEpisode:Y,tvEpisodeId:Y,tvNetwork:Y,podcast:Y,podcasturl:Y,releasestatus:Y,releasetype:{multiple:!0},releasecountry:Y,script:Y,language:Y,copyright:Y,license:Y,encodedby:Y,encodersettings:Y,gapless:Y,barcode:Y,isrc:{multiple:!0},asin:Y,musicbrainz_recordingid:Y,musicbrainz_trackid:Y,musicbrainz_albumid:Y,musicbrainz_artistid:{multiple:!0},musicbrainz_albumartistid:{multiple:!0},musicbrainz_releasegroupid:Y,musicbrainz_workid:Y,musicbrainz_trmid:Y,musicbrainz_discid:Y,acoustid_id:Y,acoustid_fingerprint:Y,musicip_puid:Y,musicip_fingerprint:Y,website:Y,"performer:instrument":{multiple:!0,unique:!0},averageLevel:Y,peakLevel:Y,notes:{multiple:!0,unique:!1},key:Y,originalalbum:Y,originalartist:Y,discogs_artist_id:{multiple:!0,unique:!0},discogs_release_id:Y,discogs_label_id:Y,discogs_master_release_id:Y,discogs_votes:Y,discogs_rating:Y,replaygain_track_peak:Y,replaygain_track_gain:Y,replaygain_album_peak:Y,replaygain_album_gain:Y,replaygain_track_minmax:Y,replaygain_album_minmax:Y,replaygain_undo:Y,description:{multiple:!0},longDescription:Y,category:{multiple:!0},hdVideo:Y,keywords:{multiple:!0},movement:Y,movementIndex:Y,movementTotal:Y,podcastId:Y,showMovement:Y,stik:Y,playCounter:Y};class ${static toIntOrNull(a){let b=Number.parseInt(a,10);return Number.isNaN(b)?null:b}static normalizeTrack(a){let b=a.toString().split("/");return{no:Number.parseInt(b[0],10)||null,of:Number.parseInt(b[1],10)||null}}constructor(a,b){this.tagTypes=a,this.tagMap=b}mapGenericTag(a,b){a={id:a.id,value:a.value},this.postMap(a,b);let c=this.getCommonName(a.id);return c?{id:c,value:a.value}:null}getCommonName(a){return this.tagMap[a]}postMap(a,b){}}$.maxRatingScore=1;let _={title:"title",artist:"artist",album:"album",year:"year",comment:"comment",track:"track",genre:"genre"};class aa extends ${constructor(){super(["ID3v1"],_)}}class ab extends ${constructor(a,b){const c={};for(const a of Object.keys(b))c[a.toUpperCase()]=b[a];super(a,c)}getCommonName(a){return this.tagMap[a.toUpperCase()]}}var ac=a.i(82670);let ad={TIT2:"title",TPE1:"artist","TXXX:Artists":"artists",TPE2:"albumartist",TALB:"album",TDRV:"date",TORY:"originalyear",TPOS:"disk",TCON:"genre",APIC:"picture",TCOM:"composer",USLT:"lyrics",TSOA:"albumsort",TSOT:"titlesort",TOAL:"originalalbum",TSOP:"artistsort",TSO2:"albumartistsort",TSOC:"composersort",TEXT:"lyricist","TXXX:Writer":"writer",TPE3:"conductor",TPE4:"remixer","IPLS:arranger":"arranger","IPLS:engineer":"engineer","IPLS:producer":"producer","IPLS:DJ-mix":"djmixer","IPLS:mix":"mixer",TPUB:"label",TIT1:"grouping",TIT3:"subtitle",TRCK:"track",TCMP:"compilation",POPM:"rating",TBPM:"bpm",TMED:"media","TXXX:CATALOGNUMBER":"catalognumber","TXXX:MusicBrainz Album Status":"releasestatus","TXXX:MusicBrainz Album Type":"releasetype","TXXX:MusicBrainz Album Release Country":"releasecountry","TXXX:RELEASECOUNTRY":"releasecountry","TXXX:SCRIPT":"script",TLAN:"language",TCOP:"copyright",WCOP:"license",TENC:"encodedby",TSSE:"encodersettings","TXXX:BARCODE":"barcode","TXXX:ISRC":"isrc",TSRC:"isrc","TXXX:ASIN":"asin","TXXX:originalyear":"originalyear","UFID:http://musicbrainz.org":"musicbrainz_recordingid","TXXX:MusicBrainz Release Track Id":"musicbrainz_trackid","TXXX:MusicBrainz Album Id":"musicbrainz_albumid","TXXX:MusicBrainz Artist Id":"musicbrainz_artistid","TXXX:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","TXXX:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","TXXX:MusicBrainz Work Id":"musicbrainz_workid","TXXX:MusicBrainz TRM Id":"musicbrainz_trmid","TXXX:MusicBrainz Disc Id":"musicbrainz_discid","TXXX:ACOUSTID_ID":"acoustid_id","TXXX:Acoustid Id":"acoustid_id","TXXX:Acoustid Fingerprint":"acoustid_fingerprint","TXXX:MusicIP PUID":"musicip_puid","TXXX:MusicMagic Fingerprint":"musicip_fingerprint",WOAR:"website",TDRC:"date",TYER:"year",TDOR:"originaldate","TIPL:arranger":"arranger","TIPL:engineer":"engineer","TIPL:producer":"producer","TIPL:DJ-mix":"djmixer","TIPL:mix":"mixer",TMOO:"mood",SYLT:"lyrics",TSST:"discsubtitle",TKEY:"key",COMM:"comment",TOPE:"originalartist","PRIV:AverageLevel":"averageLevel","PRIV:PeakLevel":"peakLevel","TXXX:DISCOGS_ARTIST_ID":"discogs_artist_id","TXXX:DISCOGS_ARTISTS":"artists","TXXX:DISCOGS_ARTIST_NAME":"artists","TXXX:DISCOGS_ALBUM_ARTISTS":"albumartist","TXXX:DISCOGS_CATALOG":"catalognumber","TXXX:DISCOGS_COUNTRY":"releasecountry","TXXX:DISCOGS_DATE":"originaldate","TXXX:DISCOGS_LABEL":"label","TXXX:DISCOGS_LABEL_ID":"discogs_label_id","TXXX:DISCOGS_MASTER_RELEASE_ID":"discogs_master_release_id","TXXX:DISCOGS_RATING":"discogs_rating","TXXX:DISCOGS_RELEASED":"date","TXXX:DISCOGS_RELEASE_ID":"discogs_release_id","TXXX:DISCOGS_VOTES":"discogs_votes","TXXX:CATALOGID":"catalognumber","TXXX:STYLE":"genre","TXXX:REPLAYGAIN_TRACK_PEAK":"replaygain_track_peak","TXXX:REPLAYGAIN_TRACK_GAIN":"replaygain_track_gain","TXXX:REPLAYGAIN_ALBUM_PEAK":"replaygain_album_peak","TXXX:REPLAYGAIN_ALBUM_GAIN":"replaygain_album_gain","TXXX:MP3GAIN_MINMAX":"replaygain_track_minmax","TXXX:MP3GAIN_ALBUM_MINMAX":"replaygain_album_minmax","TXXX:MP3GAIN_UNDO":"replaygain_undo",MVNM:"movement",MVIN:"movementIndex",PCST:"podcast",TCAT:"category",TDES:"description",TDRL:"releasedate",TGID:"podcastId",TKWD:"keywords",WFED:"podcasturl",GRP1:"grouping",PCNT:"playCounter"};class ae extends ab{static toRating(a){return{source:a.email,rating:a.rating>0?(a.rating-1)/254*$.maxRatingScore:void 0}}constructor(){super(["ID3v2.3","ID3v2.4"],ad)}postMap(a,b){switch(a.id){case"UFID":{let b=a.value;"http://musicbrainz.org"===b.owner_identifier&&(a.id+=`:${b.owner_identifier}`,a.value=(0,ac.decodeString)(b.identifier,"latin1"))}break;case"PRIV":{let c=a.value;switch(c.owner_identifier){case"AverageLevel":case"PeakValue":a.id+=`:${c.owner_identifier}`,a.value=4===c.data.length?n.UINT32_LE.get(c.data,0):null,null===a.value&&b.addWarning("Failed to parse PRIV:PeakValue");break;default:b.addWarning(`Unknown PRIV owner-identifier: ${c.data}`)}}break;case"POPM":a.value=ae.toRating(a.value)}}}let af={Title:"title",Author:"artist","WM/AlbumArtist":"albumartist","WM/AlbumTitle":"album","WM/Year":"date","WM/OriginalReleaseTime":"originaldate","WM/OriginalReleaseYear":"originalyear",Description:"comment","WM/TrackNumber":"track","WM/PartOfSet":"disk","WM/Genre":"genre","WM/Composer":"composer","WM/Lyrics":"lyrics","WM/AlbumSortOrder":"albumsort","WM/TitleSortOrder":"titlesort","WM/ArtistSortOrder":"artistsort","WM/AlbumArtistSortOrder":"albumartistsort","WM/ComposerSortOrder":"composersort","WM/Writer":"lyricist","WM/Conductor":"conductor","WM/ModifiedBy":"remixer","WM/Engineer":"engineer","WM/Producer":"producer","WM/DJMixer":"djmixer","WM/Mixer":"mixer","WM/Publisher":"label","WM/ContentGroupDescription":"grouping","WM/SubTitle":"subtitle","WM/SetSubTitle":"discsubtitle","WM/IsCompilation":"compilation","WM/SharedUserRating":"rating","WM/BeatsPerMinute":"bpm","WM/Mood":"mood","WM/Media":"media","WM/CatalogNo":"catalognumber","MusicBrainz/Album Status":"releasestatus","MusicBrainz/Album Type":"releasetype","MusicBrainz/Album Release Country":"releasecountry","WM/Script":"script","WM/Language":"language",Copyright:"copyright",LICENSE:"license","WM/EncodedBy":"encodedby","WM/EncodingSettings":"encodersettings","WM/Barcode":"barcode","WM/ISRC":"isrc","MusicBrainz/Track Id":"musicbrainz_recordingid","MusicBrainz/Release Track Id":"musicbrainz_trackid","MusicBrainz/Album Id":"musicbrainz_albumid","MusicBrainz/Artist Id":"musicbrainz_artistid","MusicBrainz/Album Artist Id":"musicbrainz_albumartistid","MusicBrainz/Release Group Id":"musicbrainz_releasegroupid","MusicBrainz/Work Id":"musicbrainz_workid","MusicBrainz/TRM Id":"musicbrainz_trmid","MusicBrainz/Disc Id":"musicbrainz_discid","Acoustid/Id":"acoustid_id","Acoustid/Fingerprint":"acoustid_fingerprint","MusicIP/PUID":"musicip_puid","WM/ARTISTS":"artists","WM/InitialKey":"key",ASIN:"asin","WM/Work":"work","WM/AuthorURL":"website","WM/Picture":"picture"};class ag extends ${static toRating(a){return{rating:Number.parseFloat(a+1)/5}}constructor(){super(["asf"],af)}postMap(a){if("WM/SharedUserRating"===a.id){let b=a.id.split(":");a.value=ag.toRating(a.value),a.id=b[0]}}}let ah={TT2:"title",TP1:"artist",TP2:"albumartist",TAL:"album",TYE:"year",COM:"comment",TRK:"track",TPA:"disk",TCO:"genre",PIC:"picture",TCM:"composer",TOR:"originaldate",TOT:"originalalbum",TXT:"lyricist",TP3:"conductor",TPB:"label",TT1:"grouping",TT3:"subtitle",TLA:"language",TCR:"copyright",WCP:"license",TEN:"encodedby",TSS:"encodersettings",WAR:"website",PCS:"podcast",TCP:"compilation",TDR:"date",TS2:"albumartistsort",TSA:"albumsort",TSC:"composersort",TSP:"artistsort",TST:"titlesort",WFD:"podcasturl",TBP:"bpm",GP1:"grouping"};class ai extends ab{constructor(){super(["ID3v2.2"],ah)}}let aj={Title:"title",Artist:"artist",Artists:"artists","Album Artist":"albumartist",Album:"album",Year:"date",Originalyear:"originalyear",Originaldate:"originaldate",Releasedate:"releasedate",Comment:"comment",Track:"track",Disc:"disk",DISCNUMBER:"disk",Genre:"genre","Cover Art (Front)":"picture","Cover Art (Back)":"picture",Composer:"composer",Lyrics:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",Lyricist:"lyricist",Writer:"writer",Conductor:"conductor",MixArtist:"remixer",Arranger:"arranger",Engineer:"engineer",Producer:"producer",DJMixer:"djmixer",Mixer:"mixer",Label:"label",Grouping:"grouping",Subtitle:"subtitle",DiscSubtitle:"discsubtitle",Compilation:"compilation",BPM:"bpm",Mood:"mood",Media:"media",CatalogNumber:"catalognumber",MUSICBRAINZ_ALBUMSTATUS:"releasestatus",MUSICBRAINZ_ALBUMTYPE:"releasetype",RELEASECOUNTRY:"releasecountry",Script:"script",Language:"language",Copyright:"copyright",LICENSE:"license",EncodedBy:"encodedby",EncoderSettings:"encodersettings",Barcode:"barcode",ISRC:"isrc",ASIN:"asin",musicbrainz_trackid:"musicbrainz_recordingid",musicbrainz_releasetrackid:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",Acoustid_Id:"acoustid_id",ACOUSTID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",Weblink:"website",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",MP3GAIN_MINMAX:"replaygain_track_minmax",MP3GAIN_UNDO:"replaygain_undo"};class ak extends ab{constructor(){super(["APEv2"],aj)}}let al={"©nam":"title","©ART":"artist",aART:"albumartist","----:com.apple.iTunes:Band":"albumartist","©alb":"album","©day":"date","©cmt":"comment","©com":"comment",trkn:"track",disk:"disk","©gen":"genre",covr:"picture","©wrt":"composer","©lyr":"lyrics",soal:"albumsort",sonm:"titlesort",soar:"artistsort",soaa:"albumartistsort",soco:"composersort","----:com.apple.iTunes:LYRICIST":"lyricist","----:com.apple.iTunes:CONDUCTOR":"conductor","----:com.apple.iTunes:REMIXER":"remixer","----:com.apple.iTunes:ENGINEER":"engineer","----:com.apple.iTunes:PRODUCER":"producer","----:com.apple.iTunes:DJMIXER":"djmixer","----:com.apple.iTunes:MIXER":"mixer","----:com.apple.iTunes:LABEL":"label","©grp":"grouping","----:com.apple.iTunes:SUBTITLE":"subtitle","----:com.apple.iTunes:DISCSUBTITLE":"discsubtitle",cpil:"compilation",tmpo:"bpm","----:com.apple.iTunes:MOOD":"mood","----:com.apple.iTunes:MEDIA":"media","----:com.apple.iTunes:CATALOGNUMBER":"catalognumber",tvsh:"tvShow",tvsn:"tvSeason",tves:"tvEpisode",sosn:"tvShowSort",tven:"tvEpisodeId",tvnn:"tvNetwork",pcst:"podcast",purl:"podcasturl","----:com.apple.iTunes:MusicBrainz Album Status":"releasestatus","----:com.apple.iTunes:MusicBrainz Album Type":"releasetype","----:com.apple.iTunes:MusicBrainz Album Release Country":"releasecountry","----:com.apple.iTunes:SCRIPT":"script","----:com.apple.iTunes:LANGUAGE":"language",cprt:"copyright","©cpy":"copyright","----:com.apple.iTunes:LICENSE":"license","©too":"encodedby",pgap:"gapless","----:com.apple.iTunes:BARCODE":"barcode","----:com.apple.iTunes:ISRC":"isrc","----:com.apple.iTunes:ASIN":"asin","----:com.apple.iTunes:NOTES":"comment","----:com.apple.iTunes:MusicBrainz Track Id":"musicbrainz_recordingid","----:com.apple.iTunes:MusicBrainz Release Track Id":"musicbrainz_trackid","----:com.apple.iTunes:MusicBrainz Album Id":"musicbrainz_albumid","----:com.apple.iTunes:MusicBrainz Artist Id":"musicbrainz_artistid","----:com.apple.iTunes:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","----:com.apple.iTunes:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","----:com.apple.iTunes:MusicBrainz Work Id":"musicbrainz_workid","----:com.apple.iTunes:MusicBrainz TRM Id":"musicbrainz_trmid","----:com.apple.iTunes:MusicBrainz Disc Id":"musicbrainz_discid","----:com.apple.iTunes:Acoustid Id":"acoustid_id","----:com.apple.iTunes:Acoustid Fingerprint":"acoustid_fingerprint","----:com.apple.iTunes:MusicIP PUID":"musicip_puid","----:com.apple.iTunes:fingerprint":"musicip_fingerprint","----:com.apple.iTunes:replaygain_track_gain":"replaygain_track_gain","----:com.apple.iTunes:replaygain_track_peak":"replaygain_track_peak","----:com.apple.iTunes:replaygain_album_gain":"replaygain_album_gain","----:com.apple.iTunes:replaygain_album_peak":"replaygain_album_peak","----:com.apple.iTunes:replaygain_track_minmax":"replaygain_track_minmax","----:com.apple.iTunes:replaygain_album_minmax":"replaygain_album_minmax","----:com.apple.iTunes:replaygain_undo":"replaygain_undo",gnre:"genre","----:com.apple.iTunes:ALBUMARTISTSORT":"albumartistsort","----:com.apple.iTunes:ARTISTS":"artists","----:com.apple.iTunes:ORIGINALDATE":"originaldate","----:com.apple.iTunes:ORIGINALYEAR":"originalyear","----:com.apple.iTunes:RELEASEDATE":"releasedate",desc:"description",ldes:"longDescription","©mvn":"movement","©mvi":"movementIndex","©mvc":"movementTotal","©wrk":"work",catg:"category",egid:"podcastId",hdvd:"hdVideo",keyw:"keywords",shwm:"showMovement",stik:"stik",rate:"rating"};class am extends ab{constructor(){super(["iTunes"],al)}postMap(a,b){"rate"===a.id&&(a.value={source:void 0,rating:Number.parseFloat(a.value)/100})}}let an={TITLE:"title",ARTIST:"artist",ARTISTS:"artists",ALBUMARTIST:"albumartist","ALBUM ARTIST":"albumartist",ALBUM:"album",DATE:"date",ORIGINALDATE:"originaldate",ORIGINALYEAR:"originalyear",RELEASEDATE:"releasedate",COMMENT:"comment",TRACKNUMBER:"track",DISCNUMBER:"disk",GENRE:"genre",METADATA_BLOCK_PICTURE:"picture",COMPOSER:"composer",LYRICS:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",LYRICIST:"lyricist",WRITER:"writer",CONDUCTOR:"conductor",REMIXER:"remixer",ARRANGER:"arranger",ENGINEER:"engineer",PRODUCER:"producer",DJMIXER:"djmixer",MIXER:"mixer",LABEL:"label",GROUPING:"grouping",SUBTITLE:"subtitle",DISCSUBTITLE:"discsubtitle",TRACKTOTAL:"totaltracks",DISCTOTAL:"totaldiscs",COMPILATION:"compilation",RATING:"rating",BPM:"bpm",KEY:"key",MOOD:"mood",MEDIA:"media",CATALOGNUMBER:"catalognumber",RELEASESTATUS:"releasestatus",RELEASETYPE:"releasetype",RELEASECOUNTRY:"releasecountry",SCRIPT:"script",LANGUAGE:"language",COPYRIGHT:"copyright",LICENSE:"license",ENCODEDBY:"encodedby",ENCODERSETTINGS:"encodersettings",BARCODE:"barcode",ISRC:"isrc",ASIN:"asin",MUSICBRAINZ_TRACKID:"musicbrainz_recordingid",MUSICBRAINZ_RELEASETRACKID:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",ACOUSTID_ID:"acoustid_id",ACOUSTID_ID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",WEBSITE:"website",NOTES:"notes",TOTALTRACKS:"totaltracks",TOTALDISCS:"totaldiscs",DISCOGS_ARTIST_ID:"discogs_artist_id",DISCOGS_ARTISTS:"artists",DISCOGS_ARTIST_NAME:"artists",DISCOGS_ALBUM_ARTISTS:"albumartist",DISCOGS_CATALOG:"catalognumber",DISCOGS_COUNTRY:"releasecountry",DISCOGS_DATE:"originaldate",DISCOGS_LABEL:"label",DISCOGS_LABEL_ID:"discogs_label_id",DISCOGS_MASTER_RELEASE_ID:"discogs_master_release_id",DISCOGS_RATING:"discogs_rating",DISCOGS_RELEASED:"date",DISCOGS_RELEASE_ID:"discogs_release_id",DISCOGS_VOTES:"discogs_votes",CATALOGID:"catalognumber",STYLE:"genre",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",REPLAYGAIN_ALBUM_GAIN:"replaygain_album_gain",REPLAYGAIN_ALBUM_PEAK:"replaygain_album_peak",REPLAYGAIN_MINMAX:"replaygain_track_minmax",REPLAYGAIN_ALBUM_MINMAX:"replaygain_album_minmax",REPLAYGAIN_UNDO:"replaygain_undo"};class ao extends ${static toRating(a,b,c){return{source:a?a.toLowerCase():void 0,rating:Number.parseFloat(b)/c*$.maxRatingScore}}constructor(){super(["vorbis"],an)}postMap(a){if("RATING"===a.id)a.value=ao.toRating(void 0,a.value,100);else if(0===a.id.indexOf("RATING:")){let b=a.id.split(":");a.value=ao.toRating(b[1],a.value,1),a.id=b[0]}}}let ap={IART:"artist",ICRD:"date",INAM:"title",TITL:"title",IPRD:"album",ITRK:"track",IPRT:"track",COMM:"comment",ICMT:"comment",ICNT:"releasecountry",GNRE:"genre",IWRI:"writer",RATE:"rating",YEAR:"year",ISFT:"encodedby",CODE:"encodedby",TURL:"website",IGNR:"genre",IENG:"engineer",ITCH:"technician",IMED:"media",IRPD:"album"};class aq extends ${constructor(){super(["exif"],ap)}}let ar={"segment:title":"title","album:ARTIST":"albumartist","album:ARTISTSORT":"albumartistsort","album:TITLE":"album","album:DATE_RECORDED":"originaldate","album:DATE_RELEASED":"releasedate","album:PART_NUMBER":"disk","album:TOTAL_PARTS":"totaltracks","track:ARTIST":"artist","track:ARTISTSORT":"artistsort","track:TITLE":"title","track:PART_NUMBER":"track","track:MUSICBRAINZ_TRACKID":"musicbrainz_recordingid","track:MUSICBRAINZ_ALBUMID":"musicbrainz_albumid","track:MUSICBRAINZ_ARTISTID":"musicbrainz_artistid","track:PUBLISHER":"label","track:GENRE":"genre","track:ENCODER":"encodedby","track:ENCODER_OPTIONS":"encodersettings","edition:TOTAL_PARTS":"totaldiscs",picture:"picture"};class as extends ab{constructor(){super(["matroska"],ar)}}let at={NAME:"title",AUTH:"artist","(c) ":"copyright",ANNO:"comment"};class au extends ${constructor(){super(["AIFF"],at)}}var av=a.i(74777);class aw{constructor(){this.tagMappers={},[new aa,new ai,new ae,new am,new am,new ao,new ak,new ag,new aq,new as,new au].forEach(a=>{this.registerTagMapper(a)})}mapTag(a,b,c){if(this.tagMappers[a])return this.tagMappers[a].mapGenericTag(b,c);throw new av.InternalParserError(`No generic tag mapper defined for tag-format: ${a}`)}registerTagMapper(a){for(let b of a.tagTypes)this.tagMappers[b]=a}}var ax=a.i(68231);let ay=/\[(\d{2}):(\d{2})\.(\d{2,3})]/,az=(0,p.default)("music-metadata:collector"),aA=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"];class aB{constructor(a){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new aw,this.opts=a;let b=1;for(const a of aA)this.originPriority[a]=b++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(a){az(`streamInfo: type=${a.type?X.TrackTypeValueToKeyMap[a.type]:"?"}, codec=${a.codecName}`),this.format.trackInfo.push(a)}setFormat(a,b){az(`format: ${a} = ${b}`),this.format[a]=b,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:a,value:b}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(a,b,c){az(`tag ${a}.${b} = ${c}`),this.native[a]||(this.format.tagTypes.push(a),this.native[a]=[]),this.native[a].push({id:b,value:c}),await this.toCommon(a,b,c)}addWarning(a){this.quality.warnings.push({message:a})}async postMap(a,b){switch(b.id){case"artist":return this.handleSingularArtistTag(a,b,"artist","artists");case"albumartist":return this.handleSingularArtistTag(a,b,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(a,b,"artist","artists");case"albumartists":return this.handlePluralArtistTag(a,b,"albumartist","albumartists");case"picture":return this.postFixPicture(b.value).then(c=>{null!==c&&(b.value=c,this.setGenericTag(a,b))});case"totaltracks":this.common.track.of=$.toIntOrNull(b.value);return;case"totaldiscs":this.common.disk.of=$.toIntOrNull(b.value);return;case"movementTotal":this.common.movementIndex.of=$.toIntOrNull(b.value);return;case"track":case"disk":case"movementIndex":{let a=this.common[b.id].of;this.common[b.id]=$.normalizeTrack(b.value),this.common[b.id].of=null!=a?a:this.common[b.id].of;return}case"bpm":case"year":case"originalyear":b.value=Number.parseInt(b.value,10);break;case"date":{let a=Number.parseInt(b.value.substr(0,4),10);Number.isNaN(a)||(this.common.year=a);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":b.value="string"==typeof b.value?Number.parseInt(b.value,10):b.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":b.value=(0,ac.toRatio)(b.value);break;case"replaygain_track_minmax":b.value=b.value.split(",").map(a=>Number.parseInt(a,10));break;case"replaygain_undo":{let a=b.value.split(",").map(a=>Number.parseInt(a,10));b.value={leftChannel:a[0],rightChannel:a[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":b.value="1"===b.value||1===b.value;break;case"isrc":{let a=this.common[b.id];if(a&&-1!==a.indexOf(b.value))return;break}case"comment":"string"==typeof b.value&&(b.value={text:b.value}),"iTunPGAP"===b.value.descriptor&&this.setGenericTag(a,{id:"gapless",value:"1"===b.value.text});break;case"lyrics":var c,d;"string"==typeof b.value&&(c=b.value,b.value=ay.test(c)?function(a){let b=a.split("\n"),c=[];for(let a of b){let b=a.match(ay);if(b){let d=(60*Number.parseInt(b[1],10)+Number.parseInt(b[2],10))*1e3+(3===b[3].length?Number.parseInt(b[3],10):10*Number.parseInt(b[3],10)),e=a.replace(ay,"").trim();c.push({timestamp:d,text:e})}}return{contentType:ax.LyricsContentType.lyrics,timeStampFormat:ax.TimestampFormat.milliseconds,text:c.map(a=>a.text).join("\n"),syncText:c}}(c):(d=c,{contentType:ax.LyricsContentType.lyrics,timeStampFormat:ax.TimestampFormat.notSynchronized,text:d.trim(),syncText:[]}))}null!==b.value&&this.setGenericTag(a,b)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(a,b,c,d){if(this.commonOrigin[c]===this.originPriority[a])return this.postMap("artificial",{id:d,value:b.value});this.common[d]||this.setGenericTag("artificial",{id:d,value:b.value}),this.setGenericTag(a,b)}handlePluralArtistTag(a,b,c,d){if((!this.common[c]||this.commonOrigin[c]===this.originPriority.artificial)&&(!this.common[d]||-1===this.common[d].indexOf(b.value))){var e;let a=(e=(this.common[d]||[]).concat([b.value])).length>2?`${e.slice(0,e.length-1).join(", ")} & ${e[e.length-1]}`:e.join(" & ");this.setGenericTag("artificial",{id:c,value:a})}this.setGenericTag(a,b)}async postFixPicture(a){if(a.data&&a.data.length>0){if(!a.format){let b=await N(Uint8Array.from(a.data));if(!b)return null;a.format=b.mime}return a.format=a.format.toLocaleLowerCase(),"image/jpg"===a.format&&(a.format="image/jpeg"),a}return this.addWarning("Empty picture tag found"),null}async toCommon(a,b,c){let d=this.tagMapper.mapTag(a,{id:b,value:c},this);d&&await this.postMap(a,d)}setGenericTag(a,b){var c,d;az(`common.${b.id} = ${b.value}`);let e=this.commonOrigin[b.id]||1e3,f=this.originPriority[a];if(Z[c=b.id]&&!Z[c].multiple)if(!(f<=e))return az(`Ignore native tag (singleton): ${a}.${b.id} = ${b.value}`);else this.common[b.id]=b.value,this.commonOrigin[b.id]=f;else if(f===e)(!Z[d=b.id].multiple||Z[d].unique)&&-1!==this.common[b.id].indexOf(b.value)?az(`Ignore duplicate value: ${a}.${b.id} = ${b.value}`):this.common[b.id].push(b.value);else{if(!(f<e))return az(`Ignore native tag (list): ${a}.${b.id} = ${b.value}`);this.common[b.id]=[b.value],this.commonOrigin[b.id]=f}this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"common",id:b.id,value:b.value}})}}let aC={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],load:async()=>(await a.A(46769)).MpegParser},aD={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],load:async()=>(await a.A(92102)).APEv2Parser},aE={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],load:async()=>(await a.A(1995)).AsfParser},aF={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],load:async()=>(await a.A(89469)).DsdiffParser},aG={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],load:async()=>(await a.A(60519)).AIFFParser},aH={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],load:async()=>(await a.A(48352)).DsfParser},aI={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],load:async()=>(await a.A(17808)).FlacParser},aJ={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],load:async()=>(await a.A(71875)).MatroskaParser},aK={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],load:async()=>(await a.A(7219)).MP4Parser},aL={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],load:async()=>(await a.A(75093)).MusepackParser},aM={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],load:async()=>(await a.A(99889)).OggParser},aN={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],load:async()=>(await a.A(56564)).WavPackParser},aO={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],load:async()=>(await a.A(14180)).WaveParser},aP=(0,p.default)("music-metadata:parser:factory");class aQ{constructor(){this.parsers=[],[aI,aC,aD,aK,aJ,aO,aM,aE,aG,aN,aL,aH,aF].forEach(a=>{this.registerParser(a)})}registerParser(a){this.parsers.push(a)}async parse(a,b,c){if(a.supportsRandomAccess()?(aP("tokenizer supports random-access, scanning for appending headers"),await aW(a,c)):aP("tokenizer does not support random-access, cannot scan for appending headers"),!b){let c=new Uint8Array(4100);if(a.fileInfo.mimeType&&(b=this.findLoaderForContentType(a.fileInfo.mimeType)),!b&&a.fileInfo.path&&(b=this.findLoaderForExtension(a.fileInfo.path)),!b){aP("Guess parser on content..."),await a.peekBuffer(c,{mayBeLess:!0});let d=await N(c,{mpegOffsetTolerance:10});if(!d||!d.mime)throw new av.CouldNotDetermineFileTypeError("Failed to determine audio format");if(aP(`Guessed file type is mime=${d.mime}, extension=${d.ext}`),!(b=this.findLoaderForContentType(d.mime)))throw new av.UnsupportedFileTypeError(`Guessed MIME-type not supported: ${d.mime}`)}}aP(`Loading ${b.parserType} parser...`);let d=new aB(c),e=new(await b.load())(d,a,c??{});return aP(`Parser ${b.parserType} loaded`),await e.parse(),d.format.trackInfo&&(void 0===d.format.hasAudio&&d.setFormat("hasAudio",!!d.format.trackInfo.find(a=>a.type===X.TrackType.audio)),void 0===d.format.hasVideo&&d.setFormat("hasVideo",!!d.format.trackInfo.find(a=>a.type===X.TrackType.video))),d.toCommonMetadata()}findLoaderForExtension(a){var b;let c;if(!a)return;let d=(-1===(c=(b=a).lastIndexOf("."))?"":b.substring(c)).toLocaleLowerCase()||a;return this.parsers.find(a=>-1!==a.extensions.indexOf(d))}findLoaderForContentType(a){let b;if(!a)return;try{let c,d;c=V.default.parse(a),b={type:(d=(0,W.parse)(c.type)).type,subtype:d.subtype,suffix:d.suffix,parameters:c.parameters}}catch(b){aP(`Invalid HTTP Content-Type header value: ${a}`);return}let c=0===b.subtype.indexOf("x-")?b.subtype.substring(2):b.subtype;return this.parsers.find(a=>a.mimeTypes.find(a=>-1!==a.indexOf(`${b.type}/${c}`)))}getSupportedMimeTypes(){let a=new Set;return this.parsers.forEach(b=>{b.mimeTypes.forEach(b=>{a.add(b),a.add(b.replace("/","/x-"))})}),Array.from(a)}}var aR=a.i(81318),aS=a.i(49597),aT=a.i(73635);async function aU(a){let b=a.fileInfo.size;if(b>=143){let c=new Uint8Array(15),d=a.position;await a.readBuffer(c,{position:b-143}),a.setPosition(d);let e=(0,aT.textDecode)(c,"latin1");if("LYRICS200"===e.substring(6))return Number.parseInt(e.substring(0,6),10)+15}return 0}async function aV(a,b={}){let c=(0,m.fromBlob)(a);try{var d,e;return await (d=c,e=b,new aQ().parse(d,void 0,e))}finally{await c.close()}}async function aW(a,b={}){let c=a.fileInfo.size;await (0,aS.hasID3v1Header)(a)&&(c-=128,c-=await aU(a)),b.apeHeader=await aR.APEv2Parser.findApeFooterOffset(a,c)}async function aX(a){try{let b=await aV(a,{duration:!0}),c=b.common.title?.trim()??"",d=b.common.artist?.trim()||b.common.artists?.[0]?.trim()||b.common.albumartist?.trim()||b.common.albumartists?.[0]?.trim()||"",e=b.common.album?.trim()??"",f=b.format.duration,g="number"==typeof f&&Number.isFinite(f)?Math.round(f):0;return{title:c,artist:d,album:e,durationSec:g}}catch{return null}}async function aY(a,b,c,d,e,f,g,h){if(!(f.maxScanDepth>0)||!(e>=f.maxScanDepth))for await(let[i,j]of c.entries()){let c=d?`${d}/${i}`:i;if("directory"===j.kind){if(f.followSymlinks&&g.has(c))continue;let d=f.followSymlinks?new Set(g):g;f.followSymlinks&&d.add(c),await aY(a,b,j,c,e+1,f,d,h)}else"file"===j.kind&&function(a,b){let c=a.lastIndexOf(".");if(c<0)return!1;let d=a.slice(c).toLowerCase();return(b??l).has(d)}(i,f.enabledExtensions)&&h.push({rootId:a,rootDisplayName:b,relativePath:c,handle:j})}}async function aZ(a,b){var c,d,e;let f,g,h=function(a,b){let c=a.lastIndexOf(".");if(c<0)return a;let d=a.slice(c).toLowerCase();return(b??l).has(d)?a.slice(0,c):a}((f=(c=a.relativePath).lastIndexOf("/"))>=0?c.slice(f+1):c,b),i=(d=a.relativePath,e=a.rootDisplayName,(g=d.split("/").filter(Boolean)).length>1?g[g.length-2]??e:e);try{let b=await a.handle.getFile(),c=await aX(b);return{id:`lib:${a.rootId}:${a.relativePath}`,title:c?.title?c.title:h,artist:c?.artist?c.artist:"Unknown artist",album:c?.album?c.album:i,durationSec:c?.durationSec&&c.durationSec>0?c.durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}}}catch{return{id:`lib:${a.rootId}:${a.relativePath}`,title:h,artist:"Unknown artist",album:i,durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}}}}async function a$(a,b,c){if(0===a.length)return[];let d=Array(a.length),e=0,f=0,g=a.length,h=()=>{c?.({filesDone:f,filesTotal:g})};h();let i=async()=>{for(;;){let c=e++;if(c>=a.length)break;d[c]=await aZ(a[c],b),f+=1,h()}},j=Math.min(6,a.length);return await Promise.all(Array.from({length:j},()=>i())),d}async function a_(a,b,c,d,e){e?.({phase:"walk"});let f=[];return await aY(a,b,c,"",0,d,new Set,f),e?.({phase:"metadata",filesDone:0,filesTotal:f.length}),a$(f,d.enabledExtensions,a=>{e?.({phase:"metadata",...a})})}async function a0(a,b,c,d){let e=[],f=0,g=null,h=a.filter(a=>b.has(a.id)),i=h.length;for(let a=0;a<h.length;a++){let j=h[a],k=b.get(j.id);if(!k)continue;let l=b=>{d?.({rootIndex:a,rootCount:i,rootName:j.name,phase:b.phase,filesDone:b.filesDone,filesTotal:b.filesTotal})};l({phase:"walk"});try{let a=await a_(j.id,j.name,k,c,a=>{"walk"===a.phase?l({phase:"walk"}):l({phase:"metadata",filesDone:a.filesDone,filesTotal:a.filesTotal})});e.push(...a)}catch(a){f+=1,g||(g=a instanceof DOMException?`${a.name}: ${a.message}`:a instanceof Error?a.message:String(a))}}return e.sort((a,b)=>{let c=a.library?.rootId??"",d=b.library?.rootId??"",e=c.localeCompare(d,void 0,{sensitivity:"base"});if(0!==e)return e;let f=a.library?.relativePath??a.title,g=b.library?.relativePath??b.title;return f.localeCompare(g,void 0,{sensitivity:"base"})}),{tracks:e,failedRootCount:f,firstError:g}}async function a1(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?(await f.getFileHandle(g)).getFile():null}function a2(a){let{progress:c,onDismiss:d}=a;return c?(0,b.jsxs)("div",{role:"status","aria-live":"polite","aria-busy":c.percent<100,className:"pointer-events-auto fixed bottom-4 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-zinc-200/90 bg-white/95 p-4 pr-10 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-zinc-700/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,b.jsx)("button",{type:"button",onClick:d,className:"absolute right-2 top-2 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200","aria-label":"Dismiss notification",children:(0,b.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:(0,b.jsx)("path",{d:"M6 6l12 12M18 6L6 18",strokeLinecap:"round"})})}),(0,b.jsx)("p",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:c.percent>=100?"Library scan complete":"Scanning library"}),(0,b.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600 dark:text-zinc-400",children:c.label}),(0,b.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c.percent,"aria-label":"Library scan progress",className:"mt-3 h-1.5 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-amber-500 transition-[width] duration-200 ease-out dark:bg-amber-400",style:{width:`${c.percent}%`}})}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[11px] tabular-nums text-zinc-500 dark:text-zinc-500",children:[c.percent,"%",c.filesTotal>0?(0,b.jsxs)("span",{className:"text-zinc-400",children:[" ","· ",c.filesDone,"/",c.filesTotal," files"]}):null]})]}):null}function a3(){return{maxScanDepth:0,followSymlinks:!1,enabledExtensions:[...g]}}function a4(){return a3()}function a5(a){}function a6(a){let b=new Set,c=[];for(let d of a){let a=d.youtubeQuery?.trim();!(!a||d.youtubeVideoId?.trim())&&(b.has(d.id)||(b.add(d.id),c.push({trackId:d.id,query:a})))}return c}a.s(["default",0,a3],17479),a.s(["default",0,a6],24388);var a7=a.i(41090);let a8=new Map;async function a9(a,b,c){let d=a.trim(),e=b.trim();if(!d||!e||(0,a7.default)())return null;let f=d.toLowerCase(),g=a8.get(f);if(g)return g;let h=new URL("https://www.googleapis.com/youtube/v3/search");h.searchParams.set("part","snippet"),h.searchParams.set("type","video"),h.searchParams.set("maxResults","5"),h.searchParams.set("videoEmbeddable","true"),h.searchParams.set("q",d),h.searchParams.set("key",e);let i=await fetch(h,{signal:c}),j=await i.json();if(!i.ok){let a,b=j.error?.message?.trim()??"";return(j.error?.errors?.some(a=>"quotaExceeded"===a.reason)||(a=b.toLowerCase()).includes("quota")||a.includes("quotaexceeded"))&&(0,a7.setYoutubeDataApiBlockedInternal)(!0),null}for(let a of j.items??[]){let b=a.id?.videoId?.trim();if(b)return a8.set(f,b),b}return null}async function ba(a,b,c,d={}){let e=b.trim();if(!e||0===a.length||(0,a7.default)())return;let f="number"==typeof d.maxConcurrent&&d.maxConcurrent>0?Math.floor(d.maxConcurrent):3,g=d.signal,h=0,i=async()=>{for(;h<a.length;){if(g?.aborted)return;let b=h;h+=1;let d=a[b];if((0,a7.default)())return;let f=null;try{f=await a9(d.query,e,g)}catch{continue}!(g?.aborted||(0,a7.default)())&&f&&c(d.trackId,f)}},j=Array.from({length:Math.min(f,a.length)},()=>i());await Promise.all(j)}a.s(["default",0,ba],2196);var bb=a.i(37978);let bc=(0,c.createContext)(null);function bd(a,b){}function be(a,b){let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),[...c].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"}))}let bf="Use Rescan all in Settings → Library, or remove and add the folders again so the browser can access your music.";async function bg(a){if(0===a.size)return!1;let b={mode:"read"};for(let c of a.values())try{let a=await c.queryPermission?.(b);if("granted"!==a)return!1}catch{return!1}return!0}async function bh(a,b){let c={mode:"read"};for(let d of a.values())try{let a=await d.queryPermission?.(c);if("granted"===a||!b)continue;await d.requestPermission?.(c)}catch{}}a.s(["LibraryProvider",0,function(a){let g=(0,c.useRef)(null),l=(0,c.useRef)(!1),m=(0,c.useRef)(new Map),n=(0,c.useRef)([]),o=(0,c.useRef)([]),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=(0,c.useRef)(!1),s=(0,c.useRef)(a4()),t=(0,c.useRef)(!1),u=(0,c.useRef)(!1),v=(0,c.useRef)({activeQueueId:null,positionSec:0}),w=(0,c.useRef)(null),[x,y]=(0,c.useState)([]),[z,A]=(0,c.useState)([]),[B,C]=(0,c.useState)([]),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)([]),[H,I]=(0,c.useState)([]),[J,K]=(0,c.useState)([]),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(!0),[P,Q]=(0,c.useState)(a4),[R,S]=(0,c.useState)(!1),[T,U]=(0,c.useState)(null),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)(!1),[_,aa]=(0,c.useState)(null),[ab,ac]=(0,c.useState)(null),[ad,ae]=(0,c.useState)(!1);(0,c.useEffect)(()=>{Promise.resolve().then(()=>{ae(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{K([].slice(0,24))})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{M(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{O(!0)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{let a=a4();s.current=a,Q(a)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{t.current=!1,S(!1)})},[]),(0,c.useEffect)(()=>{J.slice(0,24)},[J]),(0,c.useEffect)(()=>{o.current=F},[F]),(0,c.useEffect)(()=>()=>{p.current&&(clearTimeout(p.current),p.current=null),q.current&&(clearTimeout(q.current),q.current=null),w.current&&(clearTimeout(w.current),w.current=null)},[]);let af=(0,c.useCallback)(()=>{if(!t.current)return;if(w.current&&(clearTimeout(w.current),w.current=null),0===H.length)return;let a=v.current.activeQueueId,b=a?H.find(b=>b.queueId===a):H[0];a5({trackIds:H.map(a=>a.track.id),tracks:H.map(a=>a.track),activeTrackId:b?.track.id??null,positionSec:v.current.positionSec})},[H]),ag=(0,c.useCallback)(()=>{!t.current||u.current&&(w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{w.current=null,af()},400))},[af]),ah=(0,c.useCallback)(a=>{u.current||(u.current=!0,t.current,Y(!0))},[]);(0,c.useEffect)(()=>{if(!u.current)return;let a=new Map(F.map(a=>[a.id,a]));I(b=>b.map(b=>{let c=a.get(b.track.id);return c?{...b,track:c}:b}))},[F]),(0,c.useEffect)(()=>{ag()},[H,ag]),(0,c.useEffect)(()=>{!V||u.current||ah(F)},[V,F,ah]),(0,c.useEffect)(()=>{let a=()=>{af()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[af]);let ai=(0,c.useCallback)(()=>{p.current&&(clearTimeout(p.current),p.current=null);let a=g.current;a&&j(a,n.current.map(a=>a.id),o.current).catch(()=>{})},[]),aj=(0,c.useCallback)(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{p.current=null,ai()},450)},[ai]);(0,c.useEffect)(()=>{let a=()=>{ai()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[ai]);let ak=(0,c.useCallback)(()=>{q.current&&(clearTimeout(q.current),q.current=null)},[]),al=(0,c.useCallback)(()=>{ak(),q.current=setTimeout(()=>{q.current=null,aa(null)},4e3)},[ak]),am=(0,c.useCallback)(()=>{ak(),aa(null)},[ak]),an=(0,c.useCallback)(a=>{aa({percent:function(a){if(a.rootCount<=0)return 0;let b=100/a.rootCount,c=a.rootIndex*b;if("walk"===a.phase)c+=.12*b;else{let d=a.filesTotal??0,e=a.filesDone??0;c+=b*(.12+.88*(d>0?Math.min(1,e/d):0))}return Math.min(100,Math.round(c))}(a),label:function(a){let b=a.rootCount>1?`[${a.rootIndex+1}/${a.rootCount}] `:"";if("walk"===a.phase)return`${b}Listing files in ${a.rootName}…`;let c=a.filesTotal??0,d=a.filesDone??0;return c>0?`${b}Reading tags (${d}/${c}) \xb7 ${a.rootName}`:`${b}Reading tags \xb7 ${a.rootName}`}(a),rootName:a.rootName,filesDone:a.filesDone??0,filesTotal:a.filesTotal??0})},[]),ao=(0,c.useCallback)(async a=>{if(l.current)return null;l.current=!0;let b=n.current,c=m.current;ak(),$(!0),ac(null),aa({percent:0,label:"Starting library scan…",rootName:null,filesDone:0,filesTotal:0});try{var d;b.length>0&&await bh(c,a);let e={maxScanDepth:(d=s.current).maxScanDepth,followSymlinks:d.followSymlinks,enabledExtensions:new Set(d.enabledExtensions)},f=await a0(b,c,e,an);return aa({percent:100,label:f.tracks.length>0?`Found ${f.tracks.length} track${1===f.tracks.length?"":"s"}`:"Scan complete",rootName:null,filesDone:f.tracks.length,filesTotal:f.tracks.length}),al(),f}catch(a){return aa(null),ac(a instanceof Error?a.message:"Scan failed"),null}finally{l.current=!1,$(!1)}},[an,ak,al]),ap=(0,c.useCallback)(async(a=!1)=>{let b=await ao(a);if(!b)return;let c=n.current,{tracks:d,failedRootCount:e,firstError:f}=b;G(d);let h=g.current;if(h)try{await j(h,c.map(a=>a.id),d)}catch{}a&&e>0&&0===d.length&&c.length>0&&ac(f?`${f} ${bf}`:bf)},[ao]),aq=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(b)||b<=0)return;let c=c=>c.id===a&&c.durationSec<=0?{...c,durationSec:b}:c;G(a=>a.map(c)),I(a=>a.map(a=>({...a,track:c(a.track)}))),aj()},[aj]),ar=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return;let d=a=>a.id===c?b(a):a;G(a=>a.map(d)),I(a=>a.map(a=>({...a,track:d(a.track)})))},[]);(0,c.useEffect)(()=>{let a=(0,bb.default)();if(!a||(0,a7.default)())return;let b=a6(H.map(a=>a.track)).slice(0,8);if(0===b.length)return;let c=new AbortController;return ba(b,a,(a,b)=>{ar(a,a=>({...a,youtubeVideoId:b}))},{signal:c.signal}),()=>{c.abort()}},[H,ar]);let as=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(a=>({queueId:crypto.randomUUID(),track:a}));I(a=>[...a,...b])},[]),at=(0,c.useCallback)(a=>{G(b=>b.some(b=>b.id===a.id)?b:[...b,a]),aj()},[aj]),au=(0,c.useCallback)(a=>{I(b=>b.filter(b=>b.queueId!==a))},[]),av=(0,c.useCallback)(()=>{I([])},[]),aw=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(a)||!Number.isFinite(b))return;let c=Math.trunc(a),d=Math.trunc(b);I(a=>{if(c<0||d<0||c>=a.length||d>=a.length||c===d)return a;let b=[...a],[e]=b.splice(c,1);return b.splice(d,0,e),b})},[]),ax=(0,c.useCallback)(a=>{let b=a.trim();b&&K(a=>[b,...a.filter(a=>a!==b)].slice(0,24))},[]),ay=(0,c.useCallback)(a=>{M(a),bd("muzical.compactLists",a)},[]),az=(0,c.useCallback)(a=>{O(a),bd("muzical.autoRescanOnStartup",a)},[]),aA=(0,c.useCallback)(a=>{s.current=a,Q(a)},[]),aB=(0,c.useCallback)(a=>{t.current=a,S(a),bd("muzical.rememberLastQueue",a),a?af():a5({trackIds:[],activeTrackId:null,positionSec:0})},[af]),aC=(0,c.useCallback)(()=>{U(null)},[]),aD=(0,c.useCallback)((a,b)=>{v.current={activeQueueId:a,positionSec:b},ag()},[ag]),aE=(0,c.useCallback)(a=>a1(a,m.current),[]),aF=(0,c.useMemo)(()=>new Set(x),[x]),aG=(0,c.useMemo)(()=>new Set(z),[z]),aH=(0,c.useMemo)(()=>new Set(B),[B]),aI=(0,c.useCallback)(a=>aF.has(a),[aF]),aJ=(0,c.useCallback)(a=>aG.has(a),[aG]),aK=(0,c.useCallback)(a=>aH.has(a),[aH]),aL=(0,c.useCallback)(a=>{y(b=>be(b,a))},[]),aM=(0,c.useCallback)(a=>{A(b=>be(b,a))},[]),aN=(0,c.useCallback)(a=>{C(b=>be(b,a))},[]),aO=(0,c.useCallback)(a=>{aL(a.id)},[aL]);(0,c.useEffect)(()=>{if(!r.current)return;let a=g.current;a&&(function(a,b){if(!a.objectStoreNames.contains(f))return Promise.reject(Error(`Missing object store ${f}`));let c={key:i,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]};return new Promise((b,d)=>{let e=a.transaction(f,"readwrite"),g=e.objectStore(f).put(c);g.onerror=()=>{d(g.error??Error("IndexedDB favorites put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{d(e.error??Error("IndexedDB favorites transaction failed"))}})})(a,{songIds:x,artistNames:z,albumKeys:B}).catch(()=>{})},[x,z,B]);let aP=(0,c.useCallback)(async a=>{try{let b=crypto.randomUUID(),c=Date.now(),d={id:b,name:a.name,addedAt:c,handle:a},f=g.current;if(!f)return void ac("Library database is not ready yet.");await new Promise((a,b)=>{let c=f.transaction(e,"readwrite"),g=c.objectStore(e).put(d);g.onerror=()=>{b(g.error??Error("IndexedDB put failed"))},c.oncomplete=()=>{a()},c.onerror=()=>{b(c.error??Error("IndexedDB transaction failed"))}}),m.current.set(b,a);let h=[...n.current,{id:b,name:a.name,addedAt:c}];n.current=h,E(h),await ap(!0)}catch(a){ac(function(a){if(a instanceof DOMException){if("AbortError"===a.name)return"";if("SecurityError"===a.name||"NotAllowedError"===a.name||a.message.includes("not allowed by the user agent")||a.message.includes("The request is not allowed"))return"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost."}if(a instanceof Error){let b=a.message;return b.includes("not allowed by the user agent")||b.includes("The request is not allowed")?"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost.":b}return"Could not access the folder."}(a))}},[ap]),aQ=(0,c.useCallback)(()=>{},[ad,aP]),aR=(0,c.useCallback)(async a=>{let b=g.current;if(b)try{await new Promise((c,d)=>{let f=b.transaction(e,"readwrite"),g=f.objectStore(e).delete(a);g.onerror=()=>{d(g.error??Error("IndexedDB delete failed"))},f.oncomplete=()=>{c()},f.onerror=()=>{d(f.error??Error("IndexedDB transaction failed"))}}),m.current.delete(a);let c=n.current.filter(b=>b.id!==a);n.current=c,E(c),await ap(!0)}catch(a){ac(a instanceof Error?a.message:"Could not remove library folder")}},[ap]),aS=(0,c.useCallback)(async()=>{await ap(!0)},[ap]);(0,c.useEffect)(()=>{let a=!1;return(async()=>{let b=[];try{var c;let l=await new Promise((a,b)=>{let c=indexedDB.open(d,3);c.onerror=()=>{b(c.error??Error("IndexedDB open failed"))},c.onsuccess=()=>{a(c.result)},c.onupgradeneeded=()=>{let a=c.result;a.objectStoreNames.contains(e)||a.createObjectStore(e,{keyPath:"id"}),a.objectStoreNames.contains(f)||a.createObjectStore(f,{keyPath:"key"})}});if(a)return void l.close();g.current=l;try{let b=await (!l.objectStoreNames.contains(f)?Promise.resolve(k()):new Promise((a,b)=>{let c=l.transaction(f,"readonly").objectStore(f).get(i);c.onerror=()=>{b(c.error??Error("IndexedDB favorites get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===i&&Array.isArray(b.songIds)&&Array.isArray(b.artistNames)&&Array.isArray(b.albumKeys)?a({key:i,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]}):a(k())}}));a||(y(b.songIds),A(b.artistNames),C(b.albumKeys))}catch{a||(y([]),A([]),C([]))}a||(r.current=!0),navigator.storage?.persist?.();let o=await new Promise((a,b)=>{let c=l.transaction(e,"readonly").objectStore(e).getAll();c.onerror=()=>{b(c.error??Error("IndexedDB getAll failed"))},c.onsuccess=()=>{a(c.result)}});if(a)return;let p=new Map,q=[];for(let a of o)p.set(a.id,a.handle),q.push({id:a.id,name:a.name,addedAt:a.addedAt});if(a)return;m.current=p,n.current=q,E(q),b=[];let s=!1;try{let d=await (!l.objectStoreNames.contains(f)?Promise.resolve(null):new Promise((a,b)=>{let c=l.transaction(f,"readonly").objectStore(f).get(h);c.onerror=()=>{b(c.error??Error("IndexedDB catalog get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===h&&Array.isArray(b.rootIds)&&Array.isArray(b.tracks)?a(b):a(null)}}));!a&&d&&q.length>0&&(c=d.rootIds,q.length===c.length&&[...q].map(a=>a.id).sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})).every((a,b)=>a===c[b]))&&(b=d.tracks,G(b),s=!0)}catch{}if(a)return;let t=q.length>0&&await bg(p);if(a)return;if(t&&!a){let c=await ao(!1);if(a||!c)return;let{tracks:d,firstError:e,failedRootCount:f}=c;if(0===d.length&&q.length>0&&f>0)if(s)ac(null);else{b=d,G(b);try{await j(l,q.map(a=>a.id),d)}catch{}ac(e?`${e} ${bf}`:bf)}else{b=d,G(b);try{await j(l,q.map(a=>a.id),d)}catch{}}}}catch(b){a||ac(b instanceof Error?b.message:"Could not load library")}finally{a||(u.current||ah(b),W(!0))}})(),()=>{a=!0}},[ao,ah]);let aT=(0,c.useMemo)(()=>({roots:D,libraryTracks:F,queue:H,recentlyPlayedTrackIds:J,compactLists:L,autoRescanOnStartup:N,scanPreferences:P,rememberLastQueue:R,playbackRestore:T,isQueueReady:X,isScanning:Z,scanError:ab,hasDirectoryPicker:ad,addLibraryFolder:aQ,removeLibraryFolder:aR,rescanAll:aS,addToQueue:as,addToLibrary:at,removeFromQueue:au,clearQueue:av,recordRecentlyPlayedTrack:ax,setCompactLists:ay,setAutoRescanOnStartup:az,setScanPreferences:aA,setRememberLastQueue:aB,consumePlaybackRestore:aC,reportPlayback:aD,reorderQueueItems:aw,resolveFileForTrack:aE,bumpTrackDuration:aq,patchTrackById:ar,favoriteSongIds:x,favoriteArtistNames:z,favoriteAlbumKeys:B,isFavoriteSong:aI,isFavoriteArtist:aJ,isFavoriteAlbum:aK,toggleFavoriteSong:aL,toggleFavoriteArtist:aM,toggleFavoriteAlbum:aN,toggleFavoriteTrack:aO}),[D,F,H,J,L,N,P,R,T,X,Z,ab,ad,aQ,aR,aS,as,at,au,av,ax,ay,az,aA,aB,aC,aD,aw,aE,aq,ar,x,z,B,aI,aJ,aK,aL,aM,aN,aO]);return(0,b.jsxs)(bc.Provider,{value:aT,children:[a.children,(0,b.jsx)(a2,{progress:_,onDismiss:am})]})},"useLibrary",0,function(){let a=(0,c.useContext)(bc);if(!a)throw Error("useLibrary must be used within LibraryProvider");return a}],58760)}];
|
|
1
|
+
module.exports=[91465,(a,b,c)=>{"use strict";var d=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,e=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,g=/\\([\u000b\u0020-\u00ff])/g,h=/([\\"])/g,i=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function j(a){this.parameters=Object.create(null),this.type=a}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.parameters,c=a.type;if(!c||!i.test(c))throw TypeError("invalid type");var d=c;if(b&&"object"==typeof b)for(var g,j=Object.keys(b).sort(),k=0;k<j.length;k++){if(g=j[k],!f.test(g))throw TypeError("invalid parameter name");d+="; "+g+"="+function(a){var b=String(a);if(f.test(b))return b;if(b.length>0&&!e.test(b))throw TypeError("invalid parameter value");return'"'+b.replace(h,"\\$1")+'"'}(b[g])}return d},c.parse=function(a){if(!a)throw TypeError("argument string is required");var b,c,e,f="object"==typeof a?function(a){var b;if("function"==typeof a.getHeader?b=a.getHeader("content-type"):"object"==typeof a.headers&&(b=a.headers&&a.headers["content-type"]),"string"!=typeof b)throw TypeError("content-type header is missing from object");return b}(a):a;if("string"!=typeof f)throw TypeError("argument string is required to be a string");var h=f.indexOf(";"),k=-1!==h?f.slice(0,h).trim():f.trim();if(!i.test(k))throw TypeError("invalid media type");var l=new j(k.toLowerCase());if(-1!==h){for(d.lastIndex=h;c=d.exec(f);){if(c.index!==h)throw TypeError("invalid parameter format");h+=c[0].length,b=c[1].toLowerCase(),34===(e=c[2]).charCodeAt(0)&&-1!==(e=e.slice(1,-1)).indexOf("\\")&&(e=e.replace(g,"$1")),l.parameters[b]=e}if(h!==f.length)throw TypeError("invalid parameter format")}return l}},96151,(a,b,c)=>{"use strict";var d=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,e=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,f=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;function g(a,b,c){this.type=a,this.subtype=b,this.suffix=c}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.subtype,c=a.suffix,f=a.type;if(!f||!e.test(f))throw TypeError("invalid type");if(!b||!d.test(b))throw TypeError("invalid subtype");var g=f+"/"+b;if(c){if(!e.test(c))throw TypeError("invalid suffix");g+="+"+c}return g},c.parse=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");var b,c=f.exec(a.toLowerCase());if(!c)throw TypeError("invalid media type");var d=c[1],e=c[2],h=e.lastIndexOf("+");return -1!==h&&(b=e.substr(h+1),e=e.substr(0,h)),new g(d,e,b)},c.test=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");return f.test(a.toLowerCase())}},58760,14142,41994,96332,4355,27120,79340,14269,88965,18975,67486,80977,34991,47179,17479,24388,44803,91320,16564,73972,22451,2196,a=>{"use strict";a.s(["LibraryProvider",()=>ca,"useLibrary",()=>cb],58760);var b=a.i(39752),c=a.i(34542);function d(a){return`${a.source}\u0000${a.query.trim().toLowerCase()}`}function e(a){}a.s(["RECENT_BROWSE_SEARCHES_LIMIT",0,12],14142);let f="muzical-library",g="libraryRoots",h="libraryCatalog",i=[".mp3",".flac",".m4a",".aac",".ogg",".opus",".wav",".webm",".aiff",".aif",".alac",".wma"];a.s(["LIBRARY_AUDIO_EXTENSIONS",0,i,"LIBRARY_CATALOG_STORE_NAME",0,h,"LIBRARY_DB_NAME",0,f,"LIBRARY_DB_VERSION",0,3,"LIBRARY_STORE_NAME",0,g],41994);let j="catalog",k="favorites";function l(a,b,c){if(!a.objectStoreNames.contains(h))return Promise.reject(Error(`Missing object store ${h}`));let d={key:j,rootIds:[...b].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})),tracks:[...c],savedAt:Date.now()};return new Promise((b,c)=>{let e=a.transaction(h,"readwrite"),f=e.objectStore(h).put(d);f.onerror=()=>{c(f.error??Error("IndexedDB catalog put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{c(e.error??Error("IndexedDB catalog transaction failed"))}})}let m=()=>({key:k,songIds:[],artistNames:[],albumKeys:[]}),n=new Set(i);function o(a,b){let c=a.lastIndexOf(".");if(c<0)return a;let d=a.slice(c).toLowerCase();return(b??n).has(d)?a.slice(0,c):a}function p(a){let b=a.library;if(!b)return null;let{fileLastModified:c,fileSize:d}=b;return"number"==typeof c&&Number.isFinite(c)&&"number"==typeof d&&Number.isFinite(d)&&!(d<0)?{fileLastModified:c,fileSize:d}:null}a.s(["parseBlob",()=>aZ,"scanAppendingHeaders",()=>a$],96332),a.i(17588);var q=a.i(1766),r=a.i(1962),s=a.i(82663),t=a.i(35617);let u={get:a=>({signature:r.UINT32_LE.get(a,0),compressedSize:r.UINT32_LE.get(a,8),uncompressedSize:r.UINT32_LE.get(a,12)}),len:16},v={get(a){let b=r.UINT16_LE.get(a,6);return{signature:r.UINT32_LE.get(a,0),minVersion:r.UINT16_LE.get(a,4),dataDescriptor:!!(8&b),compressedMethod:r.UINT16_LE.get(a,8),compressedSize:r.UINT32_LE.get(a,18),uncompressedSize:r.UINT32_LE.get(a,22),filenameLength:r.UINT16_LE.get(a,26),extraFieldLength:r.UINT16_LE.get(a,28),filename:null}},len:30},w={get:a=>({signature:r.UINT32_LE.get(a,0),nrOfThisDisk:r.UINT16_LE.get(a,4),nrOfThisDiskWithTheStart:r.UINT16_LE.get(a,6),nrOfEntriesOnThisDisk:r.UINT16_LE.get(a,8),nrOfEntriesOfSize:r.UINT16_LE.get(a,10),sizeOfCd:r.UINT32_LE.get(a,12),offsetOfStartOfCd:r.UINT32_LE.get(a,16),zipFileCommentLength:r.UINT16_LE.get(a,20)}),len:22},x={get(a){let b=r.UINT16_LE.get(a,8);return{signature:r.UINT32_LE.get(a,0),minVersion:r.UINT16_LE.get(a,6),dataDescriptor:!!(8&b),compressedMethod:r.UINT16_LE.get(a,10),compressedSize:r.UINT32_LE.get(a,20),uncompressedSize:r.UINT32_LE.get(a,24),filenameLength:r.UINT16_LE.get(a,28),extraFieldLength:r.UINT16_LE.get(a,30),fileCommentLength:r.UINT16_LE.get(a,32),relativeOffsetOfLocalHeader:r.UINT32_LE.get(a,42),filename:null}},len:46};function y(a){let b=new Uint8Array(r.UINT32_LE.len);return r.UINT32_LE.put(b,0,a),b}let z=(0,t.default)("tokenizer:inflate"),A=y(0x8074b50),B=y(0x6054b50);class C{constructor(a){this.tokenizer=a,this.syncBuffer=new Uint8Array(262144)}async isZip(){return await this.peekSignature()===0x4034b50}peekSignature(){return this.tokenizer.peekToken(r.UINT32_LE)}async findEndOfCentralDirectoryLocator(){let a=this.tokenizer,b=Math.min(16384,a.fileInfo.size),c=this.syncBuffer.subarray(0,b);await this.tokenizer.readBuffer(c,{position:a.fileInfo.size-b});for(let d=c.length-4;d>=0;d--)if(c[d]===B[0]&&c[d+1]===B[1]&&c[d+2]===B[2]&&c[d+3]===B[3])return a.fileInfo.size-b+d;return -1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess())return void z("Cannot reading central-directory without random-read support");z("Reading central-directory...");let a=this.tokenizer.position,b=await this.findEndOfCentralDirectoryLocator();if(b>0){z("Central-directory 32-bit signature found");let c=await this.tokenizer.readToken(w,b),d=[];this.tokenizer.setPosition(c.offsetOfStartOfCd);for(let a=0;a<c.nrOfEntriesOfSize;++a){let b=await this.tokenizer.readToken(x);if(0x2014b50!==b.signature)throw Error("Expected Central-File-Header signature");b.filename=await this.tokenizer.readToken(new r.StringType(b.filenameLength,"utf-8")),await this.tokenizer.ignore(b.extraFieldLength),await this.tokenizer.ignore(b.fileCommentLength),d.push(b),z(`Add central-directory file-entry: n=${a+1}/${d.length}: filename=${d[a].filename}`)}return this.tokenizer.setPosition(a),d}this.tokenizer.setPosition(a)}async unzip(a){let b=await this.readCentralDirectory();if(b)return this.iterateOverCentralDirectory(b,a);let c=!1;do{let b,d=await this.readLocalFileHeader();if(!d)break;let e=a(d);if(c=!!e.stop,await this.tokenizer.ignore(d.extraFieldLength),d.dataDescriptor&&0===d.compressedSize){let a=[],b=262144;z("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let c=-1;for(;c<0&&262144===b;){b=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0});let d=(c=function(a,b){let c=a.length,d=b.length;if(d>c)return -1;for(let e=0;e<=c-d;e++){let c=!0;for(let f=0;f<d;f++)if(a[e+f]!==b[f]){c=!1;break}if(c)return e}return -1}(this.syncBuffer.subarray(0,b),A))>=0?c:b;if(e.handler){let b=new Uint8Array(d);await this.tokenizer.readBuffer(b),a.push(b)}else await this.tokenizer.ignore(d)}z(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),e.handler&&await this.inflate(d,function(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}(a),e.handler)}else e.handler?(z(`Reading compressed-file-data: ${d.compressedSize} bytes`),b=new Uint8Array(d.compressedSize),await this.tokenizer.readBuffer(b),await this.inflate(d,b,e.handler)):(z(`Ignoring compressed-file-data: ${d.compressedSize} bytes`),await this.tokenizer.ignore(d.compressedSize));if(z(`Reading data-descriptor at pos=${this.tokenizer.position}`),d.dataDescriptor&&0x8074b50!==(await this.tokenizer.readToken(u)).signature)throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-u.len}`)}while(!c)}async iterateOverCentralDirectory(a,b){for(let c of a){let a=b(c);if(a.handler){this.tokenizer.setPosition(c.relativeOffsetOfLocalHeader);let b=await this.readLocalFileHeader();if(b){await this.tokenizer.ignore(b.extraFieldLength);let d=new Uint8Array(c.compressedSize);await this.tokenizer.readBuffer(d),await this.inflate(b,d,a.handler)}}if(a.stop)break}}async inflate(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return z(`Decompress filename=${a.filename}, compressed-size=${b.length}`),c(await C.decompressDeflateRaw(b))}static async decompressDeflateRaw(a){let b=new ReadableStream({start(b){b.enqueue(a),b.close()}}),c=new DecompressionStream("deflate-raw"),d=b.pipeThrough(c);try{let a=new Response(d),b=await a.arrayBuffer();return new Uint8Array(b)}catch(a){throw TypeError(a instanceof Error?`Failed to deflate ZIP entry: ${a.message}`:"Unknown decompression error in ZIP entry")}}async readLocalFileHeader(){let a=await this.tokenizer.peekToken(r.UINT32_LE);if(0x4034b50===a){let a=await this.tokenizer.readToken(v);return a.filename=await this.tokenizer.readToken(new r.StringType(a.filenameLength,"utf-8")),a}if(0x2014b50===a)return!1;if(0xe011cfd0===a)throw Error("Encrypted ZIP");throw Error("Unexpected signature")}}class D{constructor(a){this.tokenizer=a}inflate(){let a=this.tokenizer;return new ReadableStream({async pull(b){let c=new Uint8Array(1024),d=await a.readBuffer(c,{mayBeLess:!0});0===d?b.close():b.enqueue(c.subarray(0,d))}}).pipeThrough(new DecompressionStream("gzip"))}}var E=a.i(37187);let F={get:(a,b)=>127&a[b+3]|a[b+2]<<7|a[b+1]<<14|a[b]<<21,len:4},G=0x80000000-1,H=new Set(["Unexpected signature","Encrypted ZIP","Expected Central-File-Header signature"]),I=["ZIP entry count exceeds ","Unsupported ZIP compression method:","ZIP entry compressed data exceeds ","ZIP entry decompressed data exceeds ","Expected data-descriptor-signature at position "],J=new Set(["Z_BUF_ERROR","Z_DATA_ERROR","ERR_INVALID_STATE"]);class K extends Error{}function L(a,b,c){if(!Number.isFinite(a)||a<0||a>b)throw new K(`${c} has invalid size ${a} (maximum ${b} bytes)`);return a}async function M(a,b,{maximumLength:c=0x1000000,reason:d="skip"}={}){let e=L(b,c,d);await a.ignore(e)}async function N(a,b,c,{maximumLength:d=b.length,reason:e="read"}={}){let f=L(c?.length??b.length,d,e);return a.readBuffer(b,{...c,length:f})}async function O(a,{maximumLength:b=1048576}={}){let c=new ReadableStream({start(b){b.enqueue(a),b.close()}}).pipeThrough(new DecompressionStream("deflate-raw")).getReader(),d=[],e=0;try{for(;;){let{done:a,value:f}=await c.read();if(a)break;if((e+=f.length)>b)throw await c.cancel(),Error(`ZIP entry decompressed data exceeds ${b} bytes`);d.push(f)}}finally{c.releaseLock()}let f=new Uint8Array(e),g=0;for(let a of d)f.set(a,g),g+=a.length;return f}async function P(a,{shouldBuffer:b,maximumLength:c=1048576}={}){let{syncBuffer:d}=a,{length:e}=d,f=[],g=0;for(;;){let h=await a.tokenizer.peekBuffer(d,{mayBeLess:!0}),i=function(a,b){if(a.length<16)return -1;let c=a.length-16;for(let d=0;d<=c;d++)if(0x8074b50===r.UINT32_LE.get(a,d)&&r.UINT32_LE.get(a,d+8)===b+d)return d;return -1}(d.subarray(0,h),g),j=i>=0?0:h===e?Math.min(15,h-1):0,k=i>=0?i:h-j;if(0===k)break;if((g+=k)>c)throw Error(`ZIP entry compressed data exceeds ${c} bytes`);if(b){let b=new Uint8Array(k);await a.tokenizer.readBuffer(b),f.push(b)}else await a.tokenizer.ignore(k);if(i>=0)break}if(U(a.tokenizer)||(a.knownSizeDescriptorScannedBytes+=g),b){let a=new Uint8Array(g),b=0;for(let c of f)a.set(c,b),b+=c.length;return a}}async function Q(a,b,{shouldBuffer:c,maximumDescriptorLength:d=1048576}={}){var e;let f;if(b.dataDescriptor&&0===b.compressedSize)return P(a,{shouldBuffer:c,maximumLength:d});if(!c)return void await M(a.tokenizer,b.compressedSize,{maximumLength:U(a.tokenizer)?1048576:a.tokenizer.fileInfo.size,reason:"ZIP entry compressed data"});let g=Math.min(Number.isFinite(f=(e=a.tokenizer).fileInfo.size)?Math.max(0,f-e.position):Number.MAX_SAFE_INTEGER,G);if(!Number.isFinite(b.compressedSize)||b.compressedSize<0||b.compressedSize>g)throw Error(`ZIP entry compressed data exceeds ${g} bytes`);let h=new Uint8Array(b.compressedSize);return await a.tokenizer.readBuffer(h),h}async function R(a,b){return new Y(b).fromBuffer(a)}function S(a){switch(a=a.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:a};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:a};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:a};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:a};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:a};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:a};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:a};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:a};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:a};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:a};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:a};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:a};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:a};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:a};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:a};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:a};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"}}}function T(a,b,c){for(let[d,e]of(c={offset:0,...c},b.entries()))if(c.mask){if(e!==(c.mask[d]&a[d+c.offset]))return!1}else if(e!==a[d+c.offset])return!1;return!0}function U(a){let b=a.fileInfo.size;return!Number.isFinite(b)||b===Number.MAX_SAFE_INTEGER}function V(a,b,c){return U(a)&&a.position-b>c}function W(a,b=1048576){for(let c of[a.compressedSize,a.uncompressedSize])if(!Number.isFinite(c)||c<0||c>b)return!1;return!0}function X(a){if(a.hasContentTypesEntry&&!a.hasUnparseableContentTypes&&!a.isParsingContentTypes&&!a.hasParsedContentTypesEntry){if(a.hasWordDirectory)return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a.hasPresentationDirectory)return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a.hasSpreadsheetDirectory)return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};if(a.hasThreeDimensionalModelEntry)return{ext:"3mf",mime:"model/3mf"}}}C.prototype.inflate=async function(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return c(await O(b,{maximumLength:1048576}))},C.prototype.unzip=async function(a){let b=!1,c=0,d=this.tokenizer.position;this.knownSizeDescriptorScannedBytes=0;do{if(V(this.tokenizer,d,0x1000000))throw new K("ZIP stream probing exceeds 16777216 bytes");let e=await this.readLocalFileHeader();if(!e)break;if(++c>1024)throw Error("ZIP entry count exceeds 1024");let f=a(e);b=!!f.stop,await this.tokenizer.ignore(e.extraFieldLength);let g=await Q(this,e,{shouldBuffer:!!f.handler,maximumDescriptorLength:Math.min(1048576,U(this.tokenizer)?Math.max(0,0x1000000-(this.tokenizer.position-d)):Math.max(0,1048576-this.knownSizeDescriptorScannedBytes))});if(f.handler&&await this.inflate(e,g,f.handler),e.dataDescriptor){let a=new Uint8Array(16);if(await this.tokenizer.readBuffer(a),0x8074b50!==r.UINT32_LE.get(a,0))throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-a.length}`)}if(V(this.tokenizer,d,0x1000000))throw new K("ZIP stream probing exceeds 16777216 bytes")}while(!b)};class Y{constructor(a){const b=function(a){return Number.isFinite(a)?Math.max(0,Math.min(4098,Math.trunc(a))):0}(a?.mpegOffsetTolerance);this.options={...a,mpegOffsetTolerance:b},this.detectors=[...this.options.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:this.options.signal},this.gzipProbeDepth=0}getTokenizerOptions(){return{...this.tokenizerOptions}}createTokenizerFromWebStream(a){return function(a){let b=a?.streamReader;if(b?.constructor?.name!=="WebStreamByobReader")return a;let{reader:c}=b,d=async()=>{await c.cancel(),c.releaseLock()};return b.close=d,b.abort=async()=>{b.interrupted=!0,await d()},a}(q.fromWebStream(a,this.getTokenizerOptions()))}async parseTokenizer(a,b=0){this.detectionReentryCount=b;let c=a.position;for(let b of this.detectors){let d;try{d=await b.detect(a)}catch(a){if(a instanceof s.EndOfStreamError||a instanceof K)return;throw a}if(d)return d;if(c!==a.position)return}}async fromTokenizer(a){try{return await this.parseTokenizer(a)}finally{await a.close()}}async fromBuffer(a){if(!(a instanceof Uint8Array||a instanceof ArrayBuffer))throw TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof a}\``);let b=a instanceof Uint8Array?a:new Uint8Array(a);if(b?.length>1)return this.fromTokenizer(q.fromBuffer(b,this.getTokenizerOptions()))}async fromBlob(a){this.options.signal?.throwIfAborted();let b=q.fromBlob(a,this.getTokenizerOptions());return this.fromTokenizer(b)}async fromStream(a){this.options.signal?.throwIfAborted();let b=this.createTokenizerFromWebStream(a);return this.fromTokenizer(b)}async toDetectionStream(a,b){var c,d,e;let f,g,h=Number.isFinite(c=b?.sampleSize??4100)?Math.max(1,Math.trunc(c)):4100,i=a.getReader({mode:"byob"});try{let{value:a,done:b}=await (d=new Uint8Array(h),e=this.options.signal,void 0===e?i.read(d):(e.throwIfAborted(),new Promise((a,b)=>{let c=()=>{e.removeEventListener("abort",f)},f=()=>{let a=e.reason;c(),(async()=>{try{await i.cancel(a)}catch{}})(),b(a)};e.addEventListener("abort",f,{once:!0}),(async()=>{try{let b=await i.read(d);c(),a(b)}catch(a){c(),b(a)}})()})));if(g=a,!b&&a)try{f=await this.fromBuffer(a.subarray(0,h))}catch(a){if(!(a instanceof s.EndOfStreamError))throw a;f=void 0}g=a}finally{i.releaseLock()}let j=new TransformStream({async start(a){a.enqueue(g)},transform(a,b){b.enqueue(a)}}),k=a.pipeThrough(j);return k.fileType=f,k}async detectGzip(a){let b,c,d,e,f,g,h,i,j;if(this.gzipProbeDepth>=1)return{ext:"gz",mime:"application/gzip"};let k=(f=new D(a).inflate().getReader(),g=0,h=!1,i=!1,j=async a=>{h||i||(i=!0,await f.cancel(a))},new ReadableStream({async pull(a){if(g>=0x1000000){a.close(),await j();return}let{done:b,value:c}=await f.read();if(b||!c){h=!0,a.close();return}let d=0x1000000-g;if(c.length>d){a.enqueue(c.subarray(0,d)),g+=d,a.close(),await j();return}a.enqueue(c),g+=c.length},async cancel(a){await j(a)}})),l=U(a);if(l){let a=new AbortController;b=setTimeout(()=>{a.abort(new DOMException("Operation timed out after 100 ms","TimeoutError"))},100),c=void 0===this.options.signal?a.signal:AbortSignal.any([this.options.signal,a.signal]),(d=new Y({...this.options,signal:c})).gzipProbeDepth=this.gzipProbeDepth+1}else this.gzipProbeDepth++;try{e=await (d??this).fromStream(k)}catch(a){if(a?.name==="AbortError"&&c?.reason?.name!=="TimeoutError")throw a}finally{clearTimeout(b),!l&&this.gzipProbeDepth--}return e?.ext==="tar"?{ext:"tar.gz",mime:"application/gzip"}:{ext:"gz",mime:"application/gzip"}}check(a,b){return T(this.buffer,a,b)}checkString(a,b){return this.check(function(a,b){if("utf-16le"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(255&d,d>>8&255)}return b}if("utf-16be"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(d>>8&255,255&d)}return b}return[...a].map(a=>a.charCodeAt(0))}(a,b?.encoding),b)}detectConfident=async a=>{if(this.buffer=new Uint8Array(4100),void 0===a.fileInfo.size&&(a.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=a,U(a)&&(await a.peekBuffer(this.buffer,{length:3,mayBeLess:!0}),this.check([31,139,8])))return this.detectGzip(a);if(await a.peekBuffer(this.buffer,{length:32,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return(await a.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14}))?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191])){if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,await this.tokenizer.ignore(3),this.detectConfident(a)}if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return this.detectGzip(a);if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await M(a,6,{maximumLength:6,reason:"ID3 header prefix"});let b=await a.readToken(F),c=U(a);if(!Number.isFinite(b)||b<0||c&&(b>0x1000000||a.position+b>0x1000000))return;if(a.position+b>a.fileInfo.size){if(c)return;return{ext:"mp3",mime:"audio/mpeg"}}try{await M(a,b,{maximumLength:c?0x1000000:a.fileInfo.size,reason:"ID3 payload"})}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,this.parseTokenizer(a,this.detectionReentryCount)}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((67===this.buffer[0]||70===this.buffer[0])&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let b,c={hasContentTypesEntry:!1,hasParsedContentTypesEntry:!1,isParsingContentTypes:!1,hasUnparseableContentTypes:!1,hasWordDirectory:!1,hasPresentationDirectory:!1,hasSpreadsheetDirectory:!1,hasThreeDimensionalModelEntry:!1};try{await new C(a).unzip(a=>{var d;(d=a.filename).startsWith("word/")&&(c.hasWordDirectory=!0),d.startsWith("ppt/")&&(c.hasPresentationDirectory=!0),d.startsWith("xl/")&&(c.hasSpreadsheetDirectory=!0),d.startsWith("3D/")&&d.endsWith(".model")&&(c.hasThreeDimensionalModelEntry=!0);let e="[Content_Types].xml"===a.filename,f=X(c);if(!e&&f)return b=f,{stop:!0};switch(a.filename){case"META-INF/mozilla.rsa":return b={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return b={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":if(!W(a,1048576))return{};return{async handler(a){let c=new TextDecoder("utf-8").decode(a).trim();b=S(c)},stop:!0};case"[Content_Types].xml":if(c.hasContentTypesEntry=!0,!W(a,1048576))return c.hasUnparseableContentTypes=!0,{};return c.isParsingContentTypes=!0,{async handler(a){let d=new TextDecoder("utf-8").decode(a),e=function(a){let b=a.indexOf('.main+xml"');if(-1===b){let b="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";return a.includes(`ContentType="${b}"`)?b:void 0}let c=a.slice(0,b),d=c.lastIndexOf('"');return c.slice(d+1)}(d);e&&(b=S(e)),c.hasParsedContentTypesEntry=!0,c.isParsingContentTypes=!1},stop:!0};default:if(/classes\d*\.dex/.test(a.filename))return b={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0};return{}}})}catch(a){if(!function(a){if(a instanceof s.EndOfStreamError||a instanceof K)return!0;if(!(a instanceof Error))return!1;if(H.has(a.message)||J.has(a.code))return!0;for(let b of I)if(a.message.startsWith(b))return!0;return!1}(a))throw a;c.isParsingContentTypes&&(c.isParsingContentTypes=!1,c.hasUnparseableContentTypes=!0)}return b??X(c)??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await a.ignore(28);let b=new Uint8Array(8);return(await a.readBuffer(b),T(b,[79,112,117,115,72,101,97,100]))?{ext:"opus",mime:"audio/ogg; codecs=opus"}:T(b,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:T(b,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:T(b,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:T(b,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:T(b,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(3===this.buffer[2]||5===this.buffer[2]||7===this.buffer[2])&&(4===this.buffer[3]||6===this.buffer[3]||8===this.buffer[3]))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF"))return{ext:"pdf",mime:"application/pdf"};if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let a=await this.readTiffHeader(!1);if(a)return a}if(this.check([77,77])){let a=await this.readTiffHeader(!0);if(a)return a}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function b(){let b=await a.peekNumber(r.UINT8),c=128,d=0;for(;(b&c)==0&&0!==c;)++d,c>>=1;let e=new Uint8Array(d+1);return await N(a,e,void 0,{maximumLength:e.length,reason:"EBML field"}),e}async function c(){let a=await b(),c=await b();c[0]^=128>>c.length-1;let d=Math.min(6,c.length),e=new DataView(a.buffer),f=new DataView(c.buffer,c.length-d,d);return{id:(0,E.getUintBE)(e),len:(0,E.getUintBE)(f)}}async function d(b){let d=0;for(;b>0;){if(++d>256||V(a,f,0x1000000))return;let e=a.position,g=await c();if(17026===g.id){if(g.len>64)return;let b=L(g.len,64,"EBML DocType");return(await a.readToken(new r.StringType(b))).replaceAll(/\00.*$/g,"")}if(U(a)&&(!Number.isFinite(g.len)||g.len<0||g.len>1048576)||(await M(a,g.len,{maximumLength:U(a)?1048576:a.fileInfo.size,reason:"EBML payload"}),--b,a.position<=e))return}}let e=await c(),f=a.position;switch(await d(e.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1")||this.checkString("PARE"))return{ext:"parquet",mime:"application/vnd.apache.parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([254,237,250,206])||this.check([254,237,250,207])||this.check([206,250,237,254])||this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.checkString("regf"))return{ext:"dat",mime:"application/x-ft-windows-registry-hive"};if(this.checkString("$FL2")||this.checkString("$FL3"))return{ext:"sav",mime:"application/x-spss-sav"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190])){let a=r.UINT32_BE.get(this.buffer,4),b=r.UINT16_BE.get(this.buffer,6);if(a>0&&a<=30)return{ext:"macho",mime:"application/x-mach-binary"};if(b>30)return{ext:"class",mime:"application/java-vm"}}if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(0===this.buffer[6]||1===this.buffer[6]))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let a=new r.StringType(4,"latin1").get(this.buffer,2);if(a.match("^d*")&&a>=1e3&&a<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return(await a.ignore(8),"debian-binary"===await a.readToken(new r.StringType(13,"ascii")))?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&["\n","\r"," "," ","\0"].some(a=>this.checkString(a,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){let b={ext:"png",mime:"image/png"},c={ext:"apng",mime:"image/apng"};async function e(){return{length:await a.readToken(r.INT32_BE),type:await a.readToken(new r.StringType(4,"latin1"))}}await a.ignore(8);let d=U(a),f=a.position,g=0,h=!1;do{if(++g>512||V(a,f,0x1000000))break;let i=a.position,j=await e();if(j.length<0)return;if("IHDR"===j.type){if(13!==j.length)return;h=!0}switch(j.type){case"IDAT":return b;case"acTL":return c;default:if(!h&&"CgBI"!==j.type)return;if(d&&j.length>1048576)return h&&(32&j.type.codePointAt(0))!=0?b:void 0;try{await M(a,j.length+4,{maximumLength:d?1048580:a.fileInfo.size,reason:"PNG chunk payload"})}catch(a){if(!d&&(a instanceof K||a instanceof s.EndOfStreamError))return b;throw a}}if(a.position<=i)break}while(a.position+8<a.fileInfo.size)return b}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/vnd.apache.arrow.file"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(this.check([102,114,101,101],{offset:4})||this.check([109,100,97,116],{offset:4})||this.check([109,111,111,118],{offset:4})||this.check([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(96&this.buffer[8])!=0){let a=new r.StringType(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(a){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:if(a.startsWith("3g")){if(a.startsWith("3g2"))return{ext:"3g2",mime:"video/3gpp2"};return{ext:"3gp",mime:"video/3gpp"}}return{ext:"mp4",mime:"video/mp4"}}}if(this.checkString("REGEDIT4\r\n"))return{ext:"reg",mime:"application/x-ms-regedit"};if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){let b=!1;try{async function f(){let b=new Uint8Array(16);return await N(a,b,void 0,{maximumLength:b.length,reason:"ASF header GUID"}),{id:b,size:Number(await a.readToken(r.UINT64_LE))}}await M(a,30,{maximumLength:30,reason:"ASF header prelude"});let c=U(a),d=a.position,e=0;for(;a.position+24<a.fileInfo.size&&!(++e>512||V(a,d,0x1000000));){let d=a.position,e=await f(),g=e.size-24;if(!Number.isFinite(g)||g<0){b=!0;break}if(T(e.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let b=new Uint8Array(16);if(g-=await N(a,b,void 0,{maximumLength:b.length,reason:"ASF stream type GUID"}),T(b,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(T(b,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}if(c&&g>1048576||(await M(a,g,{maximumLength:c?1048576:a.fileInfo.size,reason:"ASF header payload"}),a.position<=d)){b=!0;break}}}catch(c){if(c instanceof s.EndOfStreamError||c instanceof K)U(a)&&(b=!0);else throw c}if(b)return;return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await a.ignore(20),await a.readToken(new r.StringType(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.checkString("<?xml ",{offset:2,encoding:"utf-16be"})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await a.peekBuffer(this.buffer,{length:Math.min(256,a.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let a=new DataView(this.buffer.buffer).getUint32(12,!0);if(a>12&&this.buffer.length>=a+16)try{let b=new TextDecoder().decode(this.buffer.subarray(16,a+16));if(JSON.parse(b).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188})||this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(this.check([255,255,0,0,7,0,0,0,4,0,0,0,1,0,1,0])||this.check([0,0,255,255,0,0,0,7,0,0,0,4,0,1,0,1]))return{ext:"jmp",mime:"application/x-jmp-data"};if(await a.peekBuffer(this.buffer,{length:Math.min(512,a.fileInfo.size),mayBeLess:!0}),this.checkString("ustar",{offset:257})&&(this.checkString("\0",{offset:262})||this.checkString(" ",{offset:262}))||this.check([0,0,0,0,0,0],{offset:257})&&function(a,b=0){let c=Number.parseInt(new r.StringType(6).get(a,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(c))return!1;let d=256;for(let c=b;c<b+148;c++)d+=a[c];for(let c=b+156;c<b+512;c++)d+=a[c];return c===d}(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254])){let a="utf-16le";return this.checkString("<?xml ",{offset:2,encoding:a})?{ext:"xml",mime:"application/xml"}:this.check([255,14],{offset:2})&&this.checkString("SketchUp Model",{offset:4,encoding:a})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:this.checkString("Windows Registry Editor Version 5.00\r\n",{offset:2,encoding:a})?{ext:"reg",mime:"application/x-ms-regedit"}:void 0}if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async a=>{var b;this.buffer=new Uint8Array(4100);let c=Number.isFinite(b=a.fileInfo.size)?Math.max(0,b):Number.MAX_SAFE_INTEGER;if(await a.peekBuffer(this.buffer,{length:Math.min(8,c),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(await a.peekBuffer(this.buffer,{length:Math.min(2+this.options.mpegOffsetTolerance,c),mayBeLess:!0}),this.buffer.length>=2+this.options.mpegOffsetTolerance)for(let a=0;a<=this.options.mpegOffsetTolerance;++a){let b=this.scanMpeg(a);if(b)return b}};async readTiffTag(a){let b=await this.tokenizer.readToken(a?r.UINT16_BE:r.UINT16_LE);switch(await this.tokenizer.ignore(10),b){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"}}}async readTiffIFD(a){let b=await this.tokenizer.readToken(a?r.UINT16_BE:r.UINT16_LE);if(!(b>512)&&(!U(this.tokenizer)||!(2+12*b>0x1000000)))for(let c=0;c<b;++c){let b=await this.readTiffTag(a);if(b)return b}}async readTiffHeader(a){let b={ext:"tif",mime:"image/tiff"},c=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,2),d=(a?r.UINT32_BE:r.UINT32_LE).get(this.buffer,4);if(42===c){let c;if(d>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(d>=8){let b=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,8),c=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,10);if(28===b&&254===c||31===b&&11===c)return{ext:"nef",mime:"image/x-nikon-nef"}}}if(U(this.tokenizer)&&d>1048576)return b;let e=U(this.tokenizer)?0x1000000:this.tokenizer.fileInfo.size;try{await M(this.tokenizer,d,{maximumLength:e,reason:"TIFF IFD offset"})}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}try{c=await this.readTiffIFD(a)}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}return c??b}if(43===c)return b}scanMpeg(a){if(this.check([255,224],{offset:a,mask:[255,224]})){if(this.check([16],{offset:a+1,mask:[22]}))return this.check([8],{offset:a+1,mask:[8]}),{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:a+1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:a+1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:a+1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}}}var Z=a.i(91465),$=a.i(96151),_=a.i(44753);let aa={multiple:!1},ab={year:aa,track:aa,disk:aa,title:aa,artist:aa,artists:{multiple:!0,unique:!0},albumartist:aa,albumartists:{multiple:!0,unique:!0},album:aa,date:aa,originaldate:aa,originalyear:aa,releasedate:aa,comment:{multiple:!0,unique:!1},genre:{multiple:!0,unique:!0},picture:{multiple:!0,unique:!0},composer:{multiple:!0,unique:!0},lyrics:{multiple:!0,unique:!1},albumsort:{multiple:!1,unique:!0},titlesort:{multiple:!1,unique:!0},work:{multiple:!1,unique:!0},artistsort:{multiple:!1,unique:!0},albumartistsort:{multiple:!1,unique:!0},composersort:{multiple:!1,unique:!0},lyricist:{multiple:!0,unique:!0},writer:{multiple:!0,unique:!0},conductor:{multiple:!0,unique:!0},remixer:{multiple:!0,unique:!0},arranger:{multiple:!0,unique:!0},engineer:{multiple:!0,unique:!0},producer:{multiple:!0,unique:!0},technician:{multiple:!0,unique:!0},djmixer:{multiple:!0,unique:!0},mixer:{multiple:!0,unique:!0},label:{multiple:!0,unique:!0},grouping:aa,subtitle:{multiple:!0},discsubtitle:aa,totaltracks:aa,totaldiscs:aa,compilation:aa,rating:{multiple:!0},bpm:aa,mood:aa,media:aa,catalognumber:{multiple:!0,unique:!0},tvShow:aa,tvShowSort:aa,tvSeason:aa,tvEpisode:aa,tvEpisodeId:aa,tvNetwork:aa,podcast:aa,podcasturl:aa,releasestatus:aa,releasetype:{multiple:!0},releasecountry:aa,script:aa,language:aa,copyright:aa,license:aa,encodedby:aa,encodersettings:aa,gapless:aa,barcode:aa,isrc:{multiple:!0},asin:aa,musicbrainz_recordingid:aa,musicbrainz_trackid:aa,musicbrainz_albumid:aa,musicbrainz_artistid:{multiple:!0},musicbrainz_albumartistid:{multiple:!0},musicbrainz_releasegroupid:aa,musicbrainz_workid:aa,musicbrainz_trmid:aa,musicbrainz_discid:aa,acoustid_id:aa,acoustid_fingerprint:aa,musicip_puid:aa,musicip_fingerprint:aa,website:aa,"performer:instrument":{multiple:!0,unique:!0},averageLevel:aa,peakLevel:aa,notes:{multiple:!0,unique:!1},key:aa,originalalbum:aa,originalartist:aa,discogs_artist_id:{multiple:!0,unique:!0},discogs_release_id:aa,discogs_label_id:aa,discogs_master_release_id:aa,discogs_votes:aa,discogs_rating:aa,replaygain_track_peak:aa,replaygain_track_gain:aa,replaygain_album_peak:aa,replaygain_album_gain:aa,replaygain_track_minmax:aa,replaygain_album_minmax:aa,replaygain_undo:aa,description:{multiple:!0},longDescription:aa,category:{multiple:!0},hdVideo:aa,keywords:{multiple:!0},movement:aa,movementIndex:aa,movementTotal:aa,podcastId:aa,showMovement:aa,stik:aa,playCounter:aa};class ac{static toIntOrNull(a){let b=Number.parseInt(a,10);return Number.isNaN(b)?null:b}static normalizeTrack(a){let b=a.toString().split("/");return{no:Number.parseInt(b[0],10)||null,of:Number.parseInt(b[1],10)||null}}constructor(a,b){this.tagTypes=a,this.tagMap=b}mapGenericTag(a,b){a={id:a.id,value:a.value},this.postMap(a,b);let c=this.getCommonName(a.id);return c?{id:c,value:a.value}:null}getCommonName(a){return this.tagMap[a]}postMap(a,b){}}ac.maxRatingScore=1;let ad={title:"title",artist:"artist",album:"album",year:"year",comment:"comment",track:"track",genre:"genre"};class ae extends ac{constructor(){super(["ID3v1"],ad)}}class af extends ac{constructor(a,b){const c={};for(const a of Object.keys(b))c[a.toUpperCase()]=b[a];super(a,c)}getCommonName(a){return this.tagMap[a.toUpperCase()]}}var ag=a.i(82670);let ah={TIT2:"title",TPE1:"artist","TXXX:Artists":"artists",TPE2:"albumartist",TALB:"album",TDRV:"date",TORY:"originalyear",TPOS:"disk",TCON:"genre",APIC:"picture",TCOM:"composer",USLT:"lyrics",TSOA:"albumsort",TSOT:"titlesort",TOAL:"originalalbum",TSOP:"artistsort",TSO2:"albumartistsort",TSOC:"composersort",TEXT:"lyricist","TXXX:Writer":"writer",TPE3:"conductor",TPE4:"remixer","IPLS:arranger":"arranger","IPLS:engineer":"engineer","IPLS:producer":"producer","IPLS:DJ-mix":"djmixer","IPLS:mix":"mixer",TPUB:"label",TIT1:"grouping",TIT3:"subtitle",TRCK:"track",TCMP:"compilation",POPM:"rating",TBPM:"bpm",TMED:"media","TXXX:CATALOGNUMBER":"catalognumber","TXXX:MusicBrainz Album Status":"releasestatus","TXXX:MusicBrainz Album Type":"releasetype","TXXX:MusicBrainz Album Release Country":"releasecountry","TXXX:RELEASECOUNTRY":"releasecountry","TXXX:SCRIPT":"script",TLAN:"language",TCOP:"copyright",WCOP:"license",TENC:"encodedby",TSSE:"encodersettings","TXXX:BARCODE":"barcode","TXXX:ISRC":"isrc",TSRC:"isrc","TXXX:ASIN":"asin","TXXX:originalyear":"originalyear","UFID:http://musicbrainz.org":"musicbrainz_recordingid","TXXX:MusicBrainz Release Track Id":"musicbrainz_trackid","TXXX:MusicBrainz Album Id":"musicbrainz_albumid","TXXX:MusicBrainz Artist Id":"musicbrainz_artistid","TXXX:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","TXXX:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","TXXX:MusicBrainz Work Id":"musicbrainz_workid","TXXX:MusicBrainz TRM Id":"musicbrainz_trmid","TXXX:MusicBrainz Disc Id":"musicbrainz_discid","TXXX:ACOUSTID_ID":"acoustid_id","TXXX:Acoustid Id":"acoustid_id","TXXX:Acoustid Fingerprint":"acoustid_fingerprint","TXXX:MusicIP PUID":"musicip_puid","TXXX:MusicMagic Fingerprint":"musicip_fingerprint",WOAR:"website",TDRC:"date",TYER:"year",TDOR:"originaldate","TIPL:arranger":"arranger","TIPL:engineer":"engineer","TIPL:producer":"producer","TIPL:DJ-mix":"djmixer","TIPL:mix":"mixer",TMOO:"mood",SYLT:"lyrics",TSST:"discsubtitle",TKEY:"key",COMM:"comment",TOPE:"originalartist","PRIV:AverageLevel":"averageLevel","PRIV:PeakLevel":"peakLevel","TXXX:DISCOGS_ARTIST_ID":"discogs_artist_id","TXXX:DISCOGS_ARTISTS":"artists","TXXX:DISCOGS_ARTIST_NAME":"artists","TXXX:DISCOGS_ALBUM_ARTISTS":"albumartist","TXXX:DISCOGS_CATALOG":"catalognumber","TXXX:DISCOGS_COUNTRY":"releasecountry","TXXX:DISCOGS_DATE":"originaldate","TXXX:DISCOGS_LABEL":"label","TXXX:DISCOGS_LABEL_ID":"discogs_label_id","TXXX:DISCOGS_MASTER_RELEASE_ID":"discogs_master_release_id","TXXX:DISCOGS_RATING":"discogs_rating","TXXX:DISCOGS_RELEASED":"date","TXXX:DISCOGS_RELEASE_ID":"discogs_release_id","TXXX:DISCOGS_VOTES":"discogs_votes","TXXX:CATALOGID":"catalognumber","TXXX:STYLE":"genre","TXXX:REPLAYGAIN_TRACK_PEAK":"replaygain_track_peak","TXXX:REPLAYGAIN_TRACK_GAIN":"replaygain_track_gain","TXXX:REPLAYGAIN_ALBUM_PEAK":"replaygain_album_peak","TXXX:REPLAYGAIN_ALBUM_GAIN":"replaygain_album_gain","TXXX:MP3GAIN_MINMAX":"replaygain_track_minmax","TXXX:MP3GAIN_ALBUM_MINMAX":"replaygain_album_minmax","TXXX:MP3GAIN_UNDO":"replaygain_undo",MVNM:"movement",MVIN:"movementIndex",PCST:"podcast",TCAT:"category",TDES:"description",TDRL:"releasedate",TGID:"podcastId",TKWD:"keywords",WFED:"podcasturl",GRP1:"grouping",PCNT:"playCounter"};class ai extends af{static toRating(a){return{source:a.email,rating:a.rating>0?(a.rating-1)/254*ac.maxRatingScore:void 0}}constructor(){super(["ID3v2.3","ID3v2.4"],ah)}postMap(a,b){switch(a.id){case"UFID":{let b=a.value;"http://musicbrainz.org"===b.owner_identifier&&(a.id+=`:${b.owner_identifier}`,a.value=(0,ag.decodeString)(b.identifier,"latin1"))}break;case"PRIV":{let c=a.value;switch(c.owner_identifier){case"AverageLevel":case"PeakValue":a.id+=`:${c.owner_identifier}`,a.value=4===c.data.length?r.UINT32_LE.get(c.data,0):null,null===a.value&&b.addWarning("Failed to parse PRIV:PeakValue");break;default:b.addWarning(`Unknown PRIV owner-identifier: ${c.data}`)}}break;case"POPM":a.value=ai.toRating(a.value)}}}let aj={Title:"title",Author:"artist","WM/AlbumArtist":"albumartist","WM/AlbumTitle":"album","WM/Year":"date","WM/OriginalReleaseTime":"originaldate","WM/OriginalReleaseYear":"originalyear",Description:"comment","WM/TrackNumber":"track","WM/PartOfSet":"disk","WM/Genre":"genre","WM/Composer":"composer","WM/Lyrics":"lyrics","WM/AlbumSortOrder":"albumsort","WM/TitleSortOrder":"titlesort","WM/ArtistSortOrder":"artistsort","WM/AlbumArtistSortOrder":"albumartistsort","WM/ComposerSortOrder":"composersort","WM/Writer":"lyricist","WM/Conductor":"conductor","WM/ModifiedBy":"remixer","WM/Engineer":"engineer","WM/Producer":"producer","WM/DJMixer":"djmixer","WM/Mixer":"mixer","WM/Publisher":"label","WM/ContentGroupDescription":"grouping","WM/SubTitle":"subtitle","WM/SetSubTitle":"discsubtitle","WM/IsCompilation":"compilation","WM/SharedUserRating":"rating","WM/BeatsPerMinute":"bpm","WM/Mood":"mood","WM/Media":"media","WM/CatalogNo":"catalognumber","MusicBrainz/Album Status":"releasestatus","MusicBrainz/Album Type":"releasetype","MusicBrainz/Album Release Country":"releasecountry","WM/Script":"script","WM/Language":"language",Copyright:"copyright",LICENSE:"license","WM/EncodedBy":"encodedby","WM/EncodingSettings":"encodersettings","WM/Barcode":"barcode","WM/ISRC":"isrc","MusicBrainz/Track Id":"musicbrainz_recordingid","MusicBrainz/Release Track Id":"musicbrainz_trackid","MusicBrainz/Album Id":"musicbrainz_albumid","MusicBrainz/Artist Id":"musicbrainz_artistid","MusicBrainz/Album Artist Id":"musicbrainz_albumartistid","MusicBrainz/Release Group Id":"musicbrainz_releasegroupid","MusicBrainz/Work Id":"musicbrainz_workid","MusicBrainz/TRM Id":"musicbrainz_trmid","MusicBrainz/Disc Id":"musicbrainz_discid","Acoustid/Id":"acoustid_id","Acoustid/Fingerprint":"acoustid_fingerprint","MusicIP/PUID":"musicip_puid","WM/ARTISTS":"artists","WM/InitialKey":"key",ASIN:"asin","WM/Work":"work","WM/AuthorURL":"website","WM/Picture":"picture"};class ak extends ac{static toRating(a){return{rating:Number.parseFloat(a+1)/5}}constructor(){super(["asf"],aj)}postMap(a){if("WM/SharedUserRating"===a.id){let b=a.id.split(":");a.value=ak.toRating(a.value),a.id=b[0]}}}let al={TT2:"title",TP1:"artist",TP2:"albumartist",TAL:"album",TYE:"year",COM:"comment",TRK:"track",TPA:"disk",TCO:"genre",PIC:"picture",TCM:"composer",TOR:"originaldate",TOT:"originalalbum",TXT:"lyricist",TP3:"conductor",TPB:"label",TT1:"grouping",TT3:"subtitle",TLA:"language",TCR:"copyright",WCP:"license",TEN:"encodedby",TSS:"encodersettings",WAR:"website",PCS:"podcast",TCP:"compilation",TDR:"date",TS2:"albumartistsort",TSA:"albumsort",TSC:"composersort",TSP:"artistsort",TST:"titlesort",WFD:"podcasturl",TBP:"bpm",GP1:"grouping"};class am extends af{constructor(){super(["ID3v2.2"],al)}}let an={Title:"title",Artist:"artist",Artists:"artists","Album Artist":"albumartist",Album:"album",Year:"date",Originalyear:"originalyear",Originaldate:"originaldate",Releasedate:"releasedate",Comment:"comment",Track:"track",Disc:"disk",DISCNUMBER:"disk",Genre:"genre","Cover Art (Front)":"picture","Cover Art (Back)":"picture",Composer:"composer",Lyrics:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",Lyricist:"lyricist",Writer:"writer",Conductor:"conductor",MixArtist:"remixer",Arranger:"arranger",Engineer:"engineer",Producer:"producer",DJMixer:"djmixer",Mixer:"mixer",Label:"label",Grouping:"grouping",Subtitle:"subtitle",DiscSubtitle:"discsubtitle",Compilation:"compilation",BPM:"bpm",Mood:"mood",Media:"media",CatalogNumber:"catalognumber",MUSICBRAINZ_ALBUMSTATUS:"releasestatus",MUSICBRAINZ_ALBUMTYPE:"releasetype",RELEASECOUNTRY:"releasecountry",Script:"script",Language:"language",Copyright:"copyright",LICENSE:"license",EncodedBy:"encodedby",EncoderSettings:"encodersettings",Barcode:"barcode",ISRC:"isrc",ASIN:"asin",musicbrainz_trackid:"musicbrainz_recordingid",musicbrainz_releasetrackid:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",Acoustid_Id:"acoustid_id",ACOUSTID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",Weblink:"website",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",MP3GAIN_MINMAX:"replaygain_track_minmax",MP3GAIN_UNDO:"replaygain_undo"};class ao extends af{constructor(){super(["APEv2"],an)}}let ap={"©nam":"title","©ART":"artist",aART:"albumartist","----:com.apple.iTunes:Band":"albumartist","©alb":"album","©day":"date","©cmt":"comment","©com":"comment",trkn:"track",disk:"disk","©gen":"genre",covr:"picture","©wrt":"composer","©lyr":"lyrics",soal:"albumsort",sonm:"titlesort",soar:"artistsort",soaa:"albumartistsort",soco:"composersort","----:com.apple.iTunes:LYRICIST":"lyricist","----:com.apple.iTunes:CONDUCTOR":"conductor","----:com.apple.iTunes:REMIXER":"remixer","----:com.apple.iTunes:ENGINEER":"engineer","----:com.apple.iTunes:PRODUCER":"producer","----:com.apple.iTunes:DJMIXER":"djmixer","----:com.apple.iTunes:MIXER":"mixer","----:com.apple.iTunes:LABEL":"label","©grp":"grouping","----:com.apple.iTunes:SUBTITLE":"subtitle","----:com.apple.iTunes:DISCSUBTITLE":"discsubtitle",cpil:"compilation",tmpo:"bpm","----:com.apple.iTunes:MOOD":"mood","----:com.apple.iTunes:MEDIA":"media","----:com.apple.iTunes:CATALOGNUMBER":"catalognumber",tvsh:"tvShow",tvsn:"tvSeason",tves:"tvEpisode",sosn:"tvShowSort",tven:"tvEpisodeId",tvnn:"tvNetwork",pcst:"podcast",purl:"podcasturl","----:com.apple.iTunes:MusicBrainz Album Status":"releasestatus","----:com.apple.iTunes:MusicBrainz Album Type":"releasetype","----:com.apple.iTunes:MusicBrainz Album Release Country":"releasecountry","----:com.apple.iTunes:SCRIPT":"script","----:com.apple.iTunes:LANGUAGE":"language",cprt:"copyright","©cpy":"copyright","----:com.apple.iTunes:LICENSE":"license","©too":"encodedby",pgap:"gapless","----:com.apple.iTunes:BARCODE":"barcode","----:com.apple.iTunes:ISRC":"isrc","----:com.apple.iTunes:ASIN":"asin","----:com.apple.iTunes:NOTES":"comment","----:com.apple.iTunes:MusicBrainz Track Id":"musicbrainz_recordingid","----:com.apple.iTunes:MusicBrainz Release Track Id":"musicbrainz_trackid","----:com.apple.iTunes:MusicBrainz Album Id":"musicbrainz_albumid","----:com.apple.iTunes:MusicBrainz Artist Id":"musicbrainz_artistid","----:com.apple.iTunes:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","----:com.apple.iTunes:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","----:com.apple.iTunes:MusicBrainz Work Id":"musicbrainz_workid","----:com.apple.iTunes:MusicBrainz TRM Id":"musicbrainz_trmid","----:com.apple.iTunes:MusicBrainz Disc Id":"musicbrainz_discid","----:com.apple.iTunes:Acoustid Id":"acoustid_id","----:com.apple.iTunes:Acoustid Fingerprint":"acoustid_fingerprint","----:com.apple.iTunes:MusicIP PUID":"musicip_puid","----:com.apple.iTunes:fingerprint":"musicip_fingerprint","----:com.apple.iTunes:replaygain_track_gain":"replaygain_track_gain","----:com.apple.iTunes:replaygain_track_peak":"replaygain_track_peak","----:com.apple.iTunes:replaygain_album_gain":"replaygain_album_gain","----:com.apple.iTunes:replaygain_album_peak":"replaygain_album_peak","----:com.apple.iTunes:replaygain_track_minmax":"replaygain_track_minmax","----:com.apple.iTunes:replaygain_album_minmax":"replaygain_album_minmax","----:com.apple.iTunes:replaygain_undo":"replaygain_undo",gnre:"genre","----:com.apple.iTunes:ALBUMARTISTSORT":"albumartistsort","----:com.apple.iTunes:ARTISTS":"artists","----:com.apple.iTunes:ORIGINALDATE":"originaldate","----:com.apple.iTunes:ORIGINALYEAR":"originalyear","----:com.apple.iTunes:RELEASEDATE":"releasedate",desc:"description",ldes:"longDescription","©mvn":"movement","©mvi":"movementIndex","©mvc":"movementTotal","©wrk":"work",catg:"category",egid:"podcastId",hdvd:"hdVideo",keyw:"keywords",shwm:"showMovement",stik:"stik",rate:"rating"};class aq extends af{constructor(){super(["iTunes"],ap)}postMap(a,b){"rate"===a.id&&(a.value={source:void 0,rating:Number.parseFloat(a.value)/100})}}let ar={TITLE:"title",ARTIST:"artist",ARTISTS:"artists",ALBUMARTIST:"albumartist","ALBUM ARTIST":"albumartist",ALBUM:"album",DATE:"date",ORIGINALDATE:"originaldate",ORIGINALYEAR:"originalyear",RELEASEDATE:"releasedate",COMMENT:"comment",TRACKNUMBER:"track",DISCNUMBER:"disk",GENRE:"genre",METADATA_BLOCK_PICTURE:"picture",COMPOSER:"composer",LYRICS:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",LYRICIST:"lyricist",WRITER:"writer",CONDUCTOR:"conductor",REMIXER:"remixer",ARRANGER:"arranger",ENGINEER:"engineer",PRODUCER:"producer",DJMIXER:"djmixer",MIXER:"mixer",LABEL:"label",GROUPING:"grouping",SUBTITLE:"subtitle",DISCSUBTITLE:"discsubtitle",TRACKTOTAL:"totaltracks",DISCTOTAL:"totaldiscs",COMPILATION:"compilation",RATING:"rating",BPM:"bpm",KEY:"key",MOOD:"mood",MEDIA:"media",CATALOGNUMBER:"catalognumber",RELEASESTATUS:"releasestatus",RELEASETYPE:"releasetype",RELEASECOUNTRY:"releasecountry",SCRIPT:"script",LANGUAGE:"language",COPYRIGHT:"copyright",LICENSE:"license",ENCODEDBY:"encodedby",ENCODERSETTINGS:"encodersettings",BARCODE:"barcode",ISRC:"isrc",ASIN:"asin",MUSICBRAINZ_TRACKID:"musicbrainz_recordingid",MUSICBRAINZ_RELEASETRACKID:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",ACOUSTID_ID:"acoustid_id",ACOUSTID_ID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",WEBSITE:"website",NOTES:"notes",TOTALTRACKS:"totaltracks",TOTALDISCS:"totaldiscs",DISCOGS_ARTIST_ID:"discogs_artist_id",DISCOGS_ARTISTS:"artists",DISCOGS_ARTIST_NAME:"artists",DISCOGS_ALBUM_ARTISTS:"albumartist",DISCOGS_CATALOG:"catalognumber",DISCOGS_COUNTRY:"releasecountry",DISCOGS_DATE:"originaldate",DISCOGS_LABEL:"label",DISCOGS_LABEL_ID:"discogs_label_id",DISCOGS_MASTER_RELEASE_ID:"discogs_master_release_id",DISCOGS_RATING:"discogs_rating",DISCOGS_RELEASED:"date",DISCOGS_RELEASE_ID:"discogs_release_id",DISCOGS_VOTES:"discogs_votes",CATALOGID:"catalognumber",STYLE:"genre",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",REPLAYGAIN_ALBUM_GAIN:"replaygain_album_gain",REPLAYGAIN_ALBUM_PEAK:"replaygain_album_peak",REPLAYGAIN_MINMAX:"replaygain_track_minmax",REPLAYGAIN_ALBUM_MINMAX:"replaygain_album_minmax",REPLAYGAIN_UNDO:"replaygain_undo"};class as extends ac{static toRating(a,b,c){return{source:a?a.toLowerCase():void 0,rating:Number.parseFloat(b)/c*ac.maxRatingScore}}constructor(){super(["vorbis"],ar)}postMap(a){if("RATING"===a.id)a.value=as.toRating(void 0,a.value,100);else if(0===a.id.indexOf("RATING:")){let b=a.id.split(":");a.value=as.toRating(b[1],a.value,1),a.id=b[0]}}}let at={IART:"artist",ICRD:"date",INAM:"title",TITL:"title",IPRD:"album",ITRK:"track",IPRT:"track",COMM:"comment",ICMT:"comment",ICNT:"releasecountry",GNRE:"genre",IWRI:"writer",RATE:"rating",YEAR:"year",ISFT:"encodedby",CODE:"encodedby",TURL:"website",IGNR:"genre",IENG:"engineer",ITCH:"technician",IMED:"media",IRPD:"album"};class au extends ac{constructor(){super(["exif"],at)}}let av={"segment:title":"title","album:ARTIST":"albumartist","album:ARTISTSORT":"albumartistsort","album:TITLE":"album","album:DATE_RECORDED":"originaldate","album:DATE_RELEASED":"releasedate","album:PART_NUMBER":"disk","album:TOTAL_PARTS":"totaltracks","track:ARTIST":"artist","track:ARTISTSORT":"artistsort","track:TITLE":"title","track:PART_NUMBER":"track","track:MUSICBRAINZ_TRACKID":"musicbrainz_recordingid","track:MUSICBRAINZ_ALBUMID":"musicbrainz_albumid","track:MUSICBRAINZ_ARTISTID":"musicbrainz_artistid","track:PUBLISHER":"label","track:GENRE":"genre","track:ENCODER":"encodedby","track:ENCODER_OPTIONS":"encodersettings","edition:TOTAL_PARTS":"totaldiscs",picture:"picture"};class aw extends af{constructor(){super(["matroska"],av)}}let ax={NAME:"title",AUTH:"artist","(c) ":"copyright",ANNO:"comment"};class ay extends ac{constructor(){super(["AIFF"],ax)}}var az=a.i(74777);class aA{constructor(){this.tagMappers={},[new ae,new am,new ai,new aq,new aq,new as,new ao,new ak,new au,new aw,new ay].forEach(a=>{this.registerTagMapper(a)})}mapTag(a,b,c){if(this.tagMappers[a])return this.tagMappers[a].mapGenericTag(b,c);throw new az.InternalParserError(`No generic tag mapper defined for tag-format: ${a}`)}registerTagMapper(a){for(let b of a.tagTypes)this.tagMappers[b]=a}}var aB=a.i(68231);let aC=/\[(\d{2}):(\d{2})\.(\d{2,3})]/,aD=(0,t.default)("music-metadata:collector"),aE=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"];class aF{constructor(a){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new aA,this.opts=a;let b=1;for(const a of aE)this.originPriority[a]=b++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(a){aD(`streamInfo: type=${a.type?_.TrackTypeValueToKeyMap[a.type]:"?"}, codec=${a.codecName}`),this.format.trackInfo.push(a)}setFormat(a,b){aD(`format: ${a} = ${b}`),this.format[a]=b,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:a,value:b}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(a,b,c){aD(`tag ${a}.${b} = ${c}`),this.native[a]||(this.format.tagTypes.push(a),this.native[a]=[]),this.native[a].push({id:b,value:c}),await this.toCommon(a,b,c)}addWarning(a){this.quality.warnings.push({message:a})}async postMap(a,b){switch(b.id){case"artist":return this.handleSingularArtistTag(a,b,"artist","artists");case"albumartist":return this.handleSingularArtistTag(a,b,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(a,b,"artist","artists");case"albumartists":return this.handlePluralArtistTag(a,b,"albumartist","albumartists");case"picture":return this.postFixPicture(b.value).then(c=>{null!==c&&(b.value=c,this.setGenericTag(a,b))});case"totaltracks":this.common.track.of=ac.toIntOrNull(b.value);return;case"totaldiscs":this.common.disk.of=ac.toIntOrNull(b.value);return;case"movementTotal":this.common.movementIndex.of=ac.toIntOrNull(b.value);return;case"track":case"disk":case"movementIndex":{let a=this.common[b.id].of;this.common[b.id]=ac.normalizeTrack(b.value),this.common[b.id].of=null!=a?a:this.common[b.id].of;return}case"bpm":case"year":case"originalyear":b.value=Number.parseInt(b.value,10);break;case"date":{let a=Number.parseInt(b.value.substr(0,4),10);Number.isNaN(a)||(this.common.year=a);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":b.value="string"==typeof b.value?Number.parseInt(b.value,10):b.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":b.value=(0,ag.toRatio)(b.value);break;case"replaygain_track_minmax":b.value=b.value.split(",").map(a=>Number.parseInt(a,10));break;case"replaygain_undo":{let a=b.value.split(",").map(a=>Number.parseInt(a,10));b.value={leftChannel:a[0],rightChannel:a[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":b.value="1"===b.value||1===b.value;break;case"isrc":{let a=this.common[b.id];if(a&&-1!==a.indexOf(b.value))return;break}case"comment":"string"==typeof b.value&&(b.value={text:b.value}),"iTunPGAP"===b.value.descriptor&&this.setGenericTag(a,{id:"gapless",value:"1"===b.value.text});break;case"lyrics":var c,d;"string"==typeof b.value&&(c=b.value,b.value=aC.test(c)?function(a){let b=a.split("\n"),c=[];for(let a of b){let b=a.match(aC);if(b){let d=(60*Number.parseInt(b[1],10)+Number.parseInt(b[2],10))*1e3+(3===b[3].length?Number.parseInt(b[3],10):10*Number.parseInt(b[3],10)),e=a.replace(aC,"").trim();c.push({timestamp:d,text:e})}}return{contentType:aB.LyricsContentType.lyrics,timeStampFormat:aB.TimestampFormat.milliseconds,text:c.map(a=>a.text).join("\n"),syncText:c}}(c):(d=c,{contentType:aB.LyricsContentType.lyrics,timeStampFormat:aB.TimestampFormat.notSynchronized,text:d.trim(),syncText:[]}))}null!==b.value&&this.setGenericTag(a,b)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(a,b,c,d){if(this.commonOrigin[c]===this.originPriority[a])return this.postMap("artificial",{id:d,value:b.value});this.common[d]||this.setGenericTag("artificial",{id:d,value:b.value}),this.setGenericTag(a,b)}handlePluralArtistTag(a,b,c,d){if((!this.common[c]||this.commonOrigin[c]===this.originPriority.artificial)&&(!this.common[d]||-1===this.common[d].indexOf(b.value))){var e;let a=(e=(this.common[d]||[]).concat([b.value])).length>2?`${e.slice(0,e.length-1).join(", ")} & ${e[e.length-1]}`:e.join(" & ");this.setGenericTag("artificial",{id:c,value:a})}this.setGenericTag(a,b)}async postFixPicture(a){if(a.data&&a.data.length>0){if(!a.format){let b=await R(Uint8Array.from(a.data));if(!b)return null;a.format=b.mime}return a.format=a.format.toLocaleLowerCase(),"image/jpg"===a.format&&(a.format="image/jpeg"),a}return this.addWarning("Empty picture tag found"),null}async toCommon(a,b,c){let d=this.tagMapper.mapTag(a,{id:b,value:c},this);d&&await this.postMap(a,d)}setGenericTag(a,b){var c,d;aD(`common.${b.id} = ${b.value}`);let e=this.commonOrigin[b.id]||1e3,f=this.originPriority[a];if(ab[c=b.id]&&!ab[c].multiple)if(!(f<=e))return aD(`Ignore native tag (singleton): ${a}.${b.id} = ${b.value}`);else this.common[b.id]=b.value,this.commonOrigin[b.id]=f;else if(f===e)(!ab[d=b.id].multiple||ab[d].unique)&&-1!==this.common[b.id].indexOf(b.value)?aD(`Ignore duplicate value: ${a}.${b.id} = ${b.value}`):this.common[b.id].push(b.value);else{if(!(f<e))return aD(`Ignore native tag (list): ${a}.${b.id} = ${b.value}`);this.common[b.id]=[b.value],this.commonOrigin[b.id]=f}this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"common",id:b.id,value:b.value}})}}let aG={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],load:async()=>(await a.A(46769)).MpegParser},aH={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],load:async()=>(await a.A(92102)).APEv2Parser},aI={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],load:async()=>(await a.A(1995)).AsfParser},aJ={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],load:async()=>(await a.A(89469)).DsdiffParser},aK={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],load:async()=>(await a.A(60519)).AIFFParser},aL={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],load:async()=>(await a.A(48352)).DsfParser},aM={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],load:async()=>(await a.A(17808)).FlacParser},aN={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],load:async()=>(await a.A(71875)).MatroskaParser},aO={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],load:async()=>(await a.A(7219)).MP4Parser},aP={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],load:async()=>(await a.A(75093)).MusepackParser},aQ={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],load:async()=>(await a.A(56909)).OggParser},aR={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],load:async()=>(await a.A(56564)).WavPackParser},aS={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],load:async()=>(await a.A(14180)).WaveParser},aT=(0,t.default)("music-metadata:parser:factory");class aU{constructor(){this.parsers=[],[aM,aG,aH,aO,aN,aS,aQ,aI,aK,aR,aP,aL,aJ].forEach(a=>{this.registerParser(a)})}registerParser(a){this.parsers.push(a)}async parse(a,b,c){if(a.supportsRandomAccess()?(aT("tokenizer supports random-access, scanning for appending headers"),await a$(a,c)):aT("tokenizer does not support random-access, cannot scan for appending headers"),!b){let c=new Uint8Array(4100);if(a.fileInfo.mimeType&&(b=this.findLoaderForContentType(a.fileInfo.mimeType)),!b&&a.fileInfo.path&&(b=this.findLoaderForExtension(a.fileInfo.path)),!b){aT("Guess parser on content..."),await a.peekBuffer(c,{mayBeLess:!0});let d=await R(c,{mpegOffsetTolerance:10});if(!d||!d.mime)throw new az.CouldNotDetermineFileTypeError("Failed to determine audio format");if(aT(`Guessed file type is mime=${d.mime}, extension=${d.ext}`),!(b=this.findLoaderForContentType(d.mime)))throw new az.UnsupportedFileTypeError(`Guessed MIME-type not supported: ${d.mime}`)}}aT(`Loading ${b.parserType} parser...`);let d=new aF(c),e=new(await b.load())(d,a,c??{});return aT(`Parser ${b.parserType} loaded`),await e.parse(),d.format.trackInfo&&(void 0===d.format.hasAudio&&d.setFormat("hasAudio",!!d.format.trackInfo.find(a=>a.type===_.TrackType.audio)),void 0===d.format.hasVideo&&d.setFormat("hasVideo",!!d.format.trackInfo.find(a=>a.type===_.TrackType.video))),d.toCommonMetadata()}findLoaderForExtension(a){var b;let c;if(!a)return;let d=(-1===(c=(b=a).lastIndexOf("."))?"":b.substring(c)).toLocaleLowerCase()||a;return this.parsers.find(a=>-1!==a.extensions.indexOf(d))}findLoaderForContentType(a){let b;if(!a)return;try{let c,d;c=Z.default.parse(a),b={type:(d=(0,$.parse)(c.type)).type,subtype:d.subtype,suffix:d.suffix,parameters:c.parameters}}catch(b){aT(`Invalid HTTP Content-Type header value: ${a}`);return}let c=0===b.subtype.indexOf("x-")?b.subtype.substring(2):b.subtype;return this.parsers.find(a=>a.mimeTypes.find(a=>-1!==a.indexOf(`${b.type}/${c}`)))}getSupportedMimeTypes(){let a=new Set;return this.parsers.forEach(b=>{b.mimeTypes.forEach(b=>{a.add(b),a.add(b.replace("/","/x-"))})}),Array.from(a)}}var aV=a.i(81318),aW=a.i(49597),aX=a.i(73635);async function aY(a){let b=a.fileInfo.size;if(b>=143){let c=new Uint8Array(15),d=a.position;await a.readBuffer(c,{position:b-143}),a.setPosition(d);let e=(0,aX.textDecode)(c,"latin1");if("LYRICS200"===e.substring(6))return Number.parseInt(e.substring(0,6),10)+15}return 0}async function aZ(a,b={}){let c=(0,q.fromBlob)(a);try{var d,e;return await (d=c,e=b,new aU().parse(d,void 0,e))}finally{await c.close()}}async function a$(a,b={}){let c=a.fileInfo.size;await (0,aW.hasID3v1Header)(a)&&(c-=128,c-=await aY(a)),b.apeHeader=await aV.APEv2Parser.findApeFooterOffset(a,c)}async function a_(a){try{let b=await aZ(a,{duration:!0}),c=b.common.title?.trim()??"",d=b.common.artist?.trim()||b.common.artists?.[0]?.trim()||b.common.albumartist?.trim()||b.common.albumartists?.[0]?.trim()||"",e=b.common.album?.trim()??"",f=b.format.duration,g="number"==typeof f&&Number.isFinite(f)?Math.round(f):0;return{title:c,artist:d,album:e,durationSec:g}}catch{return null}}async function a0(a,b,c,d,e,f,g,h){if(!(f.maxScanDepth>0)||!(e>=f.maxScanDepth))for await(let[i,j]of c.entries()){let c=d?`${d}/${i}`:i;if("directory"===j.kind){if(f.followSymlinks&&g.has(c))continue;let d=f.followSymlinks?new Set(g):g;f.followSymlinks&&d.add(c),await a0(a,b,j,c,e+1,f,d,h)}else"file"===j.kind&&function(a,b){let c=a.lastIndexOf(".");if(c<0)return!1;let d=a.slice(c).toLowerCase();return(b??n).has(d)}(i,f.enabledExtensions)&&h.push({rootId:a,rootDisplayName:b,relativePath:c,handle:j})}}function a1(a){let b=a.lastIndexOf("/");return b>=0?a.slice(b+1):a}function a2(a,b){let c=a.split("/").filter(Boolean);return c.length>1?c[c.length-2]??b:b}async function a3(a,b,c,d){let e=`lib:${a.rootId}:${a.relativePath}`,f=c.get(e),g=f?p(f):null,h=d?performance.now():0,i=(b,c)=>{var e;let f,g;return d&&(e={relativePath:a.relativePath,rootDisplayName:a.rootDisplayName,durationMs:performance.now()-h,outcome:b},f=`${e.rootDisplayName}/${e.relativePath}`,g="cached"===e.outcome?"cached":"parsed"===e.outcome?"parsed":"error",console.info(`[muzical scan] ${f} — ${e.durationMs.toFixed(1)} ms (${g})`)),c};try{let c=await a.handle.getFile();if(f&&g&&c.lastModified===g.fileLastModified&&c.size===g.fileSize)return i("cached",f);let d=a1(a.relativePath),h=o(d,b),j=a2(a.relativePath,a.rootDisplayName),k=await a_(c),l={id:e,title:k?.title?k.title:h,artist:k?.artist?k.artist:"Unknown artist",album:k?.album?k.album:j,durationSec:k?.durationSec&&k.durationSec>0?k.durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}};return i("parsed",l.library?{...l,library:{...l.library,fileLastModified:c.lastModified,fileSize:c.size}}:l)}catch{let c,d;return i("error",(c=o(a1(a.relativePath),b),d=a2(a.relativePath,a.rootDisplayName),{id:`lib:${a.rootId}:${a.relativePath}`,title:c,artist:"Unknown artist",album:d,durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}}))}}async function a4(a,b,c,d,e){if(0===a.length)return[];let f=Array(a.length),g=0,h=0,i=0,j=a.length,k=()=>{e?.({filesDone:h,filesTotal:j,filesSkipped:i})};k();let l=async()=>{for(;;){let e=g++;if(e>=a.length)break;let j=a[e],l=`lib:${j.rootId}:${j.relativePath}`,m=c.has(l);f[e]=await a3(j,b,c,d),m&&f[e]===c.get(l)&&(i+=1),h+=1,k()}},m=Math.min(8,a.length);return await Promise.all(Array.from({length:m},()=>l())),f}async function a5(a,b,c,d,e,f,g){g?.({phase:"walk"});let h=[];await a0(a,b,c,"",0,d,new Set,h);let i=function(a){let b=new Map;for(let c of a)c.library&&p(c)&&b.set(c.id,c);return b}(e.filter(b=>b.library?.rootId===a));return g?.({phase:"metadata",filesDone:0,filesTotal:h.length,filesSkipped:0}),f&&h.length>0&&console.info(`[muzical scan] ${b}: reading metadata for ${h.length} file${1===h.length?"":"s"}…`),a4(h,d.enabledExtensions,i,f,a=>{g?.({phase:"metadata",...a})})}async function a6(a,b,c,d,e,f){let g=[],h=0,i=null,j=a.filter(a=>b.has(a.id)),k=j.length,l=e?performance.now():0;e&&k>0&&console.info(`[muzical scan] Starting scan of ${k} root${1===k?"":"s"}…`);for(let a=0;a<j.length;a++){let l=j[a],m=b.get(l.id);if(!m)continue;let n=b=>{f?.({rootIndex:a,rootCount:k,rootName:l.name,phase:b.phase,filesDone:b.filesDone,filesTotal:b.filesTotal,filesSkipped:b.filesSkipped})};n({phase:"walk"});try{let a=await a5(l.id,l.name,m,c,d,e,a=>{"walk"===a.phase?n({phase:"walk"}):n({phase:"metadata",filesDone:a.filesDone,filesTotal:a.filesTotal,filesSkipped:a.filesSkipped})});g.push(...a)}catch(a){h+=1,i||(i=a instanceof DOMException?`${a.name}: ${a.message}`:a instanceof Error?a.message:String(a))}}if(g.sort((a,b)=>{let c=a.library?.rootId??"",d=b.library?.rootId??"",e=c.localeCompare(d,void 0,{sensitivity:"base"});if(0!==e)return e;let f=a.library?.relativePath??a.title,g=b.library?.relativePath??b.title;return f.localeCompare(g,void 0,{sensitivity:"base"})}),e){let a=performance.now()-l;console.info(`[muzical scan] Finished: ${g.length} track${1===g.length?"":"s"} in ${a.toFixed(0)} ms`)}return{tracks:g,failedRootCount:h,firstError:i}}function a7(a){return!a.library&&(!!("musicbrainz"===a.source||"youtube"===a.source||a.id.startsWith("musicbrainz:")||a.id.startsWith("youtube:"))||!!a.youtubeQuery?.trim())}function a8(a){return a?.trim()||"Unknown artist"}function a9(a,b){return`${a}\u0000${b}`}function ba(a,b){return a.filter(a=>a9(a.album,a.artist)===b)}function bb(a,b){let c=b.trim();return c?a.filter(a=>a8(a.artist)===c):[]}function bc(a,b){let c=b.artist.trim()||a.artist,d=b.album.trim()||a.album,e={...a,artist:c,album:d};return a.youtubeQuery?.trim()&&(e.youtubeQuery=`${a.title} ${c}`.trim(),e.youtubeVideoId=void 0),e}function bd(a,b){let c=b.artist.trim()||a.artist,d={...a,artist:c};return a.youtubeQuery?.trim()&&(d.youtubeQuery=`${a.title} ${c}`.trim(),d.youtubeVideoId=void 0),d}function be(a,b){let c=b.title.trim()||a.title,d=b.artist.trim()||a.artist,e=b.album.trim()||a.album,f={...a,title:c,artist:d,album:e};return a.youtubeQuery?.trim()&&(f.youtubeQuery=`${c} ${d}`.trim(),f.youtubeVideoId=void 0),f}async function bf(a,b){let c={mode:"readwrite"};try{let d=await a.queryPermission?.(c);if("granted"===d)return!0;if(!b)return!1;let e=await a.requestPermission?.(c);return"granted"===e}catch{return!1}}async function bg(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?f.getFileHandle(g):null}function bh(a){let b=a.name.toLowerCase();if(b.endsWith(".mp3"))return"mp3";if(b.endsWith(".flac"))return"flac";let c=a.type.toLowerCase();return"audio/mpeg"===c||"audio/mp3"===c?"mp3":"audio/flac"===c||"audio/x-flac"===c?"flac":null}function bi(a){return String(a).split("").map(a=>a.charCodeAt(0))}function bj(a){return new Uint8Array(bi(a))}function bk(a){let b=new ArrayBuffer(2*a.length),c=new Uint8Array(b);return new Uint16Array(b).set(bi(a)),c}function bl(a){return[a>>>24&255,a>>>16&255,a>>>8&255,255&a]}a.s(["default",0,a7],4355);a.s(["albumCompositeKey",0,a9,"artistDisplayName",0,a8],27120),a.s(["default",0,ba],79340),a.s(["default",0,bb],14269),a.s(["default",0,bc],88965),a.s(["default",0,bd],18975);class bm{_setIntegerFrame(a,b){let c=parseInt(b,10);this.frames.push({name:a,value:c,size:11+c.toString().length})}_setStringFrame(a,b){let c=b.toString(),d=13+2*c.length;"TDAT"===a&&(d=11+c.length),this.frames.push({name:a,value:c,size:d})}_setPictureFrame(a,b,c,d){var e,f,g;let h=function(a){if(!a||!a.length)return null;if(255===a[0]&&216===a[1]&&255===a[2])return"image/jpeg";if(137===a[0]&&80===a[1]&&78===a[2]&&71===a[3])return"image/png";if(71===a[0]&&73===a[1]&&70===a[2])return"image/gif";if(87===a[8]&&69===a[9]&&66===a[10]&&80===a[11])return"image/webp";let b=73===a[0]&&73===a[1]&&42===a[2]&&0===a[3],c=77===a[0]&&77===a[1]&&0===a[2]&&42===a[3];return b||c?"image/tiff":66===a[0]&&77===a[1]?"image/bmp":0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?"image/x-icon":null}(new Uint8Array(b)),i=c.toString();if(!h)throw Error("Unknown picture MIME type");c||(d=!1),this.frames.push({name:"APIC",value:b,pictureType:a,mimeType:h,useUnicodeEncoding:d,description:i,size:(e=b.byteLength,f=h.length,g=i.length,11+f+1+1+(d?2+2*(g+1):g+1)+e)})}_setLyricsFrame(a,b,c){let d=a.split("").map(a=>a.charCodeAt(0)),e=b.toString(),f=c.toString();this.frames.push({name:"USLT",value:f,language:d,description:e,size:16+2*e.length+2+2+2*f.length})}_setCommentFrame(a,b,c){let d=a.split("").map(a=>a.charCodeAt(0)),e=b.toString(),f=c.toString();this.frames.push({name:"COMM",value:f,language:d,description:e,size:16+2*e.length+2+2+2*f.length})}_setPrivateFrame(a,b){let c=a.toString();this.frames.push({name:"PRIV",value:b,id:c,size:10+c.length+1+b.byteLength})}_setUserStringFrame(a,b){let c=a.toString(),d=b.toString();this.frames.push({name:"TXXX",description:c,value:d,size:13+2*c.length+2+2+2*d.length})}_setUrlLinkFrame(a,b){let c=b.toString();this.frames.push({name:a,value:c,size:10+c.length})}_setPairedTextFrame(a,b){let c;this.frames.push({name:a,value:b,size:(c=0,b.forEach(a=>{c+=2+2*a[0].length+2+2+2*a[1].length+2}),11+c)})}_setSynchronisedLyricsFrame(a,b,c,d,e){var f;let g,h=e.toString(),i=d.split("").map(a=>a.charCodeAt(0));this.frames.push({name:"SYLT",value:b,language:i,description:h,type:a,timestampFormat:c,size:(f=h.length,g=0,b.forEach(a=>{g+=2+2*a[0].length+2+4}),18+2*f+2+g)})}constructor(a){if(!a||"object"!=typeof a||!("byteLength"in a))throw Error("First argument should be an instance of ArrayBuffer or Buffer");this.arrayBuffer=a,this.padding=4096,this.frames=[],this.url=""}setFrame(a,b){switch(a){case"TPE1":case"TCOM":case"TCON":{if(!Array.isArray(b))throw Error(`${a} frame value should be an array of strings`);let c="TCON"===a?";":"/",d=b.join(c);this._setStringFrame(a,d);break}case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TMED":case"TPUB":case"TCOP":case"TKEY":case"TEXT":case"TDAT":case"TCMP":case"TSSE":case"TSRC":this._setStringFrame(a,b);break;case"TBPM":case"TLEN":case"TYER":this._setIntegerFrame(a,b);break;case"USLT":if(b.language=b.language||"eng","object"!=typeof b||!("description"in b)||!("lyrics"in b))throw Error("USLT frame value should be an object with keys description and lyrics");if(b.language&&!b.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setLyricsFrame(b.language,b.description,b.lyrics);break;case"APIC":if("object"!=typeof b||!("type"in b)||!("data"in b)||!("description"in b))throw Error("APIC frame value should be an object with keys type, data and description");if(b.type<0||b.type>20)throw Error("Incorrect APIC frame picture type");this._setPictureFrame(b.type,b.data,b.description,!!b.useUnicodeEncoding);break;case"TXXX":if("object"!=typeof b||!("description"in b)||!("value"in b))throw Error("TXXX frame value should be an object with keys description and value");this._setUserStringFrame(b.description,b.value);break;case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":this._setUrlLinkFrame(a,b);break;case"COMM":if(b.language=b.language||"eng","object"!=typeof b||!("description"in b)||!("text"in b))throw Error("COMM frame value should be an object with keys description and text");if(b.language&&!b.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setCommentFrame(b.language,b.description,b.text);break;case"PRIV":if("object"!=typeof b||!("id"in b)||!("data"in b))throw Error("PRIV frame value should be an object with keys id and data");this._setPrivateFrame(b.id,b.data);break;case"IPLS":if(!Array.isArray(b)||!Array.isArray(b[0]))throw Error("IPLS frame value should be an array of pairs");this._setPairedTextFrame(a,b);break;case"SYLT":if("object"!=typeof b||!("type"in b)||!("text"in b)||!("timestampFormat"in b))throw Error("SYLT frame value should be an object with keys type, text and timestampFormat");if(!Array.isArray(b.text)||!Array.isArray(b.text[0]))throw Error("SYLT frame text value should be an array of pairs");if(b.type<0||b.type>6)throw Error("Incorrect SYLT frame content type");if(b.timestampFormat<1||b.timestampFormat>2)throw Error("Incorrect SYLT frame time stamp format");b.language=b.language||"eng",b.description=b.description||"",this._setSynchronisedLyricsFrame(b.type,b.text,b.timestampFormat,b.language,b.description);break;default:throw Error(`Unsupported frame ${a}`)}return this}removeTag(){var a;if(this.arrayBuffer.byteLength<10)return;let b=new Uint8Array(this.arrayBuffer),c=b[3],d=((a=[b[6],b[7],b[8],b[9]])[0]<<21)+(a[1]<<14)+(a[2]<<7)+a[3]+10;73!==b[0]||68!==b[1]||51!==b[2]||c<2||c>4||(this.arrayBuffer=new Uint8Array(b.subarray(d)).buffer)}addTag(){var a;this.removeTag();let b=[255,254],c=10+this.frames.reduce((a,b)=>a+b.size,0)+this.padding,d=new ArrayBuffer(this.arrayBuffer.byteLength+c),e=new Uint8Array(d),f=0,g=[];return g=[73,68,51,3],e.set(g,f),f+=g.length,f++,f++,g=[(a=c-10)>>>21&127,a>>>14&127,a>>>7&127,127&a],e.set(g,f),f+=g.length,this.frames.forEach(a=>{switch(g=bj(a.name),e.set(g,f),f+=g.length,g=bl(a.size-10),e.set(g,f),f+=g.length,f+=2,a.name){case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":g=bj(a.value),e.set(g,f),f+=g.length;break;case"TPE1":case"TCOM":case"TCON":case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TKEY":case"TMED":case"TPUB":case"TCOP":case"TEXT":case"TSSE":case"TSRC":g=[1].concat(b),e.set(g,f),f+=g.length,g=bk(a.value),e.set(g,f),f+=g.length;break;case"TXXX":case"USLT":case"COMM":g=[1],"USLT"!==a.name&&"COMM"!==a.name||(g=g.concat(a.language)),g=g.concat(b),e.set(g,f),f+=g.length,g=bk(a.description),e.set(g,f),f+=g.length,g=[0,0].concat(b),e.set(g,f),f+=g.length,g=bk(a.value),e.set(g,f),f+=g.length;break;case"TBPM":case"TLEN":case"TDAT":case"TYER":f++,g=bj(a.value),e.set(g,f),f+=g.length;break;case"PRIV":g=bj(a.id),e.set(g,f),f+=g.length,f++,e.set(new Uint8Array(a.value),f),f+=a.value.byteLength;break;case"APIC":g=[+!!a.useUnicodeEncoding],e.set(g,f),f+=g.length,g=bj(a.mimeType),e.set(g,f),f+=g.length,g=[0,a.pictureType],e.set(g,f),f+=g.length,a.useUnicodeEncoding?(g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a.description),e.set(g,f),f+=g.length,f+=2):(g=bj(a.description),e.set(g,f),f+=g.length,f++),e.set(new Uint8Array(a.value),f),f+=a.value.byteLength;break;case"IPLS":g=[1],e.set(g,f),f+=g.length,a.value.forEach(a=>{g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a[0].toString()),e.set(g,f),f+=g.length,g=[0,0].concat(b),e.set(g,f),f+=g.length,g=bk(a[1].toString()),e.set(g,f),f+=g.length,g=[0,0],e.set(g,f),f+=g.length});break;case"SYLT":g=[1].concat(a.language).concat(a.timestampFormat).concat(a.type),e.set(g,f),f+=g.length,g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a.description),e.set(g,f),f+=g.length,f+=2,a.value.forEach(a=>{g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a[0].toString()),e.set(g,f),f+=g.length,g=[0,0],e.set(g,f),f+=g.length,g=bl(a[1]),e.set(g,f),f+=g.length})}}),f+=this.padding,e.set(new Uint8Array(this.arrayBuffer),f),this.arrayBuffer=d,d}getBlob(){return new Blob([this.arrayBuffer],{type:"audio/mpeg"})}getURL(){return this.url||(this.url=URL.createObjectURL(this.getBlob())),this.url}revokeURL(){URL.revokeObjectURL(this.url)}}async function bn(a,b){var c;let d,e;if("mp3"!==bh(a))throw Error("Unsupported file format");return c=await a.arrayBuffer(),(d=new bm(c)).setFrame("TIT2",b.title.trim()),d.setFrame("TPE1",[b.artist.trim()]),(e=b.album.trim())&&d.setFrame("TALB",e),d.addTag()}async function bo(a,b,c,d){let e;if(!a.library)return{ok:!1,reason:"Only local library files can be tagged on disk."};let f=c.get(a.library.rootId);if(!f)return{ok:!1,reason:"Library folder is not available. Try rescanning."};if(!await bf(f,d))return{ok:!1,reason:"Write permission is required. Re-add the library folder or allow write access when prompted."};let g=await bg(a,c);if(!g)return{ok:!1,reason:"Could not open the audio file."};let h=await g.getFile();if(!bh(h))return{ok:!1,reason:"Tag writing is supported for MP3 files only."};try{e=await bn(h,b)}catch{return{ok:!1,reason:"Failed to update embedded tags in this file."}}try{let a=await g.createWritable();await a.write(e),await a.close()}catch{return{ok:!1,reason:"Could not save tags to the file."}}return{ok:!0}}async function bp(a,b,c){let d=0,e=0,f=null;for(let g of a){if(!g.library)continue;let a=await bo(g,{title:g.title,artist:g.artist,album:g.album},b,c&&0===d&&0===e);a.ok?d+=1:(e+=1,f||(f=a.reason))}return{ok:0===e,writtenCount:d,failedCount:e,reason:f}}function bq(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b)a7(a)&&(c.has(a.id)||c.set(a.id,a));return[...c.values()]}function br(a){return a.library?{...a,source:a.source??"library"}:"youtube"===a.source||a.id.startsWith("youtube:")?{...a,source:"youtube",library:void 0}:"musicbrainz"===a.source||a.id.startsWith("musicbrainz:")?{...a,source:"musicbrainz",library:void 0}:a.youtubeQuery?.trim()?{...a,source:a.source??"musicbrainz",library:void 0}:{...a,library:void 0}}async function bs(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?(await f.getFileHandle(g)).getFile():null}function bt(a){let{progress:c,onDismiss:d}=a;return c?(0,b.jsxs)("div",{role:"status","aria-live":"polite","aria-busy":c.percent<100,className:"pointer-events-auto fixed bottom-4 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-zinc-200/90 bg-white/95 p-4 pr-10 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-zinc-700/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,b.jsx)("button",{type:"button",onClick:d,className:"absolute right-2 top-2 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200","aria-label":"Dismiss notification",children:(0,b.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:(0,b.jsx)("path",{d:"M6 6l12 12M18 6L6 18",strokeLinecap:"round"})})}),(0,b.jsx)("p",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:c.percent>=100?"Library scan complete":"Scanning library"}),(0,b.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600 dark:text-zinc-400",children:c.label}),(0,b.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c.percent,"aria-label":"Library scan progress",className:"mt-3 h-1.5 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-accent-500 transition-[width] duration-200 ease-out dark:bg-accent-400",style:{width:`${c.percent}%`}})}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[11px] tabular-nums text-zinc-500 dark:text-zinc-500",children:[c.percent,"%",c.filesTotal>0?(0,b.jsxs)("span",{className:"text-zinc-400",children:[" ","· ",c.filesDone,"/",c.filesTotal," files"]}):null]})]}):null}var bu=a.i(62988);function bv(a){return(0,b.jsxs)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:a.className,children:[(0,b.jsx)("circle",{cx:"5",cy:"12",r:"1.75"}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,b.jsx)("circle",{cx:"19",cy:"12",r:"1.75"})]})}function bw(a){let[d,e]=(0,c.useState)(!1),f=(0,c.useRef)(null),g=(0,c.useId)(),h=a.triggerLabel??"Track actions";return(0,c.useEffect)(()=>{if(!d)return;let a=a=>{let b=a.target;b instanceof Node&&(f.current?.contains(b)||e(!1))},b=a=>{"Escape"===a.key&&e(!1)};return document.addEventListener("pointerdown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("pointerdown",a),document.removeEventListener("keydown",b)}},[d]),(0,b.jsxs)("div",{ref:f,className:"relative shrink-0",children:[(0,b.jsx)("button",{type:"button","aria-haspopup":"menu","aria-expanded":d,"aria-controls":g,"aria-label":h,onClick:()=>e(a=>!a),className:"flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-200/80 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:(0,b.jsx)(bv,{className:"h-4 w-4"})}),d?(0,b.jsx)("div",{id:g,role:"menu",className:"absolute top-full right-0 z-30 mt-1 min-w-[11rem] overflow-hidden rounded-lg border border-zinc-200 bg-white py-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900",children:a.items.map(a=>(0,b.jsx)("button",{type:"button",role:"menuitem",disabled:a.disabled,onClick:()=>{a.disabled||(a.onSelect(),e(!1))},className:"block w-full cursor-pointer px-3 py-2 text-left text-xs font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:text-zinc-200 dark:hover:bg-zinc-800",children:a.label},a.id))}):null]})}function bx(a){let b=Math.max(0,Math.floor(a)),c=Math.floor(b/60);return`${c}:${(b%60).toString().padStart(2,"0")}`}function by(a){let b=[{id:"details",label:"View details",onSelect:()=>a.onViewDetails(a.track)}];return a.onViewRelatedSongs&&b.push({id:"related",label:"Related songs",onSelect:()=>a.onViewRelatedSongs(a.track)}),a.onRemoveFromLibrary?b.push({id:"remove",label:"Remove from library",onSelect:a.onRemoveFromLibrary}):a.onSave&&b.push({id:"save",label:a.alreadySaved?"In library":"Add to library",disabled:a.alreadySaved,onSelect:a.onSave}),b}function bz(a){let{openTrackDetails:c,openRelatedSongs:d,removeFromLibrary:e}=cb(),f=a.compact?"px-1.5 py-1.5":"px-2 py-2",g=a.compact?"gap-1.5":"gap-2",h=a.subtitle??`${a.track.artist} \xb7 ${a.track.album}`;return(0,b.jsxs)("div",{className:`flex items-center ${g} rounded-lg ${f} hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:a.track.title}),(0,b.jsx)("p",{className:"truncate text-xs text-zinc-500",children:h})]}),(0,b.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:a.track.durationSec>0?bx(a.track.durationSec):"—"}),(0,b.jsx)(bw,{triggerLabel:`Actions for ${a.track.title}`,items:by({track:a.track,onViewDetails:c,onViewRelatedSongs:d,onSave:a.alreadySaved?void 0:()=>a.onSave(a.track),onRemoveFromLibrary:a.alreadySaved?()=>e(a.track):void 0})}),(0,b.jsx)("button",{type:"button",onClick:()=>a.onQueue(a.track),className:"shrink-0 cursor-pointer rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})}a.s(["default",()=>bz],47179),a.s(["default",0,bw],67486),a.s(["formatDuration",0,bx],80977),a.s(["default",0,by],34991);var bA=a.i(85543);async function bB(a,b){let c=a.artist.trim(),d=a.track.trim(),e=a.mbid?.trim();if(!e&&(!c||!d))return[];let f=(0,bA.default)();if(!f)throw Error("Add a Last.fm API key in Settings → Last.fm");let g=new URL("/api/lastfm/track-similar",window.location.origin);g.searchParams.set("artist",c),g.searchParams.set("track",d),e&&g.searchParams.set("mbid",e),void 0!==a.limit&&g.searchParams.set("limit",String(a.limit));let h=await fetch(g,{signal:b,headers:{"X-Muzical-Lastfm-Api-Key":f}}),i=await h.json().catch(()=>({}));if(!h.ok)throw console.error("[Last.fm] proxy request failed",{status:h.status,statusText:h.statusText,proxyUrl:g.toString(),body:i}),Error(i.error?.trim()||`Last.fm request failed (${h.status})`);if(Array.isArray(i.tracks))return i.tracks;if("number"==typeof i.error&&i.error>0)throw Error(i.message?.trim()||`Last.fm error ${i.error}`);let j=i.similartracks?.track;if(!j)return[];let k=Array.isArray(j)?j:[j],l=[];for(let a of k){let b=function(a){var b;let c=a.name?.trim(),d="string"==typeof(b=a.artist)?b.trim():b&&"object"==typeof b?(b.name?.trim()||b["#text"]?.trim())??"":"";if(!c||!d)return null;let e=a.mbid?.trim();return{name:c,artistName:d,mbid:e&&e.length>0?e:void 0,match:function(a){if(void 0===a)return;let b=Number.parseFloat(a);return Number.isFinite(b)?b:void 0}(a.match),url:a.url?.trim()||void 0,durationSec:function(a){if(void 0===a)return;let b=Number.parseInt(a,10);return Number.isFinite(b)&&b>0?b:void 0}(a.duration)}}(a);b&&l.push(b)}return l}function bC(a){let b=a.name.trim()||"Unknown title",c=a.artistName.trim()||"Unknown artist",d=a.mbid?.trim();return{id:d&&d.length>0?`musicbrainz:${d}`:`lastfm:${encodeURIComponent(c)}\u0000${encodeURIComponent(b)}`,title:b,artist:c,album:"Unknown album",durationSec:a.durationSec??0,youtubeQuery:`${b} ${c}`.trim(),source:d?"musicbrainz":void 0}}function bD(a){let{seedTrack:d,onClose:e}=a,{libraryTracks:f,addToQueue:g,addToLibrary:h,compactLists:i}=cb(),j=(0,c.useId)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)([]),r=(0,c.useMemo)(()=>new Set(f.map(a=>a.id)),[f]);(0,c.useEffect)(()=>{if(!d)return;if(!(0,bA.default)()){m(!1),o(null),q([]);return}let a=new AbortController;m(!0),o(null),q([]);let b=function(a){let b="musicbrainz:";if(!a.startsWith(b))return null;let c=a.slice(b.length).trim();return c.length>0?c:null}(d.id);return bB({artist:d.artist,track:d.title,mbid:b??void 0,limit:25},a.signal).then(a=>{q(a.map(bC))}).catch(b=>{a.signal.aborted||o(b instanceof Error?b.message:"Failed to load related songs")}).finally(()=>{a.signal.aborted||m(!1)}),()=>a.abort()},[d]),(0,c.useEffect)(()=>{if(!d)return;let a=a=>{"Escape"===a.key&&e()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[d,e]);let s=(0,c.useCallback)(()=>{0!==p.length&&g(p)},[g,p]);if(!d)return null;let t=(0,bA.default)().length>0;return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:a=>{a.target===a.currentTarget&&e()},children:(0,b.jsxs)("div",{ref:k,role:"dialog","aria-modal":"true","aria-labelledby":j,className:"flex max-h-[min(85vh,36rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:j,className:"text-base font-semibold text-zinc-900 dark:text-zinc-50",children:"Related songs"}),(0,b.jsxs)("p",{className:"mt-0.5 truncate text-sm text-zinc-600 dark:text-zinc-400",children:[d.title," · ",d.artist]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-zinc-500",children:"Via Last.fm listening similarity"})]}),(0,b.jsx)("button",{type:"button",onClick:e,className:"shrink-0 rounded-full px-2 py-1 text-sm font-medium text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 py-3",children:[t?null:(0,b.jsxs)("p",{className:"px-2 py-4 text-sm text-zinc-600 dark:text-zinc-400",children:["Add a Last.fm API key in"," ",(0,b.jsx)(bu.default,{href:"/settings/lastfm",className:"font-medium text-accent-700 underline-offset-2 hover:underline dark:text-accent-400",onClick:e,children:"Settings → Last.fm"}),"."]}),l?(0,b.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Loading related songs…"}):null,n?(0,b.jsx)("p",{className:"px-2 py-4 text-sm text-red-600 dark:text-red-400",children:n}):null,l||n||!t||0!==p.length?null:(0,b.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No similar tracks found."}),!l&&p.length>0?(0,b.jsx)("ul",{className:"space-y-0.5",children:p.map(a=>(0,b.jsx)("li",{children:(0,b.jsx)(bz,{track:a,compact:i,alreadySaved:r.has(a.id)||a7(a),onQueue:g,onSave:h})},a.id))}):null]}),p.length>0?(0,b.jsx)("div",{className:"border-t border-zinc-200 px-4 py-3 dark:border-zinc-800",children:(0,b.jsxs)("button",{type:"button",onClick:s,className:"w-full rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400",children:["Add all to queue (",p.length,")"]})}):null]})})}let bE="mt-1 block w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100";function bF(a){return{title:a.title,artist:a.artist,album:a.album}}function bG(a){let{track:d,canWriteToFile:e,saving:f,saveError:g,onSave:h}=a,[i,j]=(0,c.useState)(()=>bF(d)),[k,l]=(0,c.useState)(()=>bF(d));(0,c.useEffect)(()=>{let a=bF(d);j(a),l(a)},[d.id,d.title,d.artist,d.album]);let m=i.title!==k.title||i.artist!==k.artist||i.album!==k.album,n=m&&""!==i.title.trim()&&""!==i.artist.trim(),o=(0,c.useCallback)(()=>{j(k)},[k]),p=(0,c.useCallback)(async a=>{if(a.preventDefault(),!n||f)return;let b=be(d,i),c={title:b.title,artist:b.artist,album:b.album};await h(c),l(c),j(c)},[n,i,h,f,d]);return(0,b.jsxs)("form",{onSubmit:p,className:"space-y-3",children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Metadata"}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Title"}),(0,b.jsx)("input",{type:"text",value:i.title,onChange:a=>j(b=>({...b,title:a.target.value})),className:bE,autoComplete:"off",required:!0})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Artist"}),(0,b.jsx)("input",{type:"text",value:i.artist,onChange:a=>j(b=>({...b,artist:a.target.value})),className:bE,autoComplete:"off",required:!0})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Album"}),(0,b.jsx)("input",{type:"text",value:i.album,onChange:a=>j(b=>({...b,album:a.target.value})),className:bE,autoComplete:"off"})]}),e?(0,b.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving also writes ID3 tags to MP3 files when the library folder allows write access."}):null,d.youtubeQuery?.trim()?(0,b.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving updates the YouTube search query and clears any resolved video id for this track."}):null,g?(0,b.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",role:"alert",children:g}):null,(0,b.jsxs)("div",{className:"flex flex-wrap gap-2 pt-1",children:[(0,b.jsx)("button",{type:"submit",disabled:!n||f,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-50",children:f?"Saving…":"Save"}),(0,b.jsx)("button",{type:"button",disabled:!m||f,onClick:o,className:"rounded-full border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",children:"Revert"})]})]})}function bH(a){if(!Number.isFinite(a)||a<0)return"—";if(a<1024)return`${a} B`;let b=["KB","MB","GB","TB"],c=a/1024,d=0;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return`${c<10?c.toFixed(1):Math.round(c).toString()} ${b[d]}`}function bI(a,b,c,d=!1){if(null==c)return;let e="number"==typeof c?String(c):c.trim();e&&a.push({label:b,value:e,mono:d})}async function bJ(a){let b=[];bI(b,"File name",a.name,!0),bI(b,"MIME type",a.type||"—"),b.push({label:"File size",value:bH(a.size)}),b.push({label:"Last modified",value:new Date(a.lastModified).toLocaleString()});try{let{format:c,common:d}=await aZ(a,{duration:!0});c.container&&bI(b,"Container",c.container),c.codec&&bI(b,"Codec",c.codec),"number"==typeof c.bitrate&&c.bitrate>0&&bI(b,"Bitrate",`${Math.round(c.bitrate/1e3)} kbps`),"number"==typeof c.sampleRate&&c.sampleRate>0&&bI(b,"Sample rate",`${c.sampleRate} Hz`),"number"==typeof c.numberOfChannels&&bI(b,"Channels",c.numberOfChannels),"number"==typeof c.bitsPerSample&&c.bitsPerSample>0&&bI(b,"Bits per sample",c.bitsPerSample),bI(b,"Tag title",d.title),bI(b,"Tag artist",d.artist??d.artists?.join(", ")),bI(b,"Tag album artist",d.albumartist??d.albumartists?.join(", ")),bI(b,"Tag album",d.album),"number"==typeof d.year&&bI(b,"Tag year",d.year),d.genre?.length&&bI(b,"Tag genre",d.genre.join(", ")),"number"==typeof d.track?.no&&bI(b,"Tag track #",d.track.no),"number"==typeof d.disk?.no&&bI(b,"Tag disc #",d.disk.no),bI(b,"Tag composer",Array.isArray(d.composer)?d.composer.join(", "):d.composer),bI(b,"Tag comment",d.comment?.join(" · "))}catch{bI(b,"Embedded tags","Could not read metadata from this file")}return b}function bK(a,b,c,d=!1){let e=c?.trim();e&&a.push({label:b,value:e,mono:d})}function bL(a){return 0===a.rows.length?null:(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:a.title}),(0,b.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:a.rows.map(c=>(0,b.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,b.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:c.label}),(0,b.jsx)("dd",{className:["text-sm break-words text-zinc-900 dark:text-zinc-100",c.mono?"font-mono text-xs":""].join(" "),children:c.value})]},`${a.title}-${c.label}`))})]})}function bM(a){let{track:d,onClose:e}=a,{roots:f,resolveFileForTrack:g,saveTrackMetadata:h}=cb(),i=(0,c.useId)(),j=(0,c.useRef)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>{var a;let b;return d?(a={omitEditableTags:!0},b=[],a?.omitEditableTags||(bK(b,"Title",d.title),bK(b,"Artist",d.artist),bK(b,"Album",d.album)),d.durationSec>0&&b.push({label:"Duration",value:bx(d.durationSec)}),bK(b,"Source",d.library?"Local library file":"youtube"===d.source||d.id.startsWith("youtube:")?"YouTube":"musicbrainz"===d.source||d.id.startsWith("musicbrainz:")?"MusicBrainz":d.youtubeVideoId?.trim()?"YouTube":d.youtubeQuery?.trim()?"YouTube (search)":"library"===d.source?"Local library":"Unknown"),bK(b,"Track ID",d.id,!0),d.library&&(bK(b,"Library folder",f.find(a=>a.id===d.library?.rootId)?.name??d.library.rootId),bK(b,"Relative path",d.library.relativePath,!0),"number"==typeof d.library.fileSize&&Number.isFinite(d.library.fileSize)&&b.push({label:"File size (at scan)",value:bH(d.library.fileSize)}),"number"==typeof d.library.fileLastModified&&Number.isFinite(d.library.fileLastModified)&&b.push({label:"Modified (at scan)",value:new Date(d.library.fileLastModified).toLocaleString()})),bK(b,"YouTube query",d.youtubeQuery,!0),bK(b,"YouTube video ID",d.youtubeVideoId,!0),b):[]},[d,f]),v=(0,c.useCallback)(async a=>{if(!d)return;r(!0),t(null);let b=await h(d.id,a);(r(!1),b.ok)?d.library&&g(d).then(async a=>{a&&l(await bJ(a))}):t(b.reason)},[g,h,d]);return((0,c.useEffect)(()=>{if(!d?.library)return;let a=!1,b=requestAnimationFrame(()=>{a||(n(!0),p(null),l([]))});return g(d).then(async b=>{if(a)return;if(!b)return void p("Could not open the file. Try rescanning the library folder.");let c=await bJ(b);a||l(c)}).catch(()=>{a||p("Failed to read file metadata.")}).finally(()=>{a||n(!1)}),()=>{a=!0,cancelAnimationFrame(b)}},[d,g]),(0,c.useEffect)(()=>{if(d?.library)return;let a=requestAnimationFrame(()=>{l([]),n(!1),p(null)});return()=>cancelAnimationFrame(a)},[d?.library,d?.id]),(0,c.useEffect)(()=>{if(!d)return;let a=a=>{"Escape"===a.key&&e()};return document.addEventListener("keydown",a),j.current?.focus(),()=>document.removeEventListener("keydown",a)},[d,e]),d)?(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:e,children:(0,b.jsxs)("div",{ref:j,role:"dialog","aria-modal":"true","aria-labelledby":i,tabIndex:-1,className:"flex max-h-[min(85vh,40rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:i,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:d.title}),(0,b.jsxs)("p",{className:"truncate text-sm text-zinc-500",children:[d.artist," · ",d.album]})]}),(0,b.jsx)("button",{type:"button",onClick:e,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto overscroll-contain px-4 py-4",children:[(0,b.jsx)(bG,{track:d,canWriteToFile:!!d.library,saving:q,saveError:s,onSave:v}),(0,b.jsx)(bL,{title:"Details",rows:u}),d.library?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"File & embedded metadata"}),m?(0,b.jsx)("p",{className:"mt-2 text-sm text-zinc-500",children:"Reading file…"}):null,o?(0,b.jsx)("p",{className:"mt-2 text-sm text-red-600 dark:text-red-400",role:"alert",children:o}):null,m||o||!(k.length>0)?null:(0,b.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:k.map(a=>(0,b.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,b.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:a.label}),(0,b.jsx)("dd",{className:["text-sm text-zinc-900 break-words dark:text-zinc-100",a.mono?"font-mono text-xs":""].join(" "),children:a.value})]},`file-${a.label}`))})]}):null]})]})}):null}function bN(){return{maxScanDepth:0,followSymlinks:!1,enabledExtensions:[...i]}}function bO(){return bN()}function bP(a){}function bQ(){return{trackIds:[],tracks:[],activeTrackId:null,positionSec:0}}function bR(a){let b=new Set,c=[];for(let d of a){let a=d.youtubeQuery?.trim();!(!a||d.youtubeVideoId?.trim())&&(b.has(d.id)||(b.add(d.id),c.push({trackId:d.id,query:a})))}return c}a.s(["default",0,bN],17479),a.s(["default",0,bR],24388);var bS=a.i(41090);async function bT(a,b){let c=a.trim();if(!c)return null;let d=new URL("/api/youtube/resolve",window.location.origin);d.searchParams.set("q",c);let e=await fetch(d.toString(),{signal:b});if(!e.ok)return null;let f=await e.json();return f.videoId?.trim()||null}var bU=a.i(37978);function bV(a){let b=a.toLowerCase();return b.includes("quota")||b.includes("quotaexceeded")}function bW(){(0,bS.setYoutubeDataApiBlockedInternal)(!0)}a.s(["default",0,bV],44803),a.s(["default",0,bW],91320),a.s(["YOUTUBE_DATA_API_MIN_INTERVAL_MS",0,900,"YOUTUBE_SEARCH_CACHE_TTL_MS",0,3e5,"YOUTUBE_SEARCH_DEBOUNCE_MS",0,500,"YOUTUBE_SEARCH_PAGE_SIZE",0,20],16564);let bX=0,bY=Promise.resolve();async function bZ(){bY=bY.then(async()=>{let a=Math.max(0,900-(Date.now()-bX));a>0&&await new Promise(b=>setTimeout(b,a)),bX=Date.now()}),await bY}a.s(["default",0,bZ],73972);let b$=new Map;function b_(a){let b=a.trim().toLowerCase();return b?b$.get(b)??null:null}async function b0(a,b,c){let d=a.trim(),e=b.trim();if(!d||!e||(0,bS.default)())return null;let f=b_(d);if(f)return f;let g=new URL("https://www.googleapis.com/youtube/v3/search");g.searchParams.set("part","snippet"),g.searchParams.set("type","video"),g.searchParams.set("maxResults","5"),g.searchParams.set("videoEmbeddable","true"),g.searchParams.set("q",d),g.searchParams.set("key",e),await bZ();let h=await fetch(g,{signal:c}),i=await h.json();if(!h.ok){let a=i.error?.message?.trim()??"";return(i.error?.errors?.some(a=>"quotaExceeded"===a.reason)||bV(a))&&bW(),null}for(let a of i.items??[]){let b=a.id?.videoId?.trim();if(b)return!function(a,b){let c=a.trim().toLowerCase(),d=b.trim();c&&d&&b$.set(c,d)}(d,b),b}return null}async function b1(a,b){let c=a.trim();if(!c)return null;let d=b_(c);if(d)return d;let e=(0,bU.default)().trim();if(e&&!(0,bS.default)()){let a=await b0(c,e,b);if(a)return a}return bT(c,b)}async function b2(a,b,c={}){if(0===a.length||(0,bS.default)())return;let d="number"==typeof c.maxConcurrent&&c.maxConcurrent>0?Math.floor(c.maxConcurrent):2,e=c.signal,f=0,g=async()=>{for(;f<a.length;){if(e?.aborted)return;let c=f;f+=1;let d=a[c];if((0,bS.default)())return;let g=null;try{g=await b1(d.query,e)}catch{continue}!(e?.aborted||(0,bS.default)())&&g&&b(d.trackId,g)}},h=Array.from({length:Math.min(d,a.length)},()=>g());await Promise.all(h)}a.s(["default",0,b1],22451),a.s(["default",0,b2],2196);var b3=a.i(56663);let b4=(0,c.createContext)(null);function b5(a,b){}function b6(a,b){let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),[...c].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"}))}let b7="Use Rescan all in Settings → Library, or remove and add the folders again so the browser can access your music.";async function b8(a){if(0===a.size)return!1;let b={mode:"read"};for(let c of a.values())try{let a=await c.queryPermission?.(b);if("granted"!==a)return!1}catch{return!1}return!0}async function b9(a,b){let c={mode:"read"};for(let d of a.values())try{let a=await d.queryPermission?.(c);if("granted"===a||!b)continue;await d.requestPermission?.(c)}catch{}}function ca(a){let{preferences:i}=(0,b3.useYoutubePreferences)(),n=(0,c.useRef)(null),o=(0,c.useRef)(!1),p=(0,c.useRef)(new Map),q=(0,c.useRef)([]),r=(0,c.useRef)([]),s=(0,c.useRef)(null),t=(0,c.useRef)(null),u=(0,c.useRef)(!1),v=(0,c.useRef)(!1),w=(0,c.useRef)(bO()),x=(0,c.useRef)(!1),y=(0,c.useRef)(!1),z=(0,c.useRef)(!1),A=(0,c.useRef)({activeQueueId:null,positionSec:0}),B=(0,c.useRef)(null),[C,D]=(0,c.useState)([]),[E,F]=(0,c.useState)([]),[G,H]=(0,c.useState)([]),[I,J]=(0,c.useState)([]),[K,L]=(0,c.useState)([]),[M,N]=(0,c.useState)([]),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)([]),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(!0),[W,X]=(0,c.useState)(!1),[Y,Z]=(0,c.useState)(bO),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(null),[ac,ad]=(0,c.useState)(null),[ae,af]=(0,c.useState)(!1),[ag,ah]=(0,c.useState)(!1),[ai,aj]=(0,c.useState)(!1),[ak,al]=(0,c.useState)(null),[am,an]=(0,c.useState)(null),[ao,ap]=(0,c.useState)(!1),[aq,ar]=(0,c.useState)(null),[as,at]=(0,c.useState)(null),[au,av]=(0,c.useState)(!1),[aw,ax]=(0,c.useState)(0),ay=(0,c.useRef)(0),az=(0,c.useCallback)(a=>{let b=Math.max(0,Math.floor(a));0!==b&&(ay.current+=b,ax(ay.current),av(!0))},[]),aA=(0,c.useCallback)(a=>{let b=Math.max(0,Math.floor(a));ay.current=Math.max(0,ay.current-b),ax(ay.current),0===ay.current&&av(!1)},[]);(0,c.useEffect)(()=>{Promise.resolve().then(()=>{ap(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{P([].slice(0,24))})},[]),(0,c.useEffect)(()=>{queueMicrotask(()=>{R([].slice(0,12)),v.current=!0})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{T(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{V(!0)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{X(!1),x.current=!1})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{let a=bO();w.current=a,Z(a)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{y.current=!1,_(!1)})},[]),(0,c.useEffect)(()=>{O.slice(0,24)},[O]),(0,c.useEffect)(()=>{v.current&&e(Q.slice(0,12))},[Q]),(0,c.useEffect)(()=>{r.current=K},[K]),(0,c.useEffect)(()=>()=>{s.current&&(clearTimeout(s.current),s.current=null),t.current&&(clearTimeout(t.current),t.current=null),B.current&&(clearTimeout(B.current),B.current=null)},[]);let aB=(0,c.useCallback)(()=>{if(!y.current)return;if(B.current&&(clearTimeout(B.current),B.current=null),0===M.length)return void bP(bQ());let a=A.current.activeQueueId,b=a?M.find(b=>b.queueId===a):M[0];bP({trackIds:M.map(a=>a.track.id),tracks:M.map(a=>a.track),activeTrackId:b?.track.id??null,positionSec:A.current.positionSec})},[M]),aC=(0,c.useCallback)(()=>{!y.current||z.current&&(B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{B.current=null,aB()},400))},[aB]),aD=(0,c.useCallback)(a=>{z.current||(z.current=!0,y.current,ah(!0))},[]);(0,c.useEffect)(()=>{if(!z.current)return;let a=new Map(K.map(a=>[a.id,a]));N(b=>b.map(b=>{let c=a.get(b.track.id);return c?{...b,track:c}:b}))},[K]),(0,c.useEffect)(()=>{aC()},[M,aC]),(0,c.useEffect)(()=>{!ae||z.current||aD(K)},[ae,K,aD]),(0,c.useEffect)(()=>{let a=()=>{aB()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[aB]);let aE=(0,c.useCallback)(()=>{s.current&&(clearTimeout(s.current),s.current=null);let a=n.current;a&&l(a,q.current.map(a=>a.id),r.current).catch(()=>{})},[]),aF=(0,c.useCallback)(()=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{s.current=null,aE()},450)},[aE]);(0,c.useEffect)(()=>{let a=()=>{aE()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[aE]);let aG=(0,c.useCallback)(()=>{t.current&&(clearTimeout(t.current),t.current=null)},[]),aH=(0,c.useCallback)(()=>{aG(),t.current=setTimeout(()=>{t.current=null,al(null)},4e3)},[aG]),aI=(0,c.useCallback)(()=>{aG(),al(null)},[aG]),aJ=(0,c.useCallback)(a=>{al({percent:function(a){if(a.rootCount<=0)return 0;let b=100/a.rootCount,c=a.rootIndex*b;if("walk"===a.phase)c+=.12*b;else{let d=a.filesTotal??0,e=a.filesDone??0;c+=b*(.12+.88*(d>0?Math.min(1,e/d):0))}return Math.min(100,Math.round(c))}(a),label:function(a){let b=a.rootCount>1?`[${a.rootIndex+1}/${a.rootCount}] `:"";if("walk"===a.phase)return`${b}Listing files in ${a.rootName}…`;let c=a.filesTotal??0,d=a.filesDone??0,e=a.filesSkipped??0;return c>0?e>0?`${b}Reading tags (${d}/${c}, ${e} unchanged) \xb7 ${a.rootName}`:`${b}Reading tags (${d}/${c}) \xb7 ${a.rootName}`:`${b}Reading tags \xb7 ${a.rootName}`}(a),rootName:a.rootName,filesDone:a.filesDone??0,filesTotal:a.filesTotal??0})},[]),aK=(0,c.useCallback)(async a=>{if(o.current)return null;o.current=!0;let b=q.current,c=p.current;aG(),aj(!0),an(null),al({percent:0,label:"Starting library scan…",rootName:null,filesDone:0,filesTotal:0});try{var d;b.length>0&&await b9(c,a);let e={maxScanDepth:(d=w.current).maxScanDepth,followSymlinks:d.followSymlinks,enabledExtensions:new Set(d.enabledExtensions)},f=await a6(b,c,e,r.current,x.current,aJ);return al({percent:100,label:f.tracks.length>0?`Found ${f.tracks.length} track${1===f.tracks.length?"":"s"}`:"Scan complete",rootName:null,filesDone:f.tracks.length,filesTotal:f.tracks.length}),aH(),f}catch(a){return al(null),an(a instanceof Error?a.message:"Scan failed"),null}finally{o.current=!1,aj(!1)}},[aJ,aG,aH]),aL=(0,c.useCallback)(async(a=!1)=>{let b=await aK(a);if(!b)return;let c=q.current,{tracks:d,failedRootCount:e,firstError:f}=b,g=bq(d,r.current);L(g);let h=n.current;if(h)try{await l(h,c.map(a=>a.id),g)}catch{}a&&e>0&&0===d.length&&c.length>0&&an(f?`${f} ${b7}`:b7)},[aK]),aM=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(b)||b<=0)return;let c=c=>c.id===a&&c.durationSec<=0?{...c,durationSec:b}:c;L(a=>a.map(c)),N(a=>a.map(a=>({...a,track:c(a.track)}))),aF()},[aF]),aN=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return;let d=a=>a.id===c?b(a):a;L(a=>a.map(d)),N(a=>a.map(a=>({...a,track:d(a.track)}))),ar(a=>a?.id===c?b(a):a),aF()},[aF]),aO=(0,c.useCallback)(async(a,b)=>{let c=a.trim();if(!c)return{ok:!1,reason:"Invalid track."};let d=r.current.find(a=>a.id===c);if(!d)return{ok:!1,reason:"Track not found."};let e=be(d,b);return(aN(c,()=>e),e.library)?bo(e,{title:e.title,artist:e.artist,album:e.album},p.current,!0):{ok:!0}},[aN]),aP=(0,c.useCallback)(async a=>bp(a,p.current,!0),[]),aQ=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return null;let d=b.artist.trim();if(!d)return null;let e=b.album.trim(),f=a=>a9(a.album,a.artist)===c,g=ba(r.current,c);if(0===g.length)return null;let h=a9(e||g[0].album,d),i=a=>f(a)?bc(a,{artist:d,album:e}):a;return L(a=>a.map(i)),N(a=>a.map(a=>({...a,track:i(a.track)}))),ar(a=>a&&f(a)?i(a):a),H(a=>{if(!a.includes(c))return a;let b=a.filter(a=>a!==c);return b.includes(h)?b:[...b,h]}),aF(),h},[aF]),aR=(0,c.useCallback)((a,b)=>{let c=a.trim(),d=b.artist.trim();if(!c||!d)return null;let e=a=>a8(a.artist)===c;if(0===bb(r.current,c).length)return null;let f=a=>e(a)?bd(a,{artist:d}):a;return L(a=>a.map(f)),N(a=>a.map(a=>({...a,track:f(a.track)}))),ar(a=>a&&e(a)?f(a):a),F(a=>{if(!a.includes(c))return a;let b=a.filter(a=>a!==c);return b.includes(d)?b:[...b,d]}),H(a=>{let b=!1,e=a.map(a=>{let e=a.split("\0"),f=e[0]??"";return a8(e[1]??"")!==c?a:(b=!0,a9(f,d))});return b?[...new Set(e)]:a}),aF(),d},[aF]);(0,c.useEffect)(()=>{if(!i.prefetchQueueVideoIds||(0,bS.default)())return;let a=i.prefetchQueueMaxTracks,b=bR(M.map(a=>a.track)).slice(0,a);if(0===b.length)return;let c=new AbortController,d=b.length;return az(d),b2(b,(a,b)=>{aN(a,a=>({...a,youtubeVideoId:b}))},{signal:c.signal}).finally(()=>{aA(d)}),()=>{c.abort()}},[M,aN,i.prefetchQueueVideoIds,i.prefetchQueueMaxTracks,az,aA]);let aS=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(a=>({queueId:crypto.randomUUID(),track:a}));N(a=>[...a,...b])},[]),aT=(0,c.useCallback)(a=>{let b=Array.isArray(a)?[...a]:[a];if(0===b.length)return;let c=b.map(a=>({queueId:crypto.randomUUID(),track:a})),d=c[0].queueId;A.current={activeQueueId:d,positionSec:0},N(c),ad({activeQueueId:d}),y.current&&(B.current&&(clearTimeout(B.current),B.current=null),bP({trackIds:b.map(a=>a.id),tracks:b,activeTrackId:b[0].id,positionSec:0}))},[]),aU=(0,c.useCallback)(()=>{ad(null)},[]),aV=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(br);0!==b.length&&(L(a=>{let c=new Map(a.map(a=>[a.id,a])),d=!1;for(let a of b){let b=c.get(a.id);if(b){c.set(a.id,{...b,...a,youtubeVideoId:a.youtubeVideoId??b.youtubeVideoId}),d=!0;continue}c.set(a.id,a),d=!0}return d?[...c.values()]:a}),aF())},[aF]),aW=(0,c.useCallback)(a=>{let b=new Set((Array.isArray(a)?a:[a]).map(a=>a.id).filter(Boolean));0!==b.size&&(L(a=>a.filter(a=>!b.has(a.id))),D(a=>a.filter(a=>!b.has(a))),N(a=>a.filter(a=>!b.has(a.track.id))),aF())},[aF]),aX=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=ba(r.current,b);0!==c.length&&(H(a=>a.filter(a=>a!==b)),aW(c))},[aW]),aY=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=bb(r.current,b);0!==c.length&&(F(a=>a.filter(a=>a!==b)),aW(c))},[aW]),aZ=(0,c.useCallback)(()=>{let a=r.current,b=new Set(a.filter(a7).map(a=>a.id));0!==b.size&&(L(a.filter(a=>!a7(a))),D(a=>a.filter(a=>!b.has(a))),N(a=>a.filter(a=>!b.has(a.track.id))),aF())},[aF]),a$=(0,c.useCallback)(a=>{N(b=>b.filter(b=>b.queueId!==a))},[]),a_=(0,c.useCallback)(()=>{A.current={activeQueueId:null,positionSec:0},N([]),y.current&&(B.current&&(clearTimeout(B.current),B.current=null),bP(bQ()))},[]),a0=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(a)||!Number.isFinite(b))return;let c=Math.trunc(a),d=Math.trunc(b);N(a=>{if(c<0||d<0||c>=a.length||d>=a.length||c===d)return a;let b=[...a],[e]=b.splice(c,1);return b.splice(d,0,e),b})},[]),a1=(0,c.useCallback)(a=>{let b=a.trim();b&&P(a=>[b,...a.filter(a=>a!==b)].slice(0,24))},[]),a2=(0,c.useCallback)((a,b)=>{let c=b.trim();!c||"library"===a&&c.length<2||"musicbrainz"===a&&c.length<3||"youtube"===a&&c.length<2||R(b=>{let f=function(a,b){let c=b.query.trim();if(!c)return[...a];let e={source:b.source,query:c},f=d(e);return[e,...a.filter(a=>d(a)!==f)].slice(0,12)}(b,{source:a,query:c});return v.current&&e(f),f})},[]),a3=(0,c.useCallback)(()=>{R([]),e([])},[]),a4=(0,c.useCallback)(a=>{T(a),b5("muzical.compactLists",a)},[]),a5=(0,c.useCallback)(a=>{V(a),b5("muzical.autoRescanOnStartup",a)},[]),bf=(0,c.useCallback)(a=>{x.current=a,X(a),b5("muzical.logLibraryScanTiming",a)},[]),bg=(0,c.useCallback)(a=>{ar(a)},[]),bh=(0,c.useCallback)(()=>{ar(null)},[]),bi=(0,c.useCallback)(a=>{at(a)},[]),bj=(0,c.useCallback)(()=>{at(null)},[]),bk=(0,c.useCallback)(a=>{w.current=a,Z(a)},[]),bl=(0,c.useCallback)(a=>{y.current=a,_(a),b5("muzical.rememberLastQueue",a),a?aB():bP(bQ())},[aB]),bm=(0,c.useCallback)(()=>{ab(null)},[]),bn=(0,c.useCallback)((a,b)=>{A.current={activeQueueId:a,positionSec:b},aC()},[aC]),bu=(0,c.useCallback)(a=>bs(a,p.current),[]),bv=(0,c.useMemo)(()=>new Set(C),[C]),bw=(0,c.useMemo)(()=>new Set(E),[E]),bx=(0,c.useMemo)(()=>new Set(G),[G]),by=(0,c.useCallback)(a=>bv.has(a),[bv]),bz=(0,c.useCallback)(a=>bw.has(a),[bw]),bA=(0,c.useCallback)(a=>bx.has(a),[bx]),bB=(0,c.useCallback)(a=>{D(b=>b6(b,a))},[]),bC=(0,c.useCallback)(a=>{F(b=>b6(b,a))},[]),bE=(0,c.useCallback)(a=>{H(b=>b6(b,a))},[]),bF=(0,c.useCallback)(a=>{bB(a.id)},[bB]),bG=(0,c.useCallback)(a=>{D([...a.songIds]),F([...a.artistNames]),H([...a.albumKeys])},[]);(0,c.useEffect)(()=>{if(!u.current)return;let a=n.current;a&&(function(a,b){if(!a.objectStoreNames.contains(h))return Promise.reject(Error(`Missing object store ${h}`));let c={key:k,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]};return new Promise((b,d)=>{let e=a.transaction(h,"readwrite"),f=e.objectStore(h).put(c);f.onerror=()=>{d(f.error??Error("IndexedDB favorites put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{d(e.error??Error("IndexedDB favorites transaction failed"))}})})(a,{songIds:C,artistNames:E,albumKeys:G}).catch(()=>{})},[C,E,G]);let bH=(0,c.useCallback)(async a=>{try{let b=crypto.randomUUID(),c=Date.now(),d={id:b,name:a.name,addedAt:c,handle:a},e=n.current;if(!e)return void an("Library database is not ready yet.");await new Promise((a,b)=>{let c=e.transaction(g,"readwrite"),f=c.objectStore(g).put(d);f.onerror=()=>{b(f.error??Error("IndexedDB put failed"))},c.oncomplete=()=>{a()},c.onerror=()=>{b(c.error??Error("IndexedDB transaction failed"))}}),p.current.set(b,a);let f=[...q.current,{id:b,name:a.name,addedAt:c}];q.current=f,J(f),await aL(!0)}catch(a){an(function(a){if(a instanceof DOMException){if("AbortError"===a.name)return"";if("SecurityError"===a.name||"NotAllowedError"===a.name||a.message.includes("not allowed by the user agent")||a.message.includes("The request is not allowed"))return"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost."}if(a instanceof Error){let b=a.message;return b.includes("not allowed by the user agent")||b.includes("The request is not allowed")?"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost.":b}return"Could not access the folder."}(a))}},[aL]),bI=(0,c.useCallback)(()=>{},[ao,bH]),bJ=(0,c.useCallback)(async a=>{let b=n.current;if(b)try{await new Promise((c,d)=>{let e=b.transaction(g,"readwrite"),f=e.objectStore(g).delete(a);f.onerror=()=>{d(f.error??Error("IndexedDB delete failed"))},e.oncomplete=()=>{c()},e.onerror=()=>{d(e.error??Error("IndexedDB transaction failed"))}}),p.current.delete(a);let c=q.current.filter(b=>b.id!==a);q.current=c,J(c),await aL(!0)}catch(a){an(a instanceof Error?a.message:"Could not remove library folder")}},[aL]),bK=(0,c.useCallback)(async()=>{await aL(!0)},[aL]);(0,c.useEffect)(()=>{let a=!1;return(async()=>{let b=[];try{var c;let d=await new Promise((a,b)=>{let c=indexedDB.open(f,3);c.onerror=()=>{b(c.error??Error("IndexedDB open failed"))},c.onsuccess=()=>{a(c.result)},c.onupgradeneeded=()=>{let a=c.result;a.objectStoreNames.contains(g)||a.createObjectStore(g,{keyPath:"id"}),a.objectStoreNames.contains(h)||a.createObjectStore(h,{keyPath:"key"})}});if(a)return void d.close();n.current=d;try{let b=await (!d.objectStoreNames.contains(h)?Promise.resolve(m()):new Promise((a,b)=>{let c=d.transaction(h,"readonly").objectStore(h).get(k);c.onerror=()=>{b(c.error??Error("IndexedDB favorites get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===k&&Array.isArray(b.songIds)&&Array.isArray(b.artistNames)&&Array.isArray(b.albumKeys)?a({key:k,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]}):a(m())}}));a||(D(b.songIds),F(b.artistNames),H(b.albumKeys))}catch{a||(D([]),F([]),H([]))}a||(u.current=!0),navigator.storage?.persist?.();let e=await new Promise((a,b)=>{let c=d.transaction(g,"readonly").objectStore(g).getAll();c.onerror=()=>{b(c.error??Error("IndexedDB getAll failed"))},c.onsuccess=()=>{a(c.result)}});if(a)return;let i=new Map,o=[];for(let a of e)i.set(a.id,a.handle),o.push({id:a.id,name:a.name,addedAt:a.addedAt});if(a)return;p.current=i,q.current=o,J(o),b=[];let s=!1,t=[];try{let e=await (!d.objectStoreNames.contains(h)?Promise.resolve(null):new Promise((a,b)=>{let c=d.transaction(h,"readonly").objectStore(h).get(j);c.onerror=()=>{b(c.error??Error("IndexedDB catalog get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===j&&Array.isArray(b.rootIds)&&Array.isArray(b.tracks)?a(b):a(null)}}));if(!a&&e){let a=function(a){let b=[],c=new Set;for(let d of a){let a=function(a){if(!a||"object"!=typeof a||"string"!=typeof a.id||!a.id.trim()||"string"!=typeof a.title||"string"!=typeof a.artist||"string"!=typeof a.album)return null;let b="number"==typeof a.durationSec&&Number.isFinite(a.durationSec)&&a.durationSec>=0?a.durationSec:0,c="library"===a.source||"musicbrainz"===a.source||"youtube"===a.source?a.source:void 0,d="string"==typeof a.audioUrl?a.audioUrl:null===a.audioUrl?null:void 0,e="string"==typeof a.youtubeQuery?a.youtubeQuery:void 0,f="string"==typeof a.youtubeVideoId?a.youtubeVideoId:void 0,g=function(a){if(a&&"object"==typeof a&&"string"==typeof a.rootId&&"string"==typeof a.relativePath)return{rootId:a.rootId,relativePath:a.relativePath}}(a.library);return{id:a.id.trim(),title:a.title,artist:a.artist,album:a.album,durationSec:b,audioUrl:d,youtubeQuery:e,youtubeVideoId:f,source:c,library:g}}(d);!a||c.has(a.id)||(c.add(a.id),b.push(a))}return b}(e.tracks);(t=a.filter(a7),o.length>0&&(c=e.rootIds,o.length===c.length&&[...o].map(a=>a.id).sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})).every((a,b)=>a===c[b])))?(b=a,L(b),s=!0):t.length>0&&(b=t,L(t),s=!0)}}catch{}if(a)return;let v=o.length>0&&await b8(i);if(a)return;if(v&&!a){let c=await aK(!1);if(a||!c)return;let{tracks:e,firstError:f,failedRootCount:g}=c;if(0===e.length&&o.length>0&&g>0)if(s)an(null);else{b=bq(e,t),L(b);try{await l(d,o.map(a=>a.id),b)}catch{}an(f?`${f} ${b7}`:b7)}else{b=bq(e,r.current),L(b);try{await l(d,o.map(a=>a.id),b)}catch{}}}}catch(b){a||an(b instanceof Error?b.message:"Could not load library")}finally{a||(z.current||aD(b),af(!0))}})(),()=>{a=!0}},[aK,aD]);let bL=(0,c.useMemo)(()=>({roots:I,libraryTracks:K,queue:M,recentlyPlayedTrackIds:O,recentBrowseSearches:Q,compactLists:S,autoRescanOnStartup:U,logLibraryScanTiming:W,scanPreferences:Y,rememberLastQueue:$,playbackRestore:aa,playNowRequest:ac,isQueueReady:ag,isScanning:ai,youtubePrefetchActive:au,youtubePrefetchVideoCount:aw,beginYoutubePrefetch:az,endYoutubePrefetch:aA,scanError:am,hasDirectoryPicker:ao,addLibraryFolder:bI,removeLibraryFolder:bJ,rescanAll:bK,addToQueue:aS,playNow:aT,addToLibrary:aV,removeFromLibrary:aW,removeAlbumFromLibrary:aX,removeArtistFromLibrary:aY,removeAllMusicBrainzFromLibrary:aZ,removeFromQueue:a$,clearQueue:a_,recordRecentlyPlayedTrack:a1,recordRecentBrowseSearch:a2,clearRecentBrowseSearches:a3,setCompactLists:a4,setAutoRescanOnStartup:a5,setLogLibraryScanTiming:bf,setScanPreferences:bk,setRememberLastQueue:bl,consumePlaybackRestore:bm,consumePlayNowRequest:aU,reportPlayback:bn,reorderQueueItems:a0,resolveFileForTrack:bu,bumpTrackDuration:aM,patchTrackById:aN,saveTrackMetadata:aO,writeLibraryTracksToFiles:aP,patchAlbumMetadataByKey:aQ,patchArtistMetadataByKey:aR,favoriteSongIds:C,favoriteArtistNames:E,favoriteAlbumKeys:G,isFavoriteSong:by,isFavoriteArtist:bz,isFavoriteAlbum:bA,toggleFavoriteSong:bB,toggleFavoriteArtist:bC,toggleFavoriteAlbum:bE,toggleFavoriteTrack:bF,importFavorites:bG,detailsTrack:aq,openTrackDetails:bg,closeTrackDetails:bh,relatedSongsSeedTrack:as,openRelatedSongs:bi,closeRelatedSongs:bj}),[I,K,M,O,Q,S,U,W,Y,$,aa,ac,ag,ai,au,aw,az,aA,am,ao,bI,bJ,bK,aS,aT,aV,aW,aX,aY,aZ,a$,a_,a1,a2,a3,a4,a5,bf,bk,bl,bm,aU,bn,a0,bu,aM,aN,aO,aP,aQ,aR,C,E,G,by,bz,bA,bB,bC,bE,bF,bG,aq,bg,bh,as,bi,bj]);return(0,b.jsxs)(b4.Provider,{value:bL,children:[a.children,(0,b.jsx)(bt,{progress:ak,onDismiss:aI}),(0,b.jsx)(bM,{track:aq,onClose:bh}),(0,b.jsx)(bD,{seedTrack:as,onClose:bj})]})}function cb(){let a=(0,c.useContext)(b4);if(!a)throw Error("useLibrary must be used within LibraryProvider");return a}}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0b8qx~m._.js.map
|