@purpur/library 9.5.0 → 9.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +66 -0
- package/CHANGELOG.md +29 -1
- package/dist/LICENSE.txt +27 -6
- package/dist/ThemeProvider-D7oXcAde.js +2 -0
- package/dist/{ThemeProvider-Dy771oix.js.map → ThemeProvider-D7oXcAde.js.map} +1 -1
- package/dist/ThemeProvider-DiDBfyFA.mjs +348 -0
- package/dist/{ThemeProvider-CkX-BNWN.mjs.map → ThemeProvider-DiDBfyFA.mjs.map} +1 -1
- package/dist/avatar-CYnD57o4.js +2 -0
- package/dist/avatar-CYnD57o4.js.map +1 -0
- package/dist/avatar-CzbDD1MK.mjs +27 -0
- package/dist/avatar-CzbDD1MK.mjs.map +1 -0
- package/dist/avatar.cjs.js +2 -0
- package/dist/avatar.cjs.js.map +1 -0
- package/dist/avatar.es.js +5 -0
- package/dist/avatar.es.js.map +1 -0
- package/dist/carousel-BIKcwvYz.mjs +1658 -0
- package/dist/carousel-BIKcwvYz.mjs.map +1 -0
- package/dist/carousel-DnSaLDZf.js +2 -0
- package/dist/carousel-DnSaLDZf.js.map +1 -0
- package/dist/carousel.cjs.js +1 -1
- package/dist/carousel.es.js +1 -1
- package/dist/color-dot-BEE5rKco.js +2 -0
- package/dist/color-dot-BEE5rKco.js.map +1 -0
- package/dist/color-dot-Dz9yzVX3.mjs +28 -0
- package/dist/color-dot-Dz9yzVX3.mjs.map +1 -0
- package/dist/color-dot.cjs.js +1 -1
- package/dist/color-dot.es.js +4 -3
- package/dist/comparison-table-0UDB2BTU.js +2 -0
- package/dist/comparison-table-0UDB2BTU.js.map +1 -0
- package/dist/comparison-table-CjTE-fHN.mjs +292 -0
- package/dist/comparison-table-CjTE-fHN.mjs.map +1 -0
- package/dist/comparison-table.cjs.js +1 -1
- package/dist/comparison-table.es.js +1 -1
- package/dist/components/avatar/src/avatar-constants.d.ts +2 -0
- package/dist/components/avatar/src/avatar-constants.d.ts.map +1 -0
- package/dist/components/avatar/src/avatar.d.ts +26 -0
- package/dist/components/avatar/src/avatar.d.ts.map +1 -0
- package/dist/components/button/src/button.visual.fixtures.d.ts +43 -0
- package/dist/components/button/src/button.visual.fixtures.d.ts.map +1 -0
- package/dist/components/carousel/src/carousel.d.ts.map +1 -1
- package/dist/components/color-dot/src/color-dot.d.ts +18 -8
- package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
- package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts.map +1 -1
- package/dist/components/date-picker/src/date-picker.d.ts +8 -0
- package/dist/components/date-picker/src/date-picker.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-content.d.ts +21 -0
- package/dist/components/drawer/src/drawer-content.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts +14 -0
- package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts.map +1 -0
- package/dist/components/loading/src/loading-dots.d.ts +19 -0
- package/dist/components/loading/src/loading-dots.d.ts.map +1 -0
- package/dist/components/loading/src/loading-text.d.ts +21 -0
- package/dist/components/loading/src/loading-text.d.ts.map +1 -0
- package/dist/components/loading/src/loading.d.ts +10 -0
- package/dist/components/loading/src/loading.d.ts.map +1 -0
- package/dist/components/message/src/message-bubble.d.ts +22 -0
- package/dist/components/message/src/message-bubble.d.ts.map +1 -0
- package/dist/components/message/src/message-stamp.d.ts +26 -0
- package/dist/components/message/src/message-stamp.d.ts.map +1 -0
- package/dist/components/message/src/message-utils.d.ts +3 -0
- package/dist/components/message/src/message-utils.d.ts.map +1 -0
- package/dist/components/message/src/message.d.ts +42 -0
- package/dist/components/message/src/message.d.ts.map +1 -0
- package/dist/components/modal/src/modal-content.d.ts +21 -0
- package/dist/components/modal/src/modal-content.d.ts.map +1 -1
- package/dist/components/modal/src/modal.d.ts +2 -0
- package/dist/components/modal/src/modal.d.ts.map +1 -1
- package/dist/components/popover/src/popover-content.d.ts +14 -0
- package/dist/components/popover/src/popover-content.d.ts.map +1 -1
- package/dist/components/radio-card-group/src/is-radio-card-item.d.ts +4 -0
- package/dist/components/radio-card-group/src/is-radio-card-item.d.ts.map +1 -0
- package/dist/components/radio-card-group/src/radio-card-group.constants.d.ts +5 -0
- package/dist/components/radio-card-group/src/radio-card-group.constants.d.ts.map +1 -0
- package/dist/components/radio-card-group/src/radio-card-group.d.ts +5 -6
- package/dist/components/radio-card-group/src/radio-card-group.d.ts.map +1 -1
- package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -2
- package/dist/components/radio-card-group/src/radio-card-item.d.ts.map +1 -1
- package/dist/components/search-field/src/search-field-autocomplete.d.ts +6 -3
- package/dist/components/search-field/src/search-field-autocomplete.d.ts.map +1 -1
- package/dist/components/search-field/src/search-field-base.d.ts +10 -3
- package/dist/components/search-field/src/search-field-base.d.ts.map +1 -1
- package/dist/components/search-field/src/search-field-button.d.ts +3 -1
- package/dist/components/search-field/src/search-field-button.d.ts.map +1 -1
- package/dist/components/search-field/src/search-field.d.ts +12 -6
- package/dist/components/search-field/src/search-field.d.ts.map +1 -1
- package/dist/components/table/src/drag-indicator-circle.d.ts +8 -1
- package/dist/components/table/src/drag-indicator-circle.d.ts.map +1 -1
- package/dist/components/table/src/table.d.ts.map +1 -1
- package/dist/components/tooltip/src/tooltip.d.ts +21 -0
- package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
- package/dist/components-metadata.js +33 -4
- package/dist/date-picker-CIizn3Pv.js +2 -0
- package/dist/{date-picker-uyPKJulK.js.map → date-picker-CIizn3Pv.js.map} +1 -1
- package/dist/date-picker-DixxW60s.mjs +1617 -0
- package/dist/{date-picker-CzxhZxsw.mjs.map → date-picker-DixxW60s.mjs.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/drawer-BzkRd9F0.mjs +577 -0
- package/dist/drawer-BzkRd9F0.mjs.map +1 -0
- package/dist/drawer-DyhsP34o.js +2 -0
- package/dist/drawer-DyhsP34o.js.map +1 -0
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/{footer-D9AcPwlH.js → footer-3Y-664-8.js} +2 -2
- package/dist/{footer-D9AcPwlH.js.map → footer-3Y-664-8.js.map} +1 -1
- package/dist/{footer-BLPlXaZK.mjs → footer-DenAcikt.mjs} +3 -3
- package/dist/{footer-BLPlXaZK.mjs.map → footer-DenAcikt.mjs.map} +1 -1
- package/dist/footer.cjs.js +1 -1
- package/dist/footer.es.js +1 -1
- package/dist/{hero-banner-DkC_BqM7.mjs → hero-banner-B7xrDfzN.mjs} +2 -2
- package/dist/{hero-banner-DkC_BqM7.mjs.map → hero-banner-B7xrDfzN.mjs.map} +1 -1
- package/dist/{hero-banner-D1A-_qou.js → hero-banner-DthITuQ7.js} +2 -2
- package/dist/{hero-banner-D1A-_qou.js.map → hero-banner-DthITuQ7.js.map} +1 -1
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/libraries/library/src/avatar.d.ts +6 -0
- package/dist/libraries/library/src/avatar.d.ts.map +1 -0
- package/dist/libraries/library/src/library.d.ts +3 -0
- package/dist/libraries/library/src/library.d.ts.map +1 -1
- package/dist/libraries/library/src/loading.d.ts +6 -0
- package/dist/libraries/library/src/loading.d.ts.map +1 -0
- package/dist/libraries/library/src/message.d.ts +6 -0
- package/dist/libraries/library/src/message.d.ts.map +1 -0
- package/dist/libraries/theme/src/ThemeProvider.d.ts.map +1 -1
- package/dist/libraries/theme/src/theme.d.ts +1 -0
- package/dist/libraries/theme/src/theme.d.ts.map +1 -1
- package/dist/libraries/theme/src/types.d.ts +7 -0
- package/dist/libraries/theme/src/types.d.ts.map +1 -1
- package/dist/libraries/theme/src/useThemePortalContainer.d.ts +12 -0
- package/dist/libraries/theme/src/useThemePortalContainer.d.ts.map +1 -0
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +630 -623
- package/dist/library.es.js.map +1 -1
- package/dist/loading-Dwtkjstg.js +2 -0
- package/dist/loading-Dwtkjstg.js.map +1 -0
- package/dist/loading-r23nxJSz.mjs +107 -0
- package/dist/loading-r23nxJSz.mjs.map +1 -0
- package/dist/loading.cjs.js +2 -0
- package/dist/loading.cjs.js.map +1 -0
- package/dist/loading.es.js +5 -0
- package/dist/loading.es.js.map +1 -0
- package/dist/message-0yTS5pOF.js +3 -0
- package/dist/message-0yTS5pOF.js.map +1 -0
- package/dist/message-D9CDwcw9.mjs +132 -0
- package/dist/message-D9CDwcw9.mjs.map +1 -0
- package/dist/message.cjs.js +2 -0
- package/dist/message.cjs.js.map +1 -0
- package/dist/message.es.js +5 -0
- package/dist/message.es.js.map +1 -0
- package/dist/modal-DJn9idcw.js +2 -0
- package/dist/modal-DJn9idcw.js.map +1 -0
- package/dist/{modal-fp37VbrH.mjs → modal-EIP36327.mjs} +83 -80
- package/dist/modal-EIP36327.mjs.map +1 -0
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{popover-I26xNbTz.mjs → popover-DERrvReO.mjs} +328 -325
- package/dist/popover-DERrvReO.mjs.map +1 -0
- package/dist/popover-DnGgzfQr.js +2 -0
- package/dist/popover-DnGgzfQr.js.map +1 -0
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/{product-card-CoY1KggV.js → product-card-8X-Ld2d_.js} +2 -2
- package/dist/{product-card-CoY1KggV.js.map → product-card-8X-Ld2d_.js.map} +1 -1
- package/dist/{product-card-C3_N0t-R.mjs → product-card-Bt-F0wKr.mjs} +10 -10
- package/dist/{product-card-C3_N0t-R.mjs.map → product-card-Bt-F0wKr.mjs.map} +1 -1
- package/dist/product-card.cjs.js +1 -1
- package/dist/product-card.es.js +1 -1
- package/dist/{promotion-card-BiHnQvhn.mjs → promotion-card-BnzIVNQ4.mjs} +2 -2
- package/dist/{promotion-card-BiHnQvhn.mjs.map → promotion-card-BnzIVNQ4.mjs.map} +1 -1
- package/dist/{promotion-card-Bag64gqP.js → promotion-card-DKc2Cx1h.js} +2 -2
- package/dist/{promotion-card-Bag64gqP.js.map → promotion-card-DKc2Cx1h.js.map} +1 -1
- package/dist/promotion-card.cjs.js +1 -1
- package/dist/promotion-card.es.js +1 -1
- package/dist/purpur.css +1 -1
- package/dist/radio-card-group-ZBXjYcQs.mjs +166 -0
- package/dist/radio-card-group-ZBXjYcQs.mjs.map +1 -0
- package/dist/radio-card-group-nrDi5EPK.js +2 -0
- package/dist/radio-card-group-nrDi5EPK.js.map +1 -0
- package/dist/radio-card-group.cjs.js +1 -1
- package/dist/radio-card-group.es.js +3 -5
- package/dist/search-field-2vdDbiT0.js +2 -0
- package/dist/search-field-2vdDbiT0.js.map +1 -0
- package/dist/search-field-DKyNh7pE.mjs +167 -0
- package/dist/search-field-DKyNh7pE.mjs.map +1 -0
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/{stepper-CWR2vGPj.mjs → stepper-BDsSa6yr.mjs} +2 -2
- package/dist/{stepper-CWR2vGPj.mjs.map → stepper-BDsSa6yr.mjs.map} +1 -1
- package/dist/{stepper-Df4X7DDR.js → stepper-DpauItjx.js} +2 -2
- package/dist/{stepper-Df4X7DDR.js.map → stepper-DpauItjx.js.map} +1 -1
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/{table-gnGUejtb.js → table-BOCcBzSO.js} +4 -4
- package/dist/table-BOCcBzSO.js.map +1 -0
- package/dist/{table-g_n68i4s.mjs → table-i1Gs9e0e.mjs} +440 -440
- package/dist/table-i1Gs9e0e.mjs.map +1 -0
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/{text-area-peNKG7g4.js → text-area-D0truMT1.js} +2 -2
- package/dist/{text-area-peNKG7g4.js.map → text-area-D0truMT1.js.map} +1 -1
- package/dist/{text-area-kJvg6cFp.mjs → text-area-IVH-k4MM.mjs} +3 -3
- package/dist/{text-area-kJvg6cFp.mjs.map → text-area-IVH-k4MM.mjs.map} +1 -1
- package/dist/text-area.cjs.js +1 -1
- package/dist/text-area.es.js +1 -1
- package/dist/theme.cjs.js +1 -1
- package/dist/theme.es.js +8 -6
- package/dist/theme.es.js.map +1 -1
- package/dist/tooltip-CJGmJDFQ.js +2 -0
- package/dist/{tooltip-C8Zxnqdb.js.map → tooltip-CJGmJDFQ.js.map} +1 -1
- package/dist/{tooltip-LU2Cy-QC.mjs → tooltip-RA-03bKs.mjs} +277 -274
- package/dist/{tooltip-LU2Cy-QC.mjs.map → tooltip-RA-03bKs.mjs.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/dist/{useColorScheme-tAkY9LHt.mjs → useColorScheme-B9DWd-LN.mjs} +2 -2
- package/dist/{useColorScheme-tAkY9LHt.mjs.map → useColorScheme-B9DWd-LN.mjs.map} +1 -1
- package/dist/useColorScheme-DbTQjxNB.js +2 -0
- package/dist/{useColorScheme-DNyjsWX9.js.map → useColorScheme-DbTQjxNB.js.map} +1 -1
- package/dist/useThemePortalContainer-D9BYjEvT.js +2 -0
- package/dist/useThemePortalContainer-D9BYjEvT.js.map +1 -0
- package/dist/useThemePortalContainer-tFLTaYKN.mjs +9 -0
- package/dist/useThemePortalContainer-tFLTaYKN.mjs.map +1 -0
- package/package.json +27 -24
- package/src/aliases.ts +12 -0
- package/src/avatar.ts +6 -0
- package/src/entries.js +3 -0
- package/src/library.ts +5 -68
- package/src/loading.ts +6 -0
- package/src/message.ts +6 -0
- package/dist/ThemeProvider-CkX-BNWN.mjs +0 -337
- package/dist/ThemeProvider-Dy771oix.js +0 -2
- package/dist/carousel-DLkTL9sj.mjs +0 -1633
- package/dist/carousel-DLkTL9sj.mjs.map +0 -1
- package/dist/carousel-DXrtxRz5.js +0 -2
- package/dist/carousel-DXrtxRz5.js.map +0 -1
- package/dist/color-dot-6Mxngvce.mjs +0 -34
- package/dist/color-dot-6Mxngvce.mjs.map +0 -1
- package/dist/color-dot-B9w_ucWb.js +0 -2
- package/dist/color-dot-B9w_ucWb.js.map +0 -1
- package/dist/comparison-table-C74IAVqz.js +0 -2
- package/dist/comparison-table-C74IAVqz.js.map +0 -1
- package/dist/comparison-table-DctKxmX9.mjs +0 -267
- package/dist/comparison-table-DctKxmX9.mjs.map +0 -1
- package/dist/date-picker-CzxhZxsw.mjs +0 -1611
- package/dist/date-picker-uyPKJulK.js +0 -2
- package/dist/drawer-8Acg4wkV.mjs +0 -574
- package/dist/drawer-8Acg4wkV.mjs.map +0 -1
- package/dist/drawer-BLHgcEqb.js +0 -2
- package/dist/drawer-BLHgcEqb.js.map +0 -1
- package/dist/modal-Baisuc6m.js +0 -2
- package/dist/modal-Baisuc6m.js.map +0 -1
- package/dist/modal-fp37VbrH.mjs.map +0 -1
- package/dist/popover-B0XJZ5mj.js +0 -2
- package/dist/popover-B0XJZ5mj.js.map +0 -1
- package/dist/popover-I26xNbTz.mjs.map +0 -1
- package/dist/radio-card-group-CneOprGY.mjs +0 -168
- package/dist/radio-card-group-CneOprGY.mjs.map +0 -1
- package/dist/radio-card-group-Ctuvg61o.js +0 -2
- package/dist/radio-card-group-Ctuvg61o.js.map +0 -1
- package/dist/search-field-CpkHGIYi.mjs +0 -151
- package/dist/search-field-CpkHGIYi.mjs.map +0 -1
- package/dist/search-field-Z0PqDARl.js +0 -2
- package/dist/search-field-Z0PqDARl.js.map +0 -1
- package/dist/table-g_n68i4s.mjs.map +0 -1
- package/dist/table-gnGUejtb.js.map +0 -1
- package/dist/tooltip-C8Zxnqdb.js +0 -2
- package/dist/useColorScheme-DNyjsWX9.js +0 -2
- package/tokens/_dark.scss +0 -9
- package/tokens/_index.scss +0 -9
- package/tokens/border/variables.css +0 -13
- package/tokens/border/variables.d.ts +0 -10
- package/tokens/border/variables.dark.css +0 -12
- package/tokens/border/variables.dark.d.ts +0 -10
- package/tokens/border/variables.dark.js +0 -10
- package/tokens/border/variables.dark.json +0 -18
- package/tokens/border/variables.dark.scss +0 -10
- package/tokens/border/variables.js +0 -10
- package/tokens/border/variables.json +0 -18
- package/tokens/border/variables.scss +0 -10
- package/tokens/breakpoint/variables.css +0 -11
- package/tokens/breakpoint/variables.d.ts +0 -8
- package/tokens/breakpoint/variables.dark.css +0 -10
- package/tokens/breakpoint/variables.dark.d.ts +0 -8
- package/tokens/breakpoint/variables.dark.js +0 -8
- package/tokens/breakpoint/variables.dark.json +0 -14
- package/tokens/breakpoint/variables.dark.scss +0 -8
- package/tokens/breakpoint/variables.js +0 -8
- package/tokens/breakpoint/variables.json +0 -14
- package/tokens/breakpoint/variables.scss +0 -8
- package/tokens/color/variables.css +0 -262
- package/tokens/color/variables.d.ts +0 -253
- package/tokens/color/variables.dark.css +0 -262
- package/tokens/color/variables.dark.d.ts +0 -252
- package/tokens/color/variables.dark.js +0 -252
- package/tokens/color/variables.dark.json +0 -306
- package/tokens/color/variables.dark.scss +0 -252
- package/tokens/color/variables.js +0 -253
- package/tokens/color/variables.json +0 -307
- package/tokens/color/variables.scss +0 -253
- package/tokens/dark.css +0 -9
- package/tokens/dark.d.ts +0 -9
- package/tokens/dark.js +0 -9
- package/tokens/filter/variables.css +0 -4
- package/tokens/filter/variables.d.ts +0 -1
- package/tokens/filter/variables.dark.css +0 -3
- package/tokens/filter/variables.dark.d.ts +0 -1
- package/tokens/filter/variables.dark.js +0 -1
- package/tokens/filter/variables.dark.json +0 -7
- package/tokens/filter/variables.dark.scss +0 -1
- package/tokens/filter/variables.js +0 -1
- package/tokens/filter/variables.json +0 -7
- package/tokens/filter/variables.scss +0 -1
- package/tokens/gradient/variables.css +0 -53
- package/tokens/gradient/variables.d.ts +0 -9
- package/tokens/gradient/variables.dark.css +0 -51
- package/tokens/gradient/variables.dark.d.ts +0 -9
- package/tokens/gradient/variables.dark.js +0 -18
- package/tokens/gradient/variables.dark.json +0 -27
- package/tokens/gradient/variables.dark.scss +0 -36
- package/tokens/gradient/variables.js +0 -18
- package/tokens/gradient/variables.json +0 -27
- package/tokens/gradient/variables.scss +0 -42
- package/tokens/index.css +0 -18
- package/tokens/index.d.ts +0 -9
- package/tokens/index.js +0 -9
- package/tokens/motion/variables.css +0 -14
- package/tokens/motion/variables.d.ts +0 -11
- package/tokens/motion/variables.dark.css +0 -13
- package/tokens/motion/variables.dark.d.ts +0 -11
- package/tokens/motion/variables.dark.js +0 -11
- package/tokens/motion/variables.dark.json +0 -19
- package/tokens/motion/variables.dark.scss +0 -11
- package/tokens/motion/variables.js +0 -11
- package/tokens/motion/variables.json +0 -19
- package/tokens/motion/variables.scss +0 -11
- package/tokens/shadow/variables.css +0 -11
- package/tokens/shadow/variables.d.ts +0 -4
- package/tokens/shadow/variables.dark.css +0 -10
- package/tokens/shadow/variables.dark.d.ts +0 -4
- package/tokens/shadow/variables.dark.js +0 -4
- package/tokens/shadow/variables.dark.json +0 -8
- package/tokens/shadow/variables.dark.scss +0 -4
- package/tokens/shadow/variables.js +0 -4
- package/tokens/shadow/variables.json +0 -8
- package/tokens/shadow/variables.scss +0 -4
- package/tokens/spacing/variables.css +0 -26
- package/tokens/spacing/variables.d.ts +0 -23
- package/tokens/spacing/variables.dark.css +0 -17
- package/tokens/spacing/variables.dark.d.ts +0 -15
- package/tokens/spacing/variables.dark.js +0 -15
- package/tokens/spacing/variables.dark.json +0 -19
- package/tokens/spacing/variables.dark.scss +0 -15
- package/tokens/spacing/variables.js +0 -23
- package/tokens/spacing/variables.json +0 -31
- package/tokens/spacing/variables.scss +0 -23
- package/tokens/typography/variables.css +0 -30
- package/tokens/typography/variables.d.ts +0 -26
- package/tokens/typography/variables.dark.css +0 -29
- package/tokens/typography/variables.dark.d.ts +0 -26
- package/tokens/typography/variables.dark.js +0 -28
- package/tokens/typography/variables.dark.json +0 -38
- package/tokens/typography/variables.dark.scss +0 -26
- package/tokens/typography/variables.js +0 -28
- package/tokens/typography/variables.json +0 -38
- package/tokens/typography/variables.scss +0 -26
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-DLkTL9sj.mjs","sources":["../../../components/icon/dist/components/play-filled.es.js","../../../components/icon/dist/components/tv-pause.es.js","../../../common/temp/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js","../../../common/temp/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../../../common/temp/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js","../../../common/temp/node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.4/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../../../components/carousel/src/components/PageIndicator.tsx","../../../components/carousel/src/hooks/useAutoplay.ts","../../../components/carousel/src/hooks/usePageIndicators.ts","../../../components/carousel/src/hooks/usePrefersReducedMotion.ts","../../../components/carousel/src/hooks/usePrevNextButtons.ts","../../../components/carousel/src/carousel.tsx"],"sourcesContent":["import { jsx as o } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst a = {\n name: \"play-filled\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 12 5.5 19.794V4.206L19 12Z\"/><path fill-rule=\"evenodd\" d=\"M19.875 12a.875.875 0 0 1-.438.758l-13.5 7.794a.875.875 0 0 1-1.312-.758V4.206a.875.875 0 0 1 1.313-.758l13.5 7.794c.27.156.437.445.437.758Zm-13.5-6.279V18.28L17.25 12 6.375 5.721Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"play-filled\"],\n category: \"action\"\n}, d = (l) => /* @__PURE__ */ o(e, { ...l, svg: a });\nd.displayName = \"IconPlayFilled\";\nexport {\n d as IconPlayFilled\n};\n//# sourceMappingURL=play-filled.es.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as v } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"tv-pause\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 20h-3V4h3v16ZM8 20H5V4h3v16Z\"/><path fill-rule=\"evenodd\" d=\"M4.1 4a.9.9 0 0 1 .9-.9h3a.9.9 0 0 1 .9.9v16a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V4Zm1.8.9v14.2h1.2V4.9H5.9Zm9.2-.9a.9.9 0 0 1 .9-.9h3a.9.9 0 0 1 .9.9v16a.9.9 0 0 1-.9.9h-3a.9.9 0 0 1-.9-.9V4Zm1.8.9v14.2h1.2V4.9h-1.2Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"tv-pause\"],\n category: \"action\"\n}, s = (a) => /* @__PURE__ */ o(v, { ...a, svg: e });\ns.displayName = \"IconTvPause\";\nexport {\n s as IconTvPause\n};\n//# sourceMappingURL=tv-pause.es.js.map\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction normalizeDelay(emblaApi, delay) {\n const scrollSnaps = emblaApi.scrollSnapList();\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay);\n }\n return delay(scrollSnaps, emblaApi);\n}\nfunction getAutoplayRootNode(emblaApi, rootNode) {\n const emblaRootNode = emblaApi.rootNode();\n return rootNode && rootNode(emblaRootNode) || emblaRootNode;\n}\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let delay;\n let timerStartTime = null;\n let timerId = 0;\n let autoplayActive = false;\n let mouseIsOver = false;\n let playOnDocumentVisible = false;\n let jump = false;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n delay = normalizeDelay(emblaApi, options.delay);\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag;\n const root = getAutoplayRootNode(emblaApi, options.rootNode);\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown);\n }\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter);\n }\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave);\n }\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay);\n }\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay);\n }\n if (options.playOnInit) startAutoplay();\n }\n function destroy() {\n emblaApi.off('pointerDown', pointerDown).off('pointerUp', pointerUp).off('slideFocusStart', stopAutoplay);\n stopAutoplay();\n destroyed = true;\n autoplayActive = false;\n }\n function setTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()]);\n timerStartTime = new Date().getTime();\n emblaApi.emit('autoplay:timerset');\n }\n function clearTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = 0;\n timerStartTime = null;\n emblaApi.emit('autoplay:timerstopped');\n }\n function startAutoplay() {\n if (destroyed) return;\n if (documentIsHidden()) {\n playOnDocumentVisible = true;\n return;\n }\n if (!autoplayActive) emblaApi.emit('autoplay:play');\n setTimer();\n autoplayActive = true;\n }\n function stopAutoplay() {\n if (destroyed) return;\n if (autoplayActive) emblaApi.emit('autoplay:stop');\n clearTimer();\n autoplayActive = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive;\n return stopAutoplay();\n }\n if (playOnDocumentVisible) startAutoplay();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function pointerDown() {\n if (!mouseIsOver) stopAutoplay();\n }\n function pointerUp() {\n if (!mouseIsOver) startAutoplay();\n }\n function mouseEnter() {\n mouseIsOver = true;\n stopAutoplay();\n }\n function mouseLeave() {\n mouseIsOver = false;\n startAutoplay();\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n startAutoplay();\n }\n function stop() {\n if (autoplayActive) stopAutoplay();\n }\n function reset() {\n if (autoplayActive) startAutoplay();\n }\n function isPlaying() {\n return autoplayActive;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n emblaApi.emit('autoplay:select');\n if (kill) return stopAutoplay();\n startAutoplay();\n }\n function timeUntilNext() {\n if (!timerStartTime) return null;\n const currentDelay = delay[emblaApi.selectedScrollSnap()];\n const timePastSinceStart = new Date().getTime() - timerStartTime;\n return currentDelay - timePastSinceStart;\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying,\n timeUntilNext\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import React, { type ComponentPropsWithRef } from \"react\";\nimport c from \"classnames/bind\";\nimport { type AutoplayOptionsType } from \"embla-carousel-autoplay\";\n\nimport styles from \"./PageIndicator.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"carousel-page-indicator\";\n\ntype PageIndicatorProps = ComponentPropsWithRef<\"li\"> & {\n showProgress: boolean;\n index: number;\n totalIndicators: number;\n selectedIndex: number;\n delay: AutoplayOptionsType[\"delay\"];\n};\n\nconst defaultDelay = 4000;\n\nexport const PageIndicator = ({\n index,\n selectedIndex,\n totalIndicators,\n showProgress,\n delay = defaultDelay,\n}: PageIndicatorProps) => {\n const getSize = () => {\n const distanceToEdge = Math.min(index, totalIndicators - 1 - index);\n\n let offset = distanceToSelected;\n\n if (!isWithinRange) return 0;\n if (distanceToEdge === 0) return 150;\n\n if (selectedDistanceToEdge === 0) {\n if (distanceToSelected === 2) offset = 1;\n if (distanceToSelected === 3) offset = 2;\n }\n\n const calc = 1 / (2 * (offset || 0.5));\n\n if (calc < 0.25) return 50;\n if (calc < 0.5) return 100;\n\n return 150;\n };\n\n const isSelected = index === selectedIndex;\n const distanceToSelected = Math.abs(selectedIndex - index);\n const selectedDistanceToEdge = Math.min(selectedIndex, totalIndicators - 1 - selectedIndex);\n const threshhold = Math.max(5 - selectedDistanceToEdge, 3);\n const isWithinRange = distanceToSelected < threshhold;\n const size = totalIndicators < 6 ? 150 : getSize();\n\n return (\n <li\n className={cx(rootClassName)}\n data-selected={isSelected}\n data-show-progress={showProgress}\n style={{\n marginLeft: isWithinRange ? \"var(--purpur-spacing-100)\" : undefined,\n width: isSelected ? \"var(--purpur-spacing-400)\" : `var(--purpur-spacing-${size})`,\n height: `var(--purpur-spacing-${size})`,\n // @ts-expect-error TS doesn't know about CSS variables yet\n [\"--progress-time\"]: `${delay}ms`,\n }}\n />\n );\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { type EmblaCarouselType } from \"embla-carousel\";\n\nexport type UseAutoplayType = {\n isPlaying: boolean;\n toggle: () => void;\n reset: () => void;\n};\n\nexport const useAutoplay = (\n emblaApi: EmblaCarouselType | undefined,\n containerRef?: React.RefObject<Element | null>\n): UseAutoplayType => {\n const pausedByVisibility = useRef(false);\n const [autoplayIsPlaying, setAutoplayIsPlaying] = useState(false);\n const autoplay = emblaApi?.plugins()?.autoplay;\n\n const toggleAutoplay = useCallback(() => {\n if (!autoplay) return;\n\n const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play;\n playOrStop();\n }, [autoplay]);\n\n const resetAutoplay = () => {\n if (!autoplay) return;\n autoplay.reset();\n };\n\n useEffect(() => {\n if (!autoplay) return;\n\n setAutoplayIsPlaying(autoplay.isPlaying());\n\n emblaApi\n .on(\"autoplay:play\", () => setAutoplayIsPlaying(true))\n .on(\"autoplay:stop\", () => setAutoplayIsPlaying(false))\n .on(\"reInit\", () => setAutoplayIsPlaying(autoplay.isPlaying()));\n }, [autoplay, emblaApi]);\n\n useEffect(() => {\n if (!autoplay || !containerRef?.current) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry.isIntersecting) {\n if (autoplay.isPlaying()) {\n pausedByVisibility.current = true;\n autoplay.stop();\n }\n } else {\n if (pausedByVisibility.current) {\n pausedByVisibility.current = false;\n autoplay.play();\n }\n }\n },\n { threshold: 0 }\n );\n\n const el = containerRef.current;\n observer.observe(el);\n return () => observer.disconnect();\n }, [autoplay, containerRef]);\n\n return {\n isPlaying: autoplayIsPlaying,\n toggle: toggleAutoplay,\n reset: resetAutoplay,\n };\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport type { EmblaCarouselType } from \"embla-carousel\";\n\ntype UseDotButtonType = {\n selectedIndex: number;\n scrollSnaps: number[];\n onIndicatorClick: (index: number) => void;\n};\n\nexport const usePageIndicators = (emblaApi: EmblaCarouselType | undefined): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n const onIndicatorClick = useCallback(\n (index: number) => {\n if (!emblaApi) return;\n emblaApi.scrollTo(index);\n },\n [emblaApi]\n );\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList());\n }, []);\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onInit(emblaApi);\n onSelect(emblaApi);\n emblaApi.on(\"reInit\", onInit).on(\"reInit\", onSelect).on(\"select\", onSelect);\n }, [emblaApi, onInit, onSelect]);\n\n return {\n selectedIndex,\n scrollSnaps,\n onIndicatorClick,\n };\n};\n","import { useEffect, useState } from \"react\";\n\nconst REDUCED_MOTION_QUERY = \"(prefers-reduced-motion: reduce)\";\n\nconst getPrefersReducedMotion = () => {\n if (typeof window === \"undefined\") {\n return false;\n }\n\n return window.matchMedia(REDUCED_MOTION_QUERY).matches;\n};\n\nexport const usePrefersReducedMotion = () => {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(getPrefersReducedMotion);\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const mediaQueryList = window.matchMedia(REDUCED_MOTION_QUERY);\n const updatePreference = () => {\n setPrefersReducedMotion(mediaQueryList.matches);\n };\n\n updatePreference();\n\n mediaQueryList.addEventListener(\"change\", updatePreference);\n\n return () => {\n mediaQueryList.removeEventListener(\"change\", updatePreference);\n };\n }, []);\n\n return prefersReducedMotion;\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport type { EmblaCarouselType } from \"embla-carousel\";\n\nimport { type UseAutoplayType } from \"./useAutoplay\";\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean;\n nextBtnDisabled: boolean;\n onPrevButtonClick: () => void;\n onNextButtonClick: () => void;\n};\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n containerRef: React.RefObject<HTMLDivElement | null>,\n autoplay: UseAutoplayType\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true);\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return;\n emblaApi.scrollPrev();\n autoplay.reset();\n }, [emblaApi, autoplay]);\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return;\n emblaApi.scrollNext();\n autoplay.reset();\n }, [emblaApi, autoplay]);\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev());\n setNextBtnDisabled(!emblaApi.canScrollNext());\n }, []);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowLeft\":\n onPrevButtonClick();\n // @ts-expect-error - TypeScript doesn't know that the target will have previousSibling and nextSibling\n e.target?.previousSibling?.focus();\n break;\n\n case \"ArrowRight\":\n onNextButtonClick();\n // @ts-expect-error - TypeScript doesn't know that the target will have previousSibling and nextSibling\n e.target?.nextSibling?.focus();\n break;\n\n default:\n break;\n }\n },\n [onPrevButtonClick, onNextButtonClick]\n );\n\n useEffect(() => {\n const container = containerRef.current;\n\n if (!emblaApi) return;\n if (!container) return;\n\n onSelect(emblaApi);\n emblaApi.on(\"reInit\", onSelect).on(\"select\", onSelect);\n\n container.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n container.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [emblaApi, onSelect, containerRef, handleKeyDown]);\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick,\n };\n};\n","import React, { useRef } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconArrowLeft } from \"@purpur/icon/arrow-left\";\nimport { IconArrowRight } from \"@purpur/icon/arrow-right\";\nimport { IconPlayFilled } from \"@purpur/icon/play-filled\";\nimport { IconTvPause } from \"@purpur/icon/tv-pause\";\nimport c from \"classnames/bind\";\nimport { type EmblaOptionsType, type EmblaPluginType } from \"embla-carousel\";\nimport Autoplay, { type AutoplayOptionsType } from \"embla-carousel-autoplay\";\nimport useEmblaCarousel from \"embla-carousel-react\";\n\nimport styles from \"./carousel.module.scss\";\nimport { PageIndicator } from \"./components/PageIndicator\";\nimport { useAutoplay } from \"./hooks/useAutoplay\";\nimport { usePageIndicators } from \"./hooks/usePageIndicators\";\nimport { usePrefersReducedMotion } from \"./hooks/usePrefersReducedMotion\";\nimport { usePrevNextButtons } from \"./hooks/usePrevNextButtons\";\n\nconst cx = c.bind(styles);\n\ntype ExpandedEmblaOptionsType = EmblaOptionsType & { slidesToShow?: number };\n\ntype PurpurSpacingToken =\n | 0\n | 10\n | 25\n | 50\n | 100\n | 150\n | 200\n | 250\n | 300\n | 400\n | 600\n | 800\n | 1000\n | 1200\n | 1600;\n\nexport type CarouselProps = {\n className?: string;\n children: React.ReactNode;\n options: ExpandedEmblaOptionsType & {\n breakpoints?: Record<string, Partial<ExpandedEmblaOptionsType>>;\n };\n autoplay?: boolean | AutoplayOptionsType;\n /** Space between slides, in purpur spacing tokens*/\n slideSpacing?: PurpurSpacingToken;\n controllerPlacement?: \"top\" | \"bottom\" | \"hidden\";\n\n /** Hides page indicators but keeps autoplay controls if autoplay is enabled */\n hidePageIndicator?: boolean;\n /** How much of the next available slide will be visible in percent\n * Min 0% (no preview) - Max 50% (100% of next slide will be visible)\n * Recomended maximum 35%\n */\n nextSlidePreview?: number;\n\n ariaLabels: {\n nextButton: string;\n previousButton: string;\n autoplay: {\n play: string;\n pause: string;\n indicator: string;\n };\n };\n};\n\nconst rootClassName = \"purpur-carousel\";\n\nexport const Carousel = ({\n className,\n options = {},\n children,\n controllerPlacement = \"bottom\",\n ...props\n}: CarouselProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const progressNode = useRef<HTMLLIElement>(null);\n\n const autoplayOptions = typeof props.autoplay === \"boolean\" ? {} : props.autoplay ?? {};\n const classes = cx(rootClassName, className);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const emblaOptions = getEmblaOptions(\n prefersReducedMotion ? { ...options, duration: 0 } : options\n );\n\n const plugins: EmblaPluginType[] = [];\n\n if (props.autoplay) {\n plugins.push(\n Autoplay({\n ...autoplayOptions,\n jump: prefersReducedMotion,\n })\n );\n }\n\n const [emblaRef, emblaApi] = useEmblaCarousel({ align: \"start\", ...emblaOptions }, plugins);\n const autoplay = useAutoplay(emblaApi, containerRef);\n const buttons = usePrevNextButtons(emblaApi, containerRef, autoplay);\n\n const { selectedIndex, scrollSnaps } = usePageIndicators(emblaApi);\n\n const renderSlides = () => {\n return React.Children.toArray(children).map((slide) => {\n return React.Children.only(slide);\n });\n };\n\n const renderControls = () => {\n return (\n <div className={cx(`${rootClassName}__controls`)}>\n {props.hidePageIndicator !== true && (\n <>\n <ul\n className={cx(`${rootClassName}__page-indicators`)}\n data-overflowing={scrollSnaps.length > 5}\n aria-label={`${props.ariaLabels.autoplay.indicator} ${selectedIndex + 1}`}\n aria-live=\"off\"\n >\n {scrollSnaps.map((_, i, arr) => {\n return (\n <PageIndicator\n key={i}\n index={i}\n ref={progressNode}\n showProgress={autoplay.isPlaying}\n totalIndicators={arr.length}\n selectedIndex={selectedIndex}\n delay={autoplayOptions.delay}\n />\n );\n })}\n </ul>\n {props.autoplay && (\n <Button\n variant=\"text\"\n aria-label={\n autoplay.isPlaying\n ? props.ariaLabels.autoplay.pause\n : props.ariaLabels.autoplay.play\n }\n onClick={autoplay.toggle}\n iconOnly\n size=\"sm\"\n className={cx(`${rootClassName}__autoplay-pause-button`)}\n >\n {autoplay.isPlaying ? <IconTvPause size=\"xs\" /> : <IconPlayFilled size=\"xs\" />}\n </Button>\n )}\n </>\n )}\n\n <div className={cx(`${rootClassName}__buttons`)}>\n <Button\n iconOnly\n aria-label={props.ariaLabels.previousButton}\n size=\"md\"\n variant=\"secondary\"\n onClick={buttons.onPrevButtonClick}\n disabled={buttons.prevBtnDisabled}\n >\n <IconArrowLeft size=\"xs\" />\n </Button>\n <Button\n iconOnly\n aria-label={props.ariaLabels.nextButton}\n size=\"md\"\n variant=\"secondary\"\n onClick={buttons.onNextButtonClick}\n disabled={buttons.nextBtnDisabled}\n >\n <IconArrowRight size=\"xs\" />\n </Button>\n </div>\n </div>\n );\n };\n\n const previewAmount = Math.max(0, Math.min(50, props.nextSlidePreview || 0));\n\n return (\n <section\n ref={containerRef}\n className={classes}\n data-is-looping={Boolean(options?.loop)}\n style={{\n // @ts-expect-error TS doesn't know about CSS variables yet\n [\"--n\"]: emblaOptions.slidesToShow || 1,\n [\"--preview\"]: previewAmount,\n [\"--slide-spacing\"]: `var(--purpur-spacing-${props.slideSpacing || 300})`,\n }}\n >\n {controllerPlacement === \"top\" && renderControls()}\n <div className={cx(`${rootClassName}__viewport`)} ref={emblaRef}>\n <ul className={cx(`${rootClassName}__container`)}>{renderSlides()}</ul>\n </div>\n {controllerPlacement === \"bottom\" && renderControls()}\n </section>\n );\n};\n\nconst CarouselSlide = ({ children }: { children: React.ReactNode }) => {\n return <li className={cx(`${rootClassName}__slide`)}>{children}</li>;\n};\n\nCarousel.displayName = \"Carousel\";\n\nCarousel.Slide = CarouselSlide;\n\nfunction getEmblaOptions(options: ExpandedEmblaOptionsType = {}): ExpandedEmblaOptionsType {\n const emblaOptions = { ...options };\n\n if (typeof window === \"undefined\" || !options.breakpoints) {\n return emblaOptions;\n }\n\n for (const key in options.breakpoints) {\n Object.assign(emblaOptions, window.matchMedia(key).matches ? options.breakpoints[key] : {});\n }\n\n return emblaOptions;\n}\n"],"names":["a","d","l","o","e","s","v","defaultOptions","normalizeDelay","emblaApi","delay","scrollSnaps","getAutoplayRootNode","rootNode","emblaRootNode","Autoplay","userOptions","options","destroyed","timerStartTime","timerId","autoplayActive","mouseIsOver","playOnDocumentVisible","jump","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","allOptions","eventStore","ownerDocument","isDraggable","root","visibilityChange","pointerDown","pointerUp","mouseEnter","mouseLeave","stopAutoplay","startAutoplay","destroy","setTimer","ownerWindow","next","clearTimer","documentIsHidden","play","jumpOverride","stop","reset","isPlaying","index","nextIndex","lastIndex","kill","timeUntilNext","currentDelay","timePastSinceStart","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","key","valueA","valueB","sortAndMapPluginToOptions","plugins","b","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isNumber","isString","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","_","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","Alignment","align","viewSize","predefined","start","center","end","measure","EventStore","listeners","add","node","type","handler","removeListener","legacyMediaQueryList","self","clear","remove","Animations","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","direction","Limit","min","max","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","readSize","defaultCallback","entries","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","ScrollLooper","vectors","shouldLoop","loopDistance","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","event","Vector1D","initialValue","value","normalizeInput","subtract","Translate","translate","x","y","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","i","slidesInGap","gap","findSlideBounds","offset","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","style","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","on","cb","off","OptionsHandler","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","activePlugins","map","EmblaCarousel","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","scrollNext","scrollPrev","prev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","useEffect","newEmblaApi","cx","c","styles","rootClassName","defaultDelay","PageIndicator","selectedIndex","totalIndicators","showProgress","getSize","distanceToEdge","distanceToSelected","isWithinRange","selectedDistanceToEdge","calc","isSelected","threshhold","size","jsx","useAutoplay","containerRef","pausedByVisibility","autoplayIsPlaying","setAutoplayIsPlaying","autoplay","toggleAutoplay","resetAutoplay","observer","el","usePageIndicators","setSelectedIndex","setScrollSnaps","onIndicatorClick","onInit","onSelect","REDUCED_MOTION_QUERY","getPrefersReducedMotion","usePrefersReducedMotion","prefersReducedMotion","setPrefersReducedMotion","mediaQueryList","updatePreference","usePrevNextButtons","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","onPrevButtonClick","onNextButtonClick","handleKeyDown","Carousel","className","children","controllerPlacement","props","progressNode","autoplayOptions","classes","emblaOptions","getEmblaOptions","emblaRef","buttons","renderSlides","React","renderControls","jsxs","Fragment","arr","Button","IconTvPause","IconPlayFilled","IconArrowLeft","IconArrowRight","previewAmount","CarouselSlide"],"mappings":";;;;;;;AAEA,MAAMA,KAAI;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU,CAAC,aAAa;AAAA,EACxB,UAAU;AACZ,GAAGC,KAAI,CAACC,MAAsBC,gBAAAA,EAAEC,IAAG,EAAE,GAAGF,GAAG,KAAKF,IAAG;AACnDC,GAAE,cAAc;ACNhB,MAAMG,KAAI;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU,CAAC,UAAU;AAAA,EACrB,UAAU;AACZ,GAAGC,KAAI,CAACL,MAAsBG,gBAAAA,EAAEG,IAAG,EAAE,GAAGN,GAAG,KAAKI,IAAG;AACnDC,GAAE,cAAc;ACRhB,MAAME,KAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,aAAa,CAAA;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,UAAU;AACZ;AAEA,SAASC,GAAeC,GAAUC,GAAO;AACvC,QAAMC,IAAcF,EAAS,eAAc;AAC3C,SAAI,OAAOC,KAAU,WACZC,EAAY,IAAI,MAAMD,CAAK,IAE7BA,EAAMC,GAAaF,CAAQ;AACpC;AACA,SAASG,GAAoBH,GAAUI,GAAU;AAC/C,QAAMC,IAAgBL,EAAS,SAAQ;AACvC,SAAOI,KAAYA,EAASC,CAAa,KAAKA;AAChD;AAEA,SAASC,GAASC,IAAc,IAAI;AAClC,MAAIC,GACAR,GACAS,GACAR,GACAS,IAAiB,MACjBC,IAAU,GACVC,IAAiB,IACjBC,IAAc,IACdC,IAAwB,IACxBC,IAAO;AACX,WAASC,EAAKC,GAAkBC,GAAgB;AAC9C,IAAAlB,IAAWiB;AACX,UAAM;AAAA,MACJ,cAAAE;AAAA,MACA,gBAAAC;AAAA,IACN,IAAQF,GACEG,IAAcF,EAAarB,IAAgBQ,GAAS,aAAa,GACjEgB,IAAaH,EAAaE,GAAad,CAAW;AAExD,QADAC,IAAUY,EAAeE,CAAU,GAC/BtB,EAAS,iBAAiB,UAAU,EAAG;AAC3C,IAAAe,IAAOP,EAAQ,MACfC,IAAY,IACZR,IAAQF,GAAeC,GAAUQ,EAAQ,KAAK;AAC9C,UAAM;AAAA,MACJ,YAAAe;AAAA,MACA,eAAAC;AAAA,IACN,IAAQxB,EAAS,eAAc,GACrByB,IAAc,CAAC,CAACzB,EAAS,eAAc,EAAG,QAAQ,WAClD0B,IAAOvB,GAAoBH,GAAUQ,EAAQ,QAAQ;AAC3D,IAAAe,EAAW,IAAIC,GAAe,oBAAoBG,CAAgB,GAC9DF,KACFzB,EAAS,GAAG,eAAe4B,CAAW,GAEpCH,KAAe,CAACjB,EAAQ,qBAC1BR,EAAS,GAAG,aAAa6B,CAAS,GAEhCrB,EAAQ,oBACVe,EAAW,IAAIG,GAAM,cAAcI,CAAU,GAE3CtB,EAAQ,oBAAoB,CAACA,EAAQ,qBACvCe,EAAW,IAAIG,GAAM,cAAcK,CAAU,GAE3CvB,EAAQ,iBACVR,EAAS,GAAG,mBAAmBgC,CAAY,GAEzCxB,EAAQ,iBAAiB,CAACA,EAAQ,qBACpCe,EAAW,IAAIvB,EAAS,cAAa,GAAI,YAAYiC,CAAa,GAEhEzB,EAAQ,cAAYyB,EAAa;AAAA,EACvC;AACA,WAASC,IAAU;AACjB,IAAAlC,EAAS,IAAI,eAAe4B,CAAW,EAAE,IAAI,aAAaC,CAAS,EAAE,IAAI,mBAAmBG,CAAY,GACxGA,EAAY,GACZvB,IAAY,IACZG,IAAiB;AAAA,EACnB;AACA,WAASuB,IAAW;AAClB,UAAM;AAAA,MACJ,aAAAC;AAAA,IACN,IAAQpC,EAAS,eAAc;AAC3B,IAAAoC,EAAY,aAAazB,CAAO,GAChCA,IAAUyB,EAAY,WAAWC,GAAMpC,EAAMD,EAAS,mBAAkB,CAAE,CAAC,GAC3EU,KAAiB,oBAAI,KAAI,GAAG,QAAO,GACnCV,EAAS,KAAK,mBAAmB;AAAA,EACnC;AACA,WAASsC,IAAa;AACpB,UAAM;AAAA,MACJ,aAAAF;AAAA,IACN,IAAQpC,EAAS,eAAc;AAC3B,IAAAoC,EAAY,aAAazB,CAAO,GAChCA,IAAU,GACVD,IAAiB,MACjBV,EAAS,KAAK,uBAAuB;AAAA,EACvC;AACA,WAASiC,IAAgB;AACvB,QAAI,CAAAxB,GACJ;AAAA,UAAI8B,EAAgB,GAAI;AACtB,QAAAzB,IAAwB;AACxB;AAAA,MACF;AACA,MAAKF,KAAgBZ,EAAS,KAAK,eAAe,GAClDmC,EAAQ,GACRvB,IAAiB;AAAA;AAAA,EACnB;AACA,WAASoB,IAAe;AACtB,IAAIvB,MACAG,KAAgBZ,EAAS,KAAK,eAAe,GACjDsC,EAAU,GACV1B,IAAiB;AAAA,EACnB;AACA,WAASe,IAAmB;AAC1B,QAAIY,EAAgB;AAClB,aAAAzB,IAAwBF,GACjBoB,EAAY;AAErB,IAAIlB,KAAuBmB,EAAa;AAAA,EAC1C;AACA,WAASM,IAAmB;AAC1B,UAAM;AAAA,MACJ,eAAAf;AAAA,IACN,IAAQxB,EAAS,eAAc;AAC3B,WAAOwB,EAAc,oBAAoB;AAAA,EAC3C;AACA,WAASI,IAAc;AACrB,IAAKf,KAAamB,EAAY;AAAA,EAChC;AACA,WAASH,IAAY;AACnB,IAAKhB,KAAaoB,EAAa;AAAA,EACjC;AACA,WAASH,IAAa;AACpB,IAAAjB,IAAc,IACdmB,EAAY;AAAA,EACd;AACA,WAASD,IAAa;AACpB,IAAAlB,IAAc,IACdoB,EAAa;AAAA,EACf;AACA,WAASO,EAAKC,GAAc;AAC1B,IAAI,OAAOA,IAAiB,QAAa1B,IAAO0B,IAChDR,EAAa;AAAA,EACf;AACA,WAASS,IAAO;AACd,IAAI9B,KAAgBoB,EAAY;AAAA,EAClC;AACA,WAASW,IAAQ;AACf,IAAI/B,KAAgBqB,EAAa;AAAA,EACnC;AACA,WAASW,IAAY;AACnB,WAAOhC;AAAA,EACT;AACA,WAASyB,IAAO;AACd,UAAM;AAAA,MACJ,OAAAQ;AAAA,IACN,IAAQ7C,EAAS,eAAc,GACrB8C,IAAYD,EAAM,MAAK,EAAG,IAAI,CAAC,EAAE,IAAG,GACpCE,IAAY/C,EAAS,eAAc,EAAG,SAAS,GAC/CgD,IAAOxC,EAAQ,kBAAkBsC,MAAcC;AAOrD,QANI/C,EAAS,kBACXA,EAAS,WAAWe,CAAI,IAExBf,EAAS,SAAS,GAAGe,CAAI,GAE3Bf,EAAS,KAAK,iBAAiB,GAC3BgD,EAAM,QAAOhB,EAAY;AAC7B,IAAAC,EAAa;AAAA,EACf;AACA,WAASgB,IAAgB;AACvB,QAAI,CAACvC,EAAgB,QAAO;AAC5B,UAAMwC,IAAejD,EAAMD,EAAS,mBAAkB,CAAE,GAClDmD,KAAqB,oBAAI,QAAO,QAAO,IAAKzC;AAClD,WAAOwC,IAAeC;AAAA,EACxB;AAYA,SAXa;AAAA,IACX,MAAM;AAAA,IACN,SAAS5C;AAAA,IACT,MAAAS;AAAA,IACA,SAAAkB;AAAA,IACA,MAAAM;AAAA,IACA,MAAAE;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,eAAAK;AAAA,EACJ;AAEA;AACA3C,GAAS,gBAAgB;AC/LzB,SAAS8C,GAASC,GAAS;AACzB,SAAO,OAAO,UAAU,SAAS,KAAKA,CAAO,MAAM;AACrD;AACA,SAASC,GAASD,GAAS;AACzB,SAAOD,GAASC,CAAO,KAAK,MAAM,QAAQA,CAAO;AACnD;AACA,SAASE,KAAY;AACnB,SAAO,CAAC,EAAE,OAAO,SAAW,OAAe,OAAO,YAAY,OAAO,SAAS;AAChF;AACA,SAASC,GAAgBC,GAAUC,GAAU;AAC3C,QAAMC,IAAe,OAAO,KAAKF,CAAQ,GACnCG,IAAe,OAAO,KAAKF,CAAQ;AACzC,MAAIC,EAAa,WAAWC,EAAa,OAAQ,QAAO;AACxD,QAAMC,IAAe,KAAK,UAAU,OAAO,KAAKJ,EAAS,eAAe,CAAA,CAAE,CAAC,GACrEK,IAAe,KAAK,UAAU,OAAO,KAAKJ,EAAS,eAAe,CAAA,CAAE,CAAC;AAC3E,SAAIG,MAAiBC,IAAqB,KACnCH,EAAa,MAAM,CAAAI,MAAO;AAC/B,UAAMC,IAASP,EAASM,CAAG,GACrBE,IAASP,EAASK,CAAG;AAC3B,WAAI,OAAOC,KAAW,aAAmB,GAAGA,CAAM,MAAO,GAAGC,CAAM,KAC9D,CAACX,GAASU,CAAM,KAAK,CAACV,GAASW,CAAM,IAAUD,MAAWC,IACvDT,GAAgBQ,GAAQC,CAAM;AAAA,EACvC,CAAC;AACH;AACA,SAASC,GAA0BC,GAAS;AAC1C,SAAOA,EAAQ,SAAS,KAAK,CAAC5E,GAAG6E,MAAM7E,EAAE,OAAO6E,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,CAAAC,MAAUA,EAAO,OAAO;AAC/F;AACA,SAASC,GAAgBC,GAAUC,GAAU;AAC3C,MAAID,EAAS,WAAWC,EAAS,OAAQ,QAAO;AAChD,QAAMf,IAAWS,GAA0BK,CAAQ,GAC7Cb,IAAWQ,GAA0BM,CAAQ;AACnD,SAAOf,EAAS,MAAM,CAACgB,GAAS5B,MAAU;AACxC,UAAM6B,IAAUhB,EAASb,CAAK;AAC9B,WAAOW,GAAgBiB,GAASC,CAAO;AAAA,EACzC,CAAC;AACH;ACnCA,SAASC,GAAStB,GAAS;AACzB,SAAO,OAAOA,KAAY;AAC5B;AACA,SAASuB,GAASvB,GAAS;AACzB,SAAO,OAAOA,KAAY;AAC5B;AACA,SAASwB,GAAUxB,GAAS;AAC1B,SAAO,OAAOA,KAAY;AAC5B;AACA,SAASD,GAASC,GAAS;AACzB,SAAO,OAAO,UAAU,SAAS,KAAKA,CAAO,MAAM;AACrD;AACA,SAASyB,EAAQC,GAAG;AAClB,SAAO,KAAK,IAAIA,CAAC;AACnB;AACA,SAASC,GAASD,GAAG;AACnB,SAAO,KAAK,KAAKA,CAAC;AACpB;AACA,SAASE,GAAShB,GAAQD,GAAQ;AAChC,SAAOc,EAAQb,IAASD,CAAM;AAChC;AACA,SAASkB,GAAUjB,GAAQD,GAAQ;AAEjC,MADIC,MAAW,KAAKD,MAAW,KAC3Bc,EAAQb,CAAM,KAAKa,EAAQd,CAAM,EAAG,QAAO;AAC/C,QAAMmB,IAAOF,GAASH,EAAQb,CAAM,GAAGa,EAAQd,CAAM,CAAC;AACtD,SAAOc,EAAQK,IAAOlB,CAAM;AAC9B;AACA,SAASmB,GAAmBC,GAAK;AAC/B,SAAO,KAAK,MAAMA,IAAM,GAAG,IAAI;AACjC;AACA,SAASC,GAAUC,GAAO;AACxB,SAAOC,GAAWD,CAAK,EAAE,IAAI,MAAM;AACrC;AACA,SAASE,EAAUF,GAAO;AACxB,SAAOA,EAAMG,GAAeH,CAAK,CAAC;AACpC;AACA,SAASG,GAAeH,GAAO;AAC7B,SAAO,KAAK,IAAI,GAAGA,EAAM,SAAS,CAAC;AACrC;AACA,SAASI,GAAiBJ,GAAO1C,GAAO;AACtC,SAAOA,MAAU6C,GAAeH,CAAK;AACvC;AACA,SAASK,GAAgBb,GAAGc,IAAU,GAAG;AACvC,SAAO,MAAM,KAAK,MAAMd,CAAC,GAAG,CAACe,GAAG,MAAMD,IAAU,CAAC;AACnD;AACA,SAASL,GAAWO,GAAQ;AAC1B,SAAO,OAAO,KAAKA,CAAM;AAC3B;AACA,SAASC,GAAiBC,GAASC,GAAS;AAC1C,SAAO,CAACD,GAASC,CAAO,EAAE,OAAO,CAACC,GAAeC,OAC/CZ,GAAWY,CAAa,EAAE,QAAQ,CAAArC,MAAO;AACvC,UAAMC,IAASmC,EAAcpC,CAAG,GAC1BE,IAASmC,EAAcrC,CAAG,GAC1BsC,IAAajD,GAASY,CAAM,KAAKZ,GAASa,CAAM;AACtD,IAAAkC,EAAcpC,CAAG,IAAIsC,IAAaL,GAAiBhC,GAAQC,CAAM,IAAIA;AAAA,EACvE,CAAC,GACMkC,IACN,CAAA,CAAE;AACP;AACA,SAASG,GAAaC,GAAKnE,GAAa;AACtC,SAAO,OAAOA,EAAY,aAAe,OAAemE,aAAenE,EAAY;AACrF;AAEA,SAASoE,GAAUC,GAAOC,GAAU;AAClC,QAAMC,IAAa;AAAA,IACjB,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,KAAAC;AAAA,EACJ;AACE,WAASF,IAAQ;AACf,WAAO;AAAA,EACT;AACA,WAASC,EAAO9B,GAAG;AACjB,WAAO+B,EAAI/B,CAAC,IAAI;AAAA,EAClB;AACA,WAAS+B,EAAI/B,GAAG;AACd,WAAO2B,IAAW3B;AAAA,EACpB;AACA,WAASgC,EAAQhC,GAAGlC,GAAO;AACzB,WAAI+B,GAAS6B,CAAK,IAAUE,EAAWF,CAAK,EAAE1B,CAAC,IACxC0B,EAAMC,GAAU3B,GAAGlC,CAAK;AAAA,EACjC;AAIA,SAHa;AAAA,IACX,SAAAkE;AAAA,EACJ;AAEA;AAEA,SAASC,KAAa;AACpB,MAAIC,IAAY,CAAA;AAChB,WAASC,EAAIC,GAAMC,GAAMC,GAAS7G,IAAU;AAAA,IAC1C,SAAS;AAAA,EACb,GAAK;AACD,QAAI8G;AACJ,QAAI,sBAAsBH;AACxB,MAAAA,EAAK,iBAAiBC,GAAMC,GAAS7G,CAAO,GAC5C8G,IAAiB,MAAMH,EAAK,oBAAoBC,GAAMC,GAAS7G,CAAO;AAAA,SACjE;AACL,YAAM+G,IAAuBJ;AAC7B,MAAAI,EAAqB,YAAYF,CAAO,GACxCC,IAAiB,MAAMC,EAAqB,eAAeF,CAAO;AAAA,IACpE;AACA,WAAAJ,EAAU,KAAKK,CAAc,GACtBE;AAAA,EACT;AACA,WAASC,IAAQ;AACf,IAAAR,IAAYA,EAAU,OAAO,CAAAS,MAAUA,EAAM,CAAE;AAAA,EACjD;AACA,QAAMF,IAAO;AAAA,IACX,KAAAN;AAAA,IACA,OAAAO;AAAA,EACJ;AACE,SAAOD;AACT;AAEA,SAASG,GAAWnG,GAAeY,GAAawF,GAAQC,GAAQ;AAC9D,QAAMC,IAAyBd,GAAU,GACnCe,IAAgB,MAAO;AAC7B,MAAIC,IAAgB,MAChBC,IAAkB,GAClBC,IAAc;AAClB,WAASlH,IAAO;AACd,IAAA8G,EAAuB,IAAItG,GAAe,oBAAoB,MAAM;AAClE,MAAIA,EAAc,UAAQmB,EAAK;AAAA,IACjC,CAAC;AAAA,EACH;AACA,WAAST,IAAU;AACjB,IAAAQ,EAAI,GACJoF,EAAuB,MAAK;AAAA,EAC9B;AACA,WAASK,EAAQC,GAAW;AAC1B,QAAI,CAACF,EAAa;AAClB,IAAKF,MACHA,IAAgBI,GAChBR,EAAM,GACNA,EAAM;AAER,UAAMS,IAAcD,IAAYJ;AAGhC,SAFAA,IAAgBI,GAChBH,KAAmBI,GACZJ,KAAmBF;AACxB,MAAAH,EAAM,GACNK,KAAmBF;AAErB,UAAMO,IAAQL,IAAkBF;AAChC,IAAAF,EAAOS,CAAK,GACRJ,MACFA,IAAc9F,EAAY,sBAAsB+F,CAAO;AAAA,EAE3D;AACA,WAASvB,IAAQ;AACf,IAAIsB,MACJA,IAAc9F,EAAY,sBAAsB+F,CAAO;AAAA,EACzD;AACA,WAASzF,IAAO;AACd,IAAAN,EAAY,qBAAqB8F,CAAW,GAC5CF,IAAgB,MAChBC,IAAkB,GAClBC,IAAc;AAAA,EAChB;AACA,WAASvF,IAAQ;AACf,IAAAqF,IAAgB,MAChBC,IAAkB;AAAA,EACpB;AASA,SARa;AAAA,IACX,MAAAjH;AAAA,IACA,SAAAkB;AAAA,IACA,OAAA0E;AAAA,IACA,MAAAlE;AAAA,IACA,QAAAkF;AAAA,IACA,QAAAC;AAAA,EACJ;AAEA;AAEA,SAASU,GAAKC,GAAMC,GAAkB;AACpC,QAAMC,IAAgBD,MAAqB,OACrCE,IAAaH,MAAS,KACtBI,IAASD,IAAa,MAAM,KAC5BE,IAAQF,IAAa,MAAM,KAC3BG,IAAO,CAACH,KAAcD,IAAgB,KAAK,GAC3CK,IAAYC,EAAY,GACxBC,IAAUC,EAAU;AAC1B,WAASC,EAAYC,GAAU;AAC7B,UAAM;AAAA,MACJ,QAAAC;AAAA,MACA,OAAAC;AAAA,IACN,IAAQF;AACJ,WAAOT,IAAaU,IAASC;AAAA,EAC/B;AACA,WAASN,IAAe;AACtB,WAAIL,IAAmB,QAChBD,IAAgB,UAAU;AAAA,EACnC;AACA,WAASQ,IAAa;AACpB,WAAIP,IAAmB,WAChBD,IAAgB,SAAS;AAAA,EAClC;AACA,WAASa,EAAUxE,GAAG;AACpB,WAAOA,IAAI+D;AAAA,EACb;AASA,SARa;AAAA,IACX,QAAAF;AAAA,IACA,OAAAC;AAAA,IACA,WAAAE;AAAA,IACA,SAAAE;AAAA,IACA,aAAAE;AAAA,IACA,WAAAI;AAAA,EACJ;AAEA;AAEA,SAASC,GAAMC,IAAM,GAAGC,IAAM,GAAG;AAC/B,QAAMC,IAAS7E,EAAQ2E,IAAMC,CAAG;AAChC,WAASE,EAAW7E,GAAG;AACrB,WAAOA,IAAI0E;AAAA,EACb;AACA,WAASI,EAAW9E,GAAG;AACrB,WAAOA,IAAI2E;AAAA,EACb;AACA,WAASI,EAAW/E,GAAG;AACrB,WAAO6E,EAAW7E,CAAC,KAAK8E,EAAW9E,CAAC;AAAA,EACtC;AACA,WAASgF,EAAUhF,GAAG;AACpB,WAAK+E,EAAW/E,CAAC,IACV6E,EAAW7E,CAAC,IAAI0E,IAAMC,IADF3E;AAAA,EAE7B;AACA,WAASiF,EAAajF,GAAG;AACvB,WAAK4E,IACE5E,IAAI4E,IAAS,KAAK,MAAM5E,IAAI2E,KAAOC,CAAM,IAD5B5E;AAAA,EAEtB;AAWA,SAVa;AAAA,IACX,QAAA4E;AAAA,IACA,KAAAD;AAAA,IACA,KAAAD;AAAA,IACA,WAAAM;AAAA,IACA,YAAAD;AAAA,IACA,YAAAD;AAAA,IACA,YAAAD;AAAA,IACA,cAAAI;AAAA,EACJ;AAEA;AAEA,SAASC,GAAQP,GAAK9C,GAAOsD,GAAM;AACjC,QAAM;AAAA,IACJ,WAAAH;AAAA,EACJ,IAAMP,GAAM,GAAGE,CAAG,GACVS,IAAUT,IAAM;AACtB,MAAIU,IAAUC,EAAYzD,CAAK;AAC/B,WAASyD,EAAYtF,GAAG;AACtB,WAAQmF,IAAsBpF,GAASqF,IAAUpF,KAAKoF,CAAO,IAA9CJ,EAAUhF,CAAC;AAAA,EAC5B;AACA,WAASuF,IAAM;AACb,WAAOF;AAAA,EACT;AACA,WAASG,EAAIxF,GAAG;AACd,WAAAqF,IAAUC,EAAYtF,CAAC,GAChByC;AAAA,EACT;AACA,WAASN,EAAInC,GAAG;AACd,WAAOyF,EAAK,EAAG,IAAIF,EAAG,IAAKvF,CAAC;AAAA,EAC9B;AACA,WAASyF,IAAQ;AACf,WAAOP,GAAQP,GAAKY,EAAG,GAAIJ,CAAI;AAAA,EACjC;AACA,QAAM1C,IAAO;AAAA,IACX,KAAA8C;AAAA,IACA,KAAAC;AAAA,IACA,KAAArD;AAAA,IACA,OAAAsD;AAAA,EACJ;AACE,SAAOhD;AACT;AAEA,SAASiD,GAAYjC,GAAMpI,GAAUoB,GAAeY,GAAasI,GAAQC,GAAaC,GAAUC,GAAWC,GAAUC,GAAYC,GAAcnI,GAAOoI,GAAcC,GAAeC,GAAUC,GAAeC,GAAWC,GAAcC,GAAW;AAC9O,QAAM;AAAA,IACJ,OAAOC;AAAA,IACP,WAAAjC;AAAA,EACJ,IAAMf,GACEiD,IAAa,CAAC,SAAS,UAAU,UAAU,GAC3CC,IAAkB;AAAA,IACtB,SAAS;AAAA,EACb,GACQC,IAAa3E,GAAU,GACvB4E,IAAa5E,GAAU,GACvB6E,IAAoBrC,GAAM,IAAI,GAAG,EAAE,UAAU0B,EAAc,QAAQ,EAAE,CAAC,GACtEY,IAAiB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,EACX,GACQC,IAAiB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,EACX,GACQC,IAAYb,IAAW,KAAK;AAClC,MAAIc,IAAW,IACXC,IAAc,GACdC,IAAa,GACbC,IAAgB,IAChBC,IAAgB,IAChBC,IAAe,IACfC,IAAU;AACd,WAASvL,EAAKhB,GAAU;AACtB,QAAI,CAACuL,EAAW;AAChB,aAASiB,EAAcjG,GAAK;AAC1B,OAAI1B,GAAU0G,CAAS,KAAKA,EAAUvL,GAAUuG,CAAG,MAAGkG,GAAKlG,CAAG;AAAA,IAChE;AACA,UAAMY,IAAO/G;AACb,IAAAuL,EAAW,IAAIxE,GAAM,aAAa,CAAAZ,MAAOA,EAAI,eAAc,GAAImF,CAAe,EAAE,IAAIvE,GAAM,aAAa,MAAA;AAAA,OAAiBuE,CAAe,EAAE,IAAIvE,GAAM,YAAY;KAAe,EAAE,IAAIA,GAAM,cAAcqF,CAAa,EAAE,IAAIrF,GAAM,aAAaqF,CAAa,EAAE,IAAIrF,GAAM,eAAeuF,CAAE,EAAE,IAAIvF,GAAM,eAAeuF,CAAE,EAAE,IAAIvF,GAAM,SAASwF,GAAO,EAAI;AAAA,EACvV;AACA,WAASzK,IAAU;AACjB,IAAAyJ,EAAW,MAAK,GAChBC,EAAW,MAAK;AAAA,EAClB;AACA,WAASgB,IAAgB;AACvB,UAAMzF,IAAOoF,IAAU/K,IAAgBpB;AACvC,IAAAwL,EAAW,IAAIzE,GAAM,aAAa0F,GAAMnB,CAAe,EAAE,IAAIvE,GAAM,YAAYuF,CAAE,EAAE,IAAIvF,GAAM,aAAa0F,GAAMnB,CAAe,EAAE,IAAIvE,GAAM,WAAWuF,CAAE;AAAA,EAC1J;AACA,WAASI,EAAY3F,GAAM;AACzB,UAAM4F,IAAW5F,EAAK,YAAY;AAClC,WAAOsE,EAAW,SAASsB,CAAQ;AAAA,EACrC;AACA,WAASC,IAAa;AAGpB,YAFc7B,IAAWY,IAAiBD,GAC7BS,IAAU,UAAU,OAChB;AAAA,EACnB;AACA,WAASU,GAAaC,GAAOC,GAAe;AAC1C,UAAM9K,IAAOQ,EAAM,IAAImC,GAASkI,CAAK,IAAI,EAAE,GACrCE,IAAYpC,EAAa,WAAWkC,GAAO,CAAC/B,CAAQ,EAAE;AAC5D,WAAIA,KAAYrG,EAAQoI,CAAK,IAAIrB,IAA0BuB,IACvD/B,KAAa8B,IAAsBC,IAAY,MAC5CpC,EAAa,QAAQ3I,EAAK,IAAG,GAAI,CAAC,EAAE;AAAA,EAC7C;AACA,WAASoK,GAAKlG,GAAK;AACjB,UAAM8G,IAAa/G,GAAaC,GAAKnE,CAAW;AAIhD,IAHAmK,IAAUc,GACVf,IAAenB,KAAYkC,KAAc,CAAC9G,EAAI,WAAW0F,GACzDA,IAAWhH,GAASyF,EAAO,IAAG,GAAIE,EAAS,IAAG,CAAE,KAAK,GACjD,EAAAyC,KAAc9G,EAAI,WAAW,OAC7BuG,EAAYvG,EAAI,MAAM,MAC1B6F,IAAgB,IAChBzB,EAAY,YAAYpE,CAAG,GAC3BwE,EAAW,YAAY,CAAC,EAAE,YAAY,CAAC,GACvCL,EAAO,IAAIE,CAAQ,GACnBgC,EAAa,GACbV,IAAcvB,EAAY,UAAUpE,CAAG,GACvC4F,IAAaxB,EAAY,UAAUpE,GAAKiF,CAAS,GACjDP,EAAa,KAAK,aAAa;AAAA,EACjC;AACA,WAAS4B,EAAKtG,GAAK;AAEjB,QADmB,CAACD,GAAaC,GAAKnE,CAAW,KAC/BmE,EAAI,QAAQ,UAAU,EAAG,QAAOmG,EAAGnG,CAAG;AACxD,UAAM+G,IAAa3C,EAAY,UAAUpE,CAAG,GACtCgH,IAAY5C,EAAY,UAAUpE,GAAKiF,CAAS,GAChDgC,IAAavI,GAASqI,GAAYpB,CAAW,GAC7CuB,KAAYxI,GAASsI,GAAWpB,CAAU;AAChD,QAAI,CAACE,KAAiB,CAACE,MACjB,CAAChG,EAAI,eACT8F,IAAgBmB,IAAaC,IACzB,CAACpB;AAAe,aAAOK,EAAGnG,CAAG;AAEnC,UAAMpB,KAAOwF,EAAY,YAAYpE,CAAG;AACxC,IAAIiH,IAAapC,MAAekB,IAAe,KAC/CvB,EAAW,YAAY,GAAG,EAAE,YAAY,IAAI,GAC5CF,EAAU,MAAK,GACfH,EAAO,IAAInB,EAAUpE,EAAI,CAAC,GAC1BoB,EAAI,eAAc;AAAA,EACpB;AACA,WAASmG,EAAGnG,GAAK;AAEf,UAAM4G,IADkBnC,EAAa,WAAW,GAAG,EAAK,EAClB,UAAUnI,EAAM,IAAG,GACnD6K,IAAW/C,EAAY,UAAUpE,CAAG,IAAIyG,EAAU,GAClDE,IAAQD,GAAa1D,EAAUmE,CAAQ,GAAGP,CAAa,GACvDQ,KAAczI,GAAUwI,GAAUR,CAAK,GACvCU,KAAQ5B,IAAY,KAAK2B,IACzBE,KAAWvC,IAAeqC,KAAc;AAC9C,IAAAtB,IAAgB,IAChBD,IAAgB,IAChBR,EAAW,MAAK,GAChBb,EAAW,YAAY6C,EAAK,EAAE,YAAYC,EAAQ,GAClD/C,EAAS,SAASoC,GAAO,CAAC/B,CAAQ,GAClCoB,IAAU,IACVtB,EAAa,KAAK,WAAW;AAAA,EAC/B;AACA,WAAS0B,EAAMpG,GAAK;AAClB,IAAI+F,MACF/F,EAAI,gBAAe,GACnBA,EAAI,eAAc,GAClB+F,IAAe;AAAA,EAEnB;AACA,WAAS1K,IAAc;AACrB,WAAOwK;AAAA,EACT;AAMA,SALa;AAAA,IACX,MAAApL;AAAA,IACA,SAAAkB;AAAA,IACA,aAAAN;AAAA,EACJ;AAEA;AAEA,SAASkM,GAAYtF,GAAMpG,GAAa;AAEtC,MAAI2L,GACAC;AACJ,WAASC,EAAS1H,GAAK;AACrB,WAAOA,EAAI;AAAA,EACb;AACA,WAAS2H,EAAU3H,GAAK4H,GAAS;AAE/B,UAAMC,IAAQ,UADGD,KAAW3F,EAAK,YACG,MAAM,MAAM,GAAG;AACnD,YAAQlC,GAAaC,GAAKnE,CAAW,IAAImE,IAAMA,EAAI,QAAQ,CAAC,GAAG6H,CAAK;AAAA,EACtE;AACA,WAASxM,EAAY2E,GAAK;AACxB,WAAAwH,IAAaxH,GACbyH,IAAYzH,GACL2H,EAAU3H,CAAG;AAAA,EACtB;AACA,WAAS8H,EAAY9H,GAAK;AACxB,UAAMpB,IAAO+I,EAAU3H,CAAG,IAAI2H,EAAUF,CAAS,GAC3CM,IAAUL,EAAS1H,CAAG,IAAI0H,EAASF,CAAU,IAAI;AACvD,WAAAC,IAAYzH,GACR+H,MAASP,IAAaxH,IACnBpB;AAAA,EACT;AACA,WAAStD,EAAU0E,GAAK;AACtB,QAAI,CAACwH,KAAc,CAACC,EAAW,QAAO;AACtC,UAAMO,IAAWL,EAAUF,CAAS,IAAIE,EAAUH,CAAU,GACtDS,IAAWP,EAAS1H,CAAG,IAAI0H,EAASF,CAAU,GAC9CO,IAAUL,EAAS1H,CAAG,IAAI0H,EAASD,CAAS,IAAI,KAChDd,IAAQqB,IAAWC;AAEzB,WADgBA,KAAY,CAACF,KAAWxJ,EAAQoI,CAAK,IAAI,MACxCA,IAAQ;AAAA,EAC3B;AAOA,SANa;AAAA,IACX,aAAAtL;AAAA,IACA,aAAAyM;AAAA,IACA,WAAAxM;AAAA,IACA,WAAAqM;AAAA,EACJ;AAEA;AAEA,SAASO,KAAY;AACnB,WAAS1H,EAAQI,GAAM;AACrB,UAAM;AAAA,MACJ,WAAAuH;AAAA,MACA,YAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,IACN,IAAQ1H;AASJ,WARe;AAAA,MACb,KAAKuH;AAAA,MACL,OAAOC,IAAaC;AAAA,MACpB,QAAQF,IAAYG;AAAA,MACpB,MAAMF;AAAA,MACN,OAAOC;AAAA,MACP,QAAQC;AAAA,IACd;AAAA,EAEE;AAIA,SAHa;AAAA,IACX,SAAA9H;AAAA,EACJ;AAEA;AAEA,SAAS+H,GAAcpI,GAAU;AAC/B,WAASK,EAAQhC,GAAG;AAClB,WAAO2B,KAAY3B,IAAI;AAAA,EACzB;AAIA,SAHa;AAAA,IACX,SAAAgC;AAAA,EACJ;AAEA;AAEA,SAASgI,GAAcC,GAAW/D,GAAc7I,GAAa6M,GAAQzG,GAAM0G,GAAaC,GAAW;AACjG,QAAMC,IAAe,CAACJ,CAAS,EAAE,OAAOC,CAAM;AAC9C,MAAII,GACAC,GACAC,IAAa,CAAA,GACb9O,IAAY;AAChB,WAAS+O,EAASrI,GAAM;AACtB,WAAOqB,EAAK,YAAY2G,EAAU,QAAQhI,CAAI,CAAC;AAAA,EACjD;AACA,WAASnG,EAAKhB,GAAU;AACtB,QAAI,CAACkP,EAAa;AAClB,IAAAI,IAAgBE,EAASR,CAAS,GAClCO,IAAaN,EAAO,IAAIO,CAAQ;AAChC,aAASC,EAAgBC,GAAS;AAChC,iBAAWC,KAASD,GAAS;AAC3B,YAAIjP,EAAW;AACf,cAAMmP,IAAcD,EAAM,WAAWX,GAC/Ba,IAAaZ,EAAO,QAAQU,EAAM,MAAM,GACxCG,IAAWF,IAAcN,IAAgBC,EAAWM,CAAU,GAC9DE,IAAUP,EAASI,IAAcZ,IAAYC,EAAOY,CAAU,CAAC;AAErE,YADiB/K,EAAQiL,IAAUD,CAAQ,KAC3B,KAAK;AACnB,UAAA9P,EAAS,OAAM,GACfiL,EAAa,KAAK,QAAQ;AAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,IAAAoE,IAAiB,IAAI,eAAe,CAAAK,MAAW;AAC7C,OAAI7K,GAAUqK,CAAW,KAAKA,EAAYlP,GAAU0P,CAAO,MACzDD,EAAgBC,CAAO;AAAA,IAE3B,CAAC,GACDtN,EAAY,sBAAsB,MAAM;AACtC,MAAAgN,EAAa,QAAQ,CAAAjI,MAAQkI,EAAe,QAAQlI,CAAI,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AACA,WAASjF,IAAU;AACjB,IAAAzB,IAAY,IACR4O,KAAgBA,EAAe,WAAU;AAAA,EAC/C;AAKA,SAJa;AAAA,IACX,MAAArO;AAAA,IACA,SAAAkB;AAAA,EACJ;AAEA;AAEA,SAAS8N,GAAWpF,GAAUqF,GAAgBC,GAAkBxF,GAAQyF,GAAc7E,GAAc;AAClG,MAAI8E,IAAiB,GACjBC,IAAkB,GAClBC,IAAiBH,GACjBI,IAAiBjF,GACjBkF,IAAc5F,EAAS,IAAG,GAC1B6F,IAAsB;AAC1B,WAASC,IAAO;AACd,UAAMC,IAAejG,EAAO,IAAG,IAAKE,EAAS,IAAG,GAC1CgG,IAAY,CAACN;AACnB,QAAIO,IAAiB;AACrB,WAAID,KACFR,IAAiB,GACjBF,EAAiB,IAAIxF,CAAM,GAC3BE,EAAS,IAAIF,CAAM,GACnBmG,IAAiBF,MAEjBT,EAAiB,IAAItF,CAAQ,GAC7BwF,KAAkBO,IAAeL,GACjCF,KAAkBG,GAClBC,KAAeJ,GACfxF,EAAS,IAAIwF,CAAc,GAC3BS,IAAiBL,IAAcC,IAEjCJ,IAAkBrL,GAAS6L,CAAc,GACzCJ,IAAsBD,GACfhJ;AAAA,EACT;AACA,WAASsJ,IAAU;AACjB,UAAM3L,IAAOuF,EAAO,IAAG,IAAKuF,EAAe,IAAG;AAC9C,WAAOnL,EAAQK,CAAI,IAAI;AAAA,EACzB;AACA,WAAS4L,IAAW;AAClB,WAAOT;AAAA,EACT;AACA,WAAS/G,IAAY;AACnB,WAAO8G;AAAA,EACT;AACA,WAASW,IAAW;AAClB,WAAOZ;AAAA,EACT;AACA,WAASa,IAAkB;AACzB,WAAOC,EAAYf,CAAY;AAAA,EACjC;AACA,WAASgB,IAAkB;AACzB,WAAOC,EAAY9F,CAAY;AAAA,EACjC;AACA,WAAS4F,EAAYnM,GAAG;AACtB,WAAAuL,IAAiBvL,GACVyC;AAAA,EACT;AACA,WAAS4J,EAAYrM,GAAG;AACtB,WAAAwL,IAAiBxL,GACVyC;AAAA,EACT;AACA,QAAMA,IAAO;AAAA,IACX,WAAA+B;AAAA,IACA,UAAAwH;AAAA,IACA,UAAAC;AAAA,IACA,MAAAN;AAAA,IACA,SAAAI;AAAA,IACA,iBAAAK;AAAA,IACA,iBAAAF;AAAA,IACA,aAAAG;AAAA,IACA,aAAAF;AAAA,EACJ;AACE,SAAO1J;AACT;AAEA,SAAS6J,GAAaC,GAAO1G,GAAUF,GAAQK,GAAYG,GAAe;AACxE,QAAMqG,IAAoBrG,EAAc,QAAQ,EAAE,GAC5CsG,IAAsBtG,EAAc,QAAQ,EAAE,GAC9CuG,IAAgBjI,GAAM,KAAK,IAAI;AACrC,MAAIkI,IAAW;AACf,WAASC,IAAkB;AAGzB,WAFI,EAAAD,KACA,CAACJ,EAAM,WAAW5G,EAAO,IAAG,CAAE,KAC9B,CAAC4G,EAAM,WAAW1G,EAAS,IAAG,CAAE;AAAA,EAEtC;AACA,WAASb,EAAUnI,GAAa;AAC9B,QAAI,CAAC+P,EAAe,EAAI;AACxB,UAAMC,IAAON,EAAM,WAAW1G,EAAS,IAAG,CAAE,IAAI,QAAQ,OAClDiH,IAAa/M,EAAQwM,EAAMM,CAAI,IAAIhH,EAAS,KAAK,GACjDkH,IAAepH,EAAO,IAAG,IAAKE,EAAS,IAAG,GAC1CiD,IAAW4D,EAAc,UAAUI,IAAaL,CAAmB;AACzE,IAAA9G,EAAO,SAASoH,IAAejE,CAAQ,GACnC,CAACjM,KAAekD,EAAQgN,CAAY,IAAIP,MAC1C7G,EAAO,IAAI4G,EAAM,UAAU5G,EAAO,IAAG,CAAE,CAAC,GACxCK,EAAW,YAAY,EAAE,EAAE,gBAAe;AAAA,EAE9C;AACA,WAASgH,EAAaC,GAAQ;AAC5B,IAAAN,IAAW,CAACM;AAAA,EACd;AAMA,SALa;AAAA,IACX,iBAAAL;AAAA,IACA,WAAA5H;AAAA,IACA,cAAAgI;AAAA,EACJ;AAEA;AAEA,SAASE,GAAcvL,GAAUwL,GAAaC,GAAcC,GAAeC,GAAgB;AACzF,QAAMC,IAAe9I,GAAM,CAAC0I,IAAcxL,GAAU,CAAC,GAC/C6L,IAAeC,EAAc,GAC7BC,IAAqBC,EAAsB,GAC3CC,IAAiBC,EAAgB;AACvC,WAASC,EAAkBC,GAAOC,GAAM;AACtC,WAAO9N,GAAS6N,GAAOC,CAAI,KAAK;AAAA,EAClC;AACA,WAASL,IAAyB;AAChC,UAAMM,IAAYT,EAAa,CAAC,GAC1BU,IAAUxN,EAAU8M,CAAY,GAChC9I,IAAM8I,EAAa,YAAYS,CAAS,GACxCtJ,IAAM6I,EAAa,QAAQU,CAAO,IAAI;AAC5C,WAAOzJ,GAAMC,GAAKC,CAAG;AAAA,EACvB;AACA,WAAS8I,IAAiB;AACxB,WAAOL,EAAa,IAAI,CAACe,GAAarQ,MAAU;AAC9C,YAAM;AAAA,QACJ,KAAA4G;AAAA,QACA,KAAAC;AAAA,MACR,IAAU4I,GACES,IAAOT,EAAa,UAAUY,CAAW,GACzCC,IAAU,CAACtQ,GACXuQ,IAASzN,GAAiBwM,GAActP,CAAK;AACnD,aAAIsQ,IAAgBzJ,IAChB0J,KACAP,EAAkBpJ,GAAKsJ,CAAI,IAAUtJ,IACrCoJ,EAAkBnJ,GAAKqJ,CAAI,IAAUrJ,IAClCqJ;AAAA,IACT,CAAC,EAAE,IAAI,CAAAM,MAAe,WAAWA,EAAY,QAAQ,CAAC,CAAC,CAAC;AAAA,EAC1D;AACA,WAAST,IAAmB;AAC1B,QAAIV,KAAexL,IAAW2L,EAAgB,QAAO,CAACC,EAAa,GAAG;AACtE,QAAIF,MAAkB,YAAa,QAAOG;AAC1C,UAAM;AAAA,MACJ,KAAA9I;AAAA,MACA,KAAAC;AAAA,IACN,IAAQ+I;AACJ,WAAOF,EAAa,MAAM9I,GAAKC,CAAG;AAAA,EACpC;AAKA,SAJa;AAAA,IACX,gBAAAiJ;AAAA,IACA,oBAAAF;AAAA,EACJ;AAEA;AAEA,SAASa,GAAYpB,GAAahS,GAAagK,GAAM;AACnD,QAAMR,IAAMxJ,EAAY,CAAC,GACnBuJ,IAAMS,IAAOR,IAAMwI,IAAczM,EAAUvF,CAAW;AAK5D,SAHa;AAAA,IACX,OAFYsJ,GAAMC,GAAKC,CAAG;AAAA,EAG9B;AAEA;AAEA,SAAS6J,GAAarB,GAAaZ,GAAO1G,GAAU4I,GAAS;AAE3D,QAAM/J,IAAM6H,EAAM,MAAM,KAClB5H,IAAM4H,EAAM,MAAM,KAClB;AAAA,IACJ,YAAA1H;AAAA,IACA,YAAAC;AAAA,EACJ,IAAML,GAAMC,GAAKC,CAAG;AAClB,WAAS+J,EAAWlK,GAAW;AAC7B,WAAIA,MAAc,IAAUM,EAAWe,EAAS,IAAG,CAAE,IACjDrB,MAAc,KAAWK,EAAWgB,EAAS,IAAG,CAAE,IAC/C;AAAA,EACT;AACA,WAASV,EAAKX,GAAW;AACvB,QAAI,CAACkK,EAAWlK,CAAS,EAAG;AAC5B,UAAMmK,IAAexB,KAAe3I,IAAY;AAChD,IAAAiK,EAAQ,QAAQ,CAAA3T,MAAKA,EAAE,IAAI6T,CAAY,CAAC;AAAA,EAC1C;AAIA,SAHa;AAAA,IACX,MAAAxJ;AAAA,EACJ;AAEA;AAEA,SAASyJ,GAAerC,GAAO;AAC7B,QAAM;AAAA,IACJ,KAAA5H;AAAA,IACA,QAAAC;AAAA,EACJ,IAAM2H;AACJ,WAAShH,EAAIvF,GAAG;AACd,UAAM6O,IAAkB7O,IAAI2E;AAC5B,WAAOC,IAASiK,IAAkB,CAACjK,IAAS;AAAA,EAC9C;AAIA,SAHa;AAAA,IACX,KAAAW;AAAA,EACJ;AAEA;AAEA,SAASuJ,GAAYrL,GAAMsL,GAAWC,GAAeC,GAAYC,GAAgB;AAC/E,QAAM;AAAA,IACJ,WAAAlL;AAAA,IACA,SAAAE;AAAA,EACJ,IAAMT,GACE;AAAA,IACJ,aAAA0L;AAAA,EACJ,IAAMD,GACEE,IAAaC,EAAY,EAAG,IAAIN,EAAU,OAAO,GACjDO,IAAQC,EAAgB,GACxBnC,IAAeoC,EAAc;AACnC,WAASH,IAAe;AACtB,WAAOF,EAAYF,CAAU,EAAE,IAAI,CAAAQ,MAAS/O,EAAU+O,CAAK,EAAEvL,CAAO,IAAIuL,EAAM,CAAC,EAAEzL,CAAS,CAAC,EAAE,IAAIjE,CAAO;AAAA,EAC1G;AACA,WAASwP,IAAmB;AAC1B,WAAON,EAAW,IAAI,CAAAS,MAAQV,EAAchL,CAAS,IAAI0L,EAAK1L,CAAS,CAAC,EAAE,IAAI,CAAAgK,MAAQ,CAACjO,EAAQiO,CAAI,CAAC;AAAA,EACtG;AACA,WAASwB,IAAiB;AACxB,WAAOL,EAAYG,CAAK,EAAE,IAAI,CAAAK,MAAKA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC3B,GAAMlQ,MAAUkQ,IAAOoB,EAAWtR,CAAK,CAAC;AAAA,EACxF;AAKA,SAJa;AAAA,IACX,OAAAwR;AAAA,IACA,cAAAlC;AAAA,EACJ;AAEA;AAEA,SAASwC,GAAcC,GAAcxC,GAAelS,GAAauS,GAAoBwB,GAAgBY,GAAc;AACjH,QAAM;AAAA,IACJ,aAAAX;AAAA,EACJ,IAAMD,GACE;AAAA,IACJ,KAAAxK;AAAA,IACA,KAAAC;AAAA,EACJ,IAAM+I,GACEqC,IAAgBC,EAAmB;AACzC,WAASA,IAAsB;AAC7B,UAAMC,IAAsBd,EAAYW,CAAY,GAC9CI,IAAe,CAACL,KAAgBxC,MAAkB;AACxD,WAAIlS,EAAY,WAAW,IAAU,CAAC2U,CAAY,IAC9CI,IAAqBD,IAClBA,EAAoB,MAAMvL,GAAKC,CAAG,EAAE,IAAI,CAACwL,GAAOrS,GAAOsS,MAAW;AACvE,YAAMhC,IAAU,CAACtQ,GACXuQ,IAASzN,GAAiBwP,GAAQtS,CAAK;AAC7C,UAAIsQ,GAAS;AACX,cAAMiC,IAAQ3P,EAAU0P,EAAO,CAAC,CAAC,IAAI;AACrC,eAAOvP,GAAgBwP,CAAK;AAAA,MAC9B;AACA,UAAIhC,GAAQ;AACV,cAAMgC,IAAQ1P,GAAemP,CAAY,IAAIpP,EAAU0P,CAAM,EAAE,CAAC,IAAI;AACpE,eAAOvP,GAAgBwP,GAAO3P,EAAU0P,CAAM,EAAE,CAAC,CAAC;AAAA,MACpD;AACA,aAAOD;AAAA,IACT,CAAC;AAAA,EACH;AAIA,SAHa;AAAA,IACX,eAAAJ;AAAA,EACJ;AAEA;AAEA,SAASO,GAAanL,GAAMhK,GAAagS,GAAaZ,GAAOgE,GAAc;AACzE,QAAM;AAAA,IACJ,YAAAxL;AAAA,IACA,cAAAE;AAAA,IACA,WAAAD;AAAA,EACJ,IAAMuH;AACJ,WAASiE,EAAYC,GAAW;AAC9B,WAAOA,EAAU,OAAM,EAAG,KAAK,CAACjW,GAAG6E,MAAMU,EAAQvF,CAAC,IAAIuF,EAAQV,CAAC,CAAC,EAAE,CAAC;AAAA,EACrE;AACA,WAASqR,EAAe/K,GAAQ;AAC9B,UAAMgL,IAAWxL,IAAOF,EAAaU,CAAM,IAAIX,EAAUW,CAAM,GACzDiL,IAAkBzV,EAAY,IAAI,CAAC6S,GAAMlQ,OAAW;AAAA,MACxD,MAAM+S,EAAS7C,IAAO2C,GAAU,CAAC;AAAA,MACjC,OAAA7S;AAAA,IACN,EAAM,EAAE,KAAK,CAACgT,GAAIC,MAAOhR,EAAQ+Q,EAAG,IAAI,IAAI/Q,EAAQgR,EAAG,IAAI,CAAC,GAClD;AAAA,MACJ,OAAAjT;AAAA,IACN,IAAQ8S,EAAgB,CAAC;AACrB,WAAO;AAAA,MACL,OAAA9S;AAAA,MACA,UAAA6S;AAAA,IACN;AAAA,EACE;AACA,WAASE,EAASlL,GAAQnB,GAAW;AACnC,UAAMwM,IAAU,CAACrL,GAAQA,IAASwH,GAAaxH,IAASwH,CAAW;AACnE,QAAI,CAAChI,EAAM,QAAOQ;AAClB,QAAI,CAACnB,EAAW,QAAOgM,EAAYQ,CAAO;AAC1C,UAAMC,IAAkBD,EAAQ,OAAO,CAAAE,MAAKjR,GAASiR,CAAC,MAAM1M,CAAS;AACrE,WAAIyM,EAAgB,SAAeT,EAAYS,CAAe,IACvDvQ,EAAUsQ,CAAO,IAAI7D;AAAA,EAC9B;AACA,WAASgE,EAAQrT,GAAO0G,GAAW;AACjC,UAAM4M,IAAajW,EAAY2C,CAAK,IAAIyS,EAAa,IAAG,GAClDI,IAAWE,EAASO,GAAY5M,CAAS;AAC/C,WAAO;AAAA,MACL,OAAA1G;AAAA,MACA,UAAA6S;AAAA,IACN;AAAA,EACE;AACA,WAASU,EAAWV,GAAU3C,GAAM;AAClC,UAAMrI,IAAS4K,EAAa,IAAG,IAAKI,GAC9B;AAAA,MACJ,OAAA7S;AAAA,MACA,UAAUwT;AAAA,IAChB,IAAQZ,EAAe/K,CAAM,GACnB4L,IAAe,CAACpM,KAAQJ,EAAWY,CAAM;AAC/C,QAAI,CAACqI,KAAQuD,EAAc,QAAO;AAAA,MAChC,OAAAzT;AAAA,MACA,UAAA6S;AAAA,IACN;AACI,UAAMS,IAAajW,EAAY2C,CAAK,IAAIwT,GAClCE,IAAeb,IAAWE,EAASO,GAAY,CAAC;AACtD,WAAO;AAAA,MACL,OAAAtT;AAAA,MACA,UAAU0T;AAAA,IAChB;AAAA,EACE;AAMA,SALa;AAAA,IACX,YAAAH;AAAA,IACA,SAAAF;AAAA,IACA,UAAAN;AAAA,EACJ;AAEA;AAEA,SAASY,GAAS3L,GAAW4L,GAAcC,GAAe3L,GAAYC,GAAcsK,GAAcrK,GAAc;AAC9G,WAASH,EAASJ,GAAQ;AACxB,UAAMiM,IAAejM,EAAO,UACtBkM,IAAYlM,EAAO,UAAU+L,EAAa,IAAG;AACnD,IAAAnB,EAAa,IAAIqB,CAAY,GACzBA,MACE5L,EAAW,aACbF,EAAU,MAAK,KAEfA,EAAU,OAAM,GAChBA,EAAU,OAAO,CAAC,GAClBA,EAAU,OAAM,KAGhB+L,MACFF,EAAc,IAAID,EAAa,KAAK,GACpCA,EAAa,IAAI/L,EAAO,KAAK,GAC7BO,EAAa,KAAK,QAAQ;AAAA,EAE9B;AACA,WAASyK,EAAS3Q,GAAGgO,GAAM;AACzB,UAAMrI,IAASM,EAAa,WAAWjG,GAAGgO,CAAI;AAC9C,IAAAjI,EAASJ,CAAM;AAAA,EACjB;AACA,WAAS7H,EAAMkC,GAAGwE,GAAW;AAC3B,UAAMsN,IAAcJ,EAAa,MAAK,EAAG,IAAI1R,CAAC,GACxC2F,IAASM,EAAa,QAAQ6L,EAAY,IAAG,GAAItN,CAAS;AAChE,IAAAuB,EAASJ,CAAM;AAAA,EACjB;AAKA,SAJa;AAAA,IACX,UAAAgL;AAAA,IACA,OAAA7S;AAAA,EACJ;AAEA;AAEA,SAASiU,GAAWpV,GAAMuN,GAAQ6F,GAAehK,GAAUC,GAAYxJ,GAAY0J,GAAc8L,GAAY;AAC3G,QAAMC,IAAuB;AAAA,IAC3B,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AACE,MAAIC,IAAmB;AACvB,WAASjW,EAAKhB,GAAU;AACtB,QAAI,CAAC+W,EAAY;AACjB,aAAStH,EAAgB5M,GAAO;AAG9B,WAFgB,oBAAI,KAAI,GAAG,QAAO,IACPoU,IACZ,GAAI;AACnB,MAAAhM,EAAa,KAAK,iBAAiB,GACnCvJ,EAAK,aAAa;AAClB,YAAMwT,IAAQJ,EAAc,UAAU,CAAAI,MAASA,EAAM,SAASrS,CAAK,CAAC;AACpE,MAAK8B,GAASuQ,CAAK,MACnBnK,EAAW,YAAY,CAAC,GACxBD,EAAS,MAAMoK,GAAO,CAAC,GACvBjK,EAAa,KAAK,YAAY;AAAA,IAChC;AACA,IAAA1J,EAAW,IAAI,UAAU,WAAW2V,GAAkB,EAAK,GAC3DjI,EAAO,QAAQ,CAACkI,GAAOtH,MAAe;AACpC,MAAAtO,EAAW,IAAI4V,GAAO,SAAS,CAAA5Q,MAAO;AACpC,SAAI1B,GAAUkS,CAAU,KAAKA,EAAW/W,GAAUuG,CAAG,MACnDkJ,EAAgBI,CAAU;AAAA,MAE9B,GAAGmH,CAAoB;AAAA,IACzB,CAAC;AAAA,EACH;AACA,WAASE,EAAiBE,GAAO;AAC/B,IAAIA,EAAM,SAAS,UAAOH,KAAmB,oBAAI,KAAI,GAAG,QAAO;AAAA,EACjE;AAIA,SAHa;AAAA,IACX,MAAAjW;AAAA,EACJ;AAEA;AAEA,SAASqW,GAASC,GAAc;AAC9B,MAAIC,IAAQD;AACZ,WAAShN,IAAM;AACb,WAAOiN;AAAA,EACT;AACA,WAAShN,EAAIxF,GAAG;AACd,IAAAwS,IAAQC,EAAezS,CAAC;AAAA,EAC1B;AACA,WAASmC,EAAInC,GAAG;AACd,IAAAwS,KAASC,EAAezS,CAAC;AAAA,EAC3B;AACA,WAAS0S,EAAS1S,GAAG;AACnB,IAAAwS,KAASC,EAAezS,CAAC;AAAA,EAC3B;AACA,WAASyS,EAAezS,GAAG;AACzB,WAAOJ,GAASI,CAAC,IAAIA,IAAIA,EAAE,IAAG;AAAA,EAChC;AAOA,SANa;AAAA,IACX,KAAAuF;AAAA,IACA,KAAAC;AAAA,IACA,KAAArD;AAAA,IACA,UAAAuQ;AAAA,EACJ;AAEA;AAEA,SAASC,GAAUlP,GAAMwG,GAAW;AAClC,QAAM2I,IAAYnP,EAAK,WAAW,MAAMoP,IAAIC,GACtCC,IAAiB9I,EAAU;AACjC,MAAI+I,IAAiB,MACjBrG,IAAW;AACf,WAASkG,EAAE7S,GAAG;AACZ,WAAO,eAAeA,CAAC;AAAA,EACzB;AACA,WAAS8S,EAAE9S,GAAG;AACZ,WAAO,mBAAmBA,CAAC;AAAA,EAC7B;AACA,WAASiT,EAAGtN,GAAQ;AAClB,QAAIgH,EAAU;AACd,UAAMuG,IAAY7S,GAAmBoD,EAAK,UAAUkC,CAAM,CAAC;AAC3D,IAAIuN,MAAcF,MAClBD,EAAe,YAAYH,EAAUM,CAAS,GAC9CF,IAAiBE;AAAA,EACnB;AACA,WAASlG,EAAaC,GAAQ;AAC5B,IAAAN,IAAW,CAACM;AAAA,EACd;AACA,WAASvK,IAAQ;AACf,IAAIiK,MACJoG,EAAe,YAAY,IACtB9I,EAAU,aAAa,OAAO,KAAGA,EAAU,gBAAgB,OAAO;AAAA,EACzE;AAMA,SALa;AAAA,IACX,OAAAvH;AAAA,IACA,IAAAuQ;AAAA,IACA,cAAAjG;AAAA,EACJ;AAEA;AAEA,SAASmG,GAAY1P,GAAM9B,GAAUwL,GAAa3C,GAAY4I,GAAoB9D,GAAOnU,GAAa0K,GAAUqE,GAAQ;AAEtH,QAAMmJ,IAAW9S,GAAU6S,CAAkB,GACvCE,IAAY/S,GAAU6S,CAAkB,EAAE,QAAO,GACjDG,IAAaC,EAAW,EAAG,OAAOC,EAAS,CAAE;AACnD,WAASC,EAAiBC,GAASC,GAAM;AACvC,WAAOD,EAAQ,OAAO,CAACnZ,GAAGqZ,MACjBrZ,IAAI4Y,EAAmBS,CAAC,GAC9BD,CAAI;AAAA,EACT;AACA,WAASE,EAAYH,GAASI,GAAK;AACjC,WAAOJ,EAAQ,OAAO,CAACnZ,GAAGqZ,MACHH,EAAiBlZ,GAAGuZ,CAAG,IACtB,IAAIvZ,EAAE,OAAO,CAACqZ,CAAC,CAAC,IAAIrZ,GACzC,CAAA,CAAE;AAAA,EACP;AACA,WAASwZ,EAAgBC,GAAQ;AAC/B,WAAO3E,EAAM,IAAI,CAACtB,GAAMlQ,OAAW;AAAA,MACjC,OAAOkQ,IAAOxD,EAAW1M,CAAK,IAAI,MAAiBmW;AAAA,MACnD,KAAKjG,IAAOrM,IAAW,MAAiBsS;AAAA,IAC9C,EAAM;AAAA,EACJ;AACA,WAASC,EAAeP,GAASM,GAAQE,GAAW;AAClD,UAAMC,IAAcJ,EAAgBC,CAAM;AAC1C,WAAON,EAAQ,IAAI,CAAA7V,MAAS;AAC1B,YAAMuW,IAAUF,IAAY,IAAI,CAAChH,GAC3BmH,IAAUH,IAAYhH,IAAc,GACpCoH,IAAYJ,IAAY,QAAQ,SAChCK,IAAYJ,EAAYtW,CAAK,EAAEyW,CAAS;AAC9C,aAAO;AAAA,QACL,OAAAzW;AAAA,QACA,WAAA0W;AAAA,QACA,eAAelC,GAAS,EAAE;AAAA,QAC1B,WAAWK,GAAUlP,GAAMyG,EAAOpM,CAAK,CAAC;AAAA,QACxC,QAAQ,MAAM+H,EAAS,IAAG,IAAK2O,IAAYH,IAAUC;AAAA,MAC7D;AAAA,IACI,CAAC;AAAA,EACH;AACA,WAASd,IAAc;AACrB,UAAMO,IAAM5Y,EAAY,CAAC,GACnBwY,IAAUG,EAAYR,GAAWS,CAAG;AAC1C,WAAOG,EAAeP,GAASxG,GAAa,EAAK;AAAA,EACnD;AACA,WAASsG,IAAY;AACnB,UAAMM,IAAMpS,IAAWxG,EAAY,CAAC,IAAI,GAClCwY,IAAUG,EAAYT,GAAUU,CAAG;AACzC,WAAOG,EAAeP,GAAS,CAACxG,GAAa,EAAI;AAAA,EACnD;AACA,WAASsH,IAAU;AACjB,WAAOlB,EAAW,MAAM,CAAC;AAAA,MACvB,OAAAzV;AAAA,IACN,MAAU;AACJ,YAAM4W,IAAerB,EAAS,OAAO,CAAAQ,MAAKA,MAAM/V,CAAK;AACrD,aAAO4V,EAAiBgB,GAAc/S,CAAQ,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AACA,WAASwD,IAAO;AACd,IAAAoO,EAAW,QAAQ,CAAAiB,MAAa;AAC9B,YAAM;AAAA,QACJ,QAAA7O;AAAA,QACA,WAAAiN;AAAA,QACA,eAAA+B;AAAA,MACR,IAAUH,GACEI,IAAgBjP,EAAM;AAC5B,MAAIiP,MAAkBD,EAAc,UACpC/B,EAAU,GAAGgC,CAAa,GAC1BD,EAAc,IAAIC,CAAa;AAAA,IACjC,CAAC;AAAA,EACH;AACA,WAASlS,IAAQ;AACf,IAAA6Q,EAAW,QAAQ,CAAAiB,MAAaA,EAAU,UAAU,MAAK,CAAE;AAAA,EAC7D;AAOA,SANa;AAAA,IACX,SAAAC;AAAA,IACA,OAAA/R;AAAA,IACA,MAAAyC;AAAA,IACA,YAAAoO;AAAA,EACJ;AAEA;AAEA,SAASsB,GAAc5K,GAAW/D,GAAc4O,GAAa;AAC3D,MAAIC,GACArZ,IAAY;AAChB,WAASO,EAAKhB,GAAU;AACtB,QAAI,CAAC6Z,EAAa;AAClB,aAASpK,EAAgBsK,GAAW;AAClC,iBAAWC,KAAYD;AACrB,YAAIC,EAAS,SAAS,aAAa;AACjC,UAAAha,EAAS,OAAM,GACfiL,EAAa,KAAK,eAAe;AACjC;AAAA,QACF;AAAA,IAEJ;AACA,IAAA6O,IAAmB,IAAI,iBAAiB,CAAAC,MAAa;AACnD,MAAItZ,MACAoE,GAAUgV,CAAW,KAAKA,EAAY7Z,GAAU+Z,CAAS,MAC3DtK,EAAgBsK,CAAS;AAAA,IAE7B,CAAC,GACDD,EAAiB,QAAQ9K,GAAW;AAAA,MAClC,WAAW;AAAA,IACjB,CAAK;AAAA,EACH;AACA,WAAS9M,IAAU;AACjB,IAAI4X,KAAkBA,EAAiB,WAAU,GACjDrZ,IAAY;AAAA,EACd;AAKA,SAJa;AAAA,IACX,MAAAO;AAAA,IACA,SAAAkB;AAAA,EACJ;AAEA;AAEA,SAAS+X,GAAajL,GAAWC,GAAQhE,GAAciP,GAAW;AAChE,QAAMC,IAAuB,CAAA;AAC7B,MAAIC,IAAc,MACdC,IAAiB,MACjBC,GACA7Z,IAAY;AAChB,WAASO,IAAO;AACd,IAAAsZ,IAAuB,IAAI,qBAAqB,CAAA5K,MAAW;AACzD,MAAIjP,MACJiP,EAAQ,QAAQ,CAAAC,MAAS;AACvB,cAAM9M,IAAQoM,EAAO,QAAQU,EAAM,MAAM;AACzC,QAAAwK,EAAqBtX,CAAK,IAAI8M;AAAA,MAChC,CAAC,GACDyK,IAAc,MACdC,IAAiB,MACjBpP,EAAa,KAAK,cAAc;AAAA,IAClC,GAAG;AAAA,MACD,MAAM+D,EAAU;AAAA,MAChB,WAAAkL;AAAA,IACN,CAAK,GACDjL,EAAO,QAAQ,CAAAkI,MAASmD,EAAqB,QAAQnD,CAAK,CAAC;AAAA,EAC7D;AACA,WAASjV,IAAU;AACjB,IAAIoY,KAAsBA,EAAqB,WAAU,GACzD7Z,IAAY;AAAA,EACd;AACA,WAAS8Z,EAAiBC,GAAQ;AAChC,WAAOhV,GAAW2U,CAAoB,EAAE,OAAO,CAACM,GAAM5K,MAAe;AACnE,YAAMhN,IAAQ,SAASgN,CAAU,GAC3B;AAAA,QACJ,gBAAA6K;AAAA,MACR,IAAUP,EAAqBtX,CAAK;AAG9B,cAFoB2X,KAAUE,KACP,CAACF,KAAU,CAACE,MACAD,EAAK,KAAK5X,CAAK,GAC3C4X;AAAA,IACT,GAAG,CAAA,CAAE;AAAA,EACP;AACA,WAASnQ,EAAIkQ,IAAS,IAAM;AAC1B,QAAIA,KAAUJ,EAAa,QAAOA;AAClC,QAAI,CAACI,KAAUH,EAAgB,QAAOA;AACtC,UAAMxF,IAAe0F,EAAiBC,CAAM;AAC5C,WAAIA,MAAQJ,IAAcvF,IACrB2F,MAAQH,IAAiBxF,IACvBA;AAAA,EACT;AAMA,SALa;AAAA,IACX,MAAA7T;AAAA,IACA,SAAAkB;AAAA,IACA,KAAAoI;AAAA,EACJ;AAEA;AAEA,SAASqQ,GAAWnS,GAAMuL,GAAeC,GAAY/E,GAAQ2L,GAAaxY,GAAa;AACrF,QAAM;AAAA,IACJ,aAAA+G;AAAA,IACA,WAAAJ;AAAA,IACA,SAAAE;AAAA,EACJ,IAAMT,GACEqS,IAAc7G,EAAW,CAAC,KAAK4G,GAC/BE,IAAWC,EAAe,GAC1BC,IAASC,EAAa,GACtB1L,IAAayE,EAAW,IAAI7K,CAAW,GACvCgP,IAAqB+C,EAAe;AAC1C,WAASH,IAAkB;AACzB,QAAI,CAACF,EAAa,QAAO;AACzB,UAAMM,IAAYnH,EAAW,CAAC;AAC9B,WAAOlP,EAAQiP,EAAchL,CAAS,IAAIoS,EAAUpS,CAAS,CAAC;AAAA,EAChE;AACA,WAASkS,IAAgB;AACvB,QAAI,CAACJ,EAAa,QAAO;AACzB,UAAMO,IAAQhZ,EAAY,iBAAiBqD,EAAUwJ,CAAM,CAAC;AAC5D,WAAO,WAAWmM,EAAM,iBAAiB,UAAUnS,CAAO,EAAE,CAAC;AAAA,EAC/D;AACA,WAASiS,IAAkB;AACzB,WAAOlH,EAAW,IAAI,CAACS,GAAM5R,GAAO2R,MAAU;AAC5C,YAAMrB,IAAU,CAACtQ,GACXuQ,IAASzN,GAAiB6O,GAAO3R,CAAK;AAC5C,aAAIsQ,IAAgB5D,EAAW1M,CAAK,IAAIiY,IACpC1H,IAAe7D,EAAW1M,CAAK,IAAImY,IAChCxG,EAAM3R,IAAQ,CAAC,EAAEkG,CAAS,IAAI0L,EAAK1L,CAAS;AAAA,IACrD,CAAC,EAAE,IAAIjE,CAAO;AAAA,EAChB;AAOA,SANa;AAAA,IACX,YAAAyK;AAAA,IACA,oBAAA4I;AAAA,IACA,UAAA2C;AAAA,IACA,QAAAE;AAAA,EACJ;AAEA;AAEA,SAASK,GAAe7S,GAAM9B,GAAUuN,GAAgB/J,GAAM6J,GAAeC,GAAY8G,GAAUE,GAAQ3I,GAAgB;AACzH,QAAM;AAAA,IACJ,WAAAtJ;AAAA,IACA,SAAAE;AAAA,IACA,WAAAM;AAAA,EACJ,IAAMf,GACE8S,IAAgB3W,GAASsP,CAAc;AAC7C,WAASsH,EAAShW,GAAOiW,GAAW;AAClC,WAAOlW,GAAUC,CAAK,EAAE,OAAO,CAAAqT,MAAKA,IAAI4C,MAAc,CAAC,EAAE,IAAI,CAAA5C,MAAKrT,EAAM,MAAMqT,GAAGA,IAAI4C,CAAS,CAAC;AAAA,EACjG;AACA,WAASC,EAAOlW,GAAO;AACrB,WAAKA,EAAM,SACJD,GAAUC,CAAK,EAAE,OAAO,CAAC4P,GAAQuG,GAAO7Y,MAAU;AACvD,YAAM8Y,IAAQlW,EAAU0P,CAAM,KAAK,GAC7BhC,IAAUwI,MAAU,GACpBvI,IAASsI,MAAUhW,GAAeH,CAAK,GACvCqW,IAAQ7H,EAAchL,CAAS,IAAIiL,EAAW2H,CAAK,EAAE5S,CAAS,GAC9D8S,IAAQ9H,EAAchL,CAAS,IAAIiL,EAAW0H,CAAK,EAAEzS,CAAO,GAC5D6S,IAAO,CAAC5R,KAAQiJ,IAAU5J,EAAUuR,CAAQ,IAAI,GAChDiB,IAAO,CAAC7R,KAAQkJ,IAAS7J,EAAUyR,CAAM,IAAI,GAC7CgB,IAAYlX,EAAQ+W,IAAQE,KAAQH,IAAQE,EAAK;AACvD,aAAIjZ,KAASmZ,IAAYtV,IAAW2L,KAAgB8C,EAAO,KAAKuG,CAAK,GACjEtI,KAAQ+B,EAAO,KAAK5P,EAAM,MAAM,GAC7B4P;AAAA,IACT,GAAG,CAAA,CAAE,EAAE,IAAI,CAAC8G,GAAapZ,GAAOsS,MAAW;AACzC,YAAM+G,IAAe,KAAK,IAAI/G,EAAOtS,IAAQ,CAAC,KAAK,CAAC;AACpD,aAAO0C,EAAM,MAAM2W,GAAcD,CAAW;AAAA,IAC9C,CAAC,IAhByB,CAAA;AAAA,EAiB5B;AACA,WAAS/H,EAAY3O,GAAO;AAC1B,WAAO+V,IAAgBC,EAAShW,GAAO0O,CAAc,IAAIwH,EAAOlW,CAAK;AAAA,EACvE;AAIA,SAHa;AAAA,IACX,aAAA2O;AAAA,EACJ;AAEA;AAEA,SAASiI,GAAOza,GAAMsN,GAAWC,GAAQzN,GAAeY,GAAa5B,GAASyK,GAAc;AAE1F,QAAM;AAAA,IACJ,OAAAxE;AAAA,IACA,MAAM2V;AAAA,IACN,WAAA7S;AAAA,IACA,YAAA8S;AAAA,IACA,MAAAnS;AAAA,IACA,UAAA6G;AAAA,IACA,UAAA5F;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAkR;AAAA,IACA,gBAAgBpI;AAAA,IAChB,WAAA7I;AAAA,IACA,eAAA+G;AAAA,IACA,aAAAlD;AAAA,IACA,aAAA2K;AAAA,IACA,WAAAtO;AAAA,IACA,YAAAwL;AAAA,EACJ,IAAMvW,GAEE6R,IAAiB,GACjBlD,IAAYV,GAAS,GACrBsF,IAAgB5E,EAAU,QAAQH,CAAS,GAC3CgF,IAAa/E,EAAO,IAAIE,EAAU,OAAO,GACzC3G,IAAOD,GAAK6T,GAAY7S,CAAS,GACjC7C,IAAW8B,EAAK,YAAYuL,CAAa,GACzC7I,IAAgB4D,GAAcpI,CAAQ,GACtCoN,IAAYtN,GAAUC,GAAOC,CAAQ,GACrCkO,IAAe,CAAC1K,KAAQ,CAAC,CAACkI,GAC1BwI,IAAc1Q,KAAQ,CAAC,CAACkI,GACxB;AAAA,IACJ,YAAA7C;AAAA,IACA,oBAAA4I;AAAA,IACA,UAAA2C;AAAA,IACA,QAAAE;AAAA,EACJ,IAAML,GAAWnS,GAAMuL,GAAeC,GAAY/E,GAAQ2L,GAAaxY,CAAW,GAC1E6R,IAAiBoH,GAAe7S,GAAM9B,GAAUwN,GAAahK,GAAM6J,GAAeC,GAAY8G,GAAUE,GAAQ3I,CAAc,GAC9H;AAAA,IACJ,OAAAgC;AAAA,IACA,cAAAlC;AAAA,EACJ,IAAM0B,GAAYrL,GAAMsL,GAAWC,GAAeC,GAAYC,CAAc,GACpE/B,IAAc,CAACzM,EAAU4O,CAAK,IAAI5O,EAAU0S,CAAkB,GAC9D;AAAA,IACJ,gBAAAxF;AAAA,IACA,oBAAAF;AAAA,EACJ,IAAMR,GAAcvL,GAAUwL,GAAaC,GAAcC,GAAeC,CAAc,GAC9EnS,IAAc0U,IAAejC,KAAiBR,GAC9C;AAAA,IACJ,OAAAb;AAAA,EACJ,IAAMgC,GAAYpB,GAAahS,GAAagK,CAAI,GAExCrH,IAAQoH,GAAQvE,GAAexF,CAAW,GAAGmc,GAAYnS,CAAI,GAC7DwM,IAAgB7T,EAAM,MAAK,GAC3BgS,IAAevP,GAAU2J,CAAM,GAE/BrH,IAAS,CAAC;AAAA,IACd,aAAA2U;AAAA,IACA,YAAAxR;AAAA,IACA,cAAAuH;AAAA,IACA,SAAS;AAAA,MACP,MAAApI;AAAA,IACN;AAAA,EACA,MAAQ;AACJ,IAAKA,MAAMoI,GAAa,UAAUiK,GAAY,YAAW,CAAE,GAC3DxR,GAAW,KAAI;AAAA,EACjB,GACMlD,IAAS,CAAC;AAAA,IACd,YAAAkD;AAAA,IACA,WAAA4M;AAAA,IACA,UAAA/M;AAAA,IACA,gBAAAqF;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAsM;AAAA,IACA,aAAAC;AAAA,IACA,aAAAF;AAAA,IACA,WAAA1R;AAAA,IACA,cAAAI;AAAA,IACA,cAAAqH;AAAA,IACA,SAAS;AAAA,MACP,MAAApI;AAAA,IACN;AAAA,EACA,GAAK5B,OAAU;AACX,UAAMoU,KAAe3R,GAAW,QAAO,GACjC4R,KAAe,CAACrK,GAAa,gBAAe,GAC5CsK,KAAa1S,KAAOwS,KAAeA,MAAgBC,IACnDE,KAAoBD,MAAc,CAACL,GAAY,YAAW;AAChE,IAAIM,MAAmBhS,GAAU,KAAI;AACrC,UAAMiS,KAAuBlS,GAAS,QAAQtC,KAAQ4H,GAAiB,IAAG,KAAM,IAAI5H;AACpF,IAAA2H,GAAe,IAAI6M,EAAoB,GACnC5S,OACFsS,GAAa,KAAKzR,GAAW,WAAW,GACxC0R,GAAY,KAAI,IAElB9E,GAAU,GAAG1H,GAAe,KAAK,GAC7B4M,MAAmB5R,GAAa,KAAK,QAAQ,GAC5C2R,MAAY3R,GAAa,KAAK,QAAQ;AAAA,EAC7C,GACMJ,IAAYlD,GAAWnG,GAAeY,GAAa,MAAMwF,EAAOmV,EAAM,GAAG,CAAAzU,OAAST,EAAOkV,IAAQzU,EAAK,CAAC,GAEvGuF,IAAW,MACXmP,IAAgB9c,EAAY2C,EAAM,IAAG,CAAE,GACvC+H,KAAWyM,GAAS2F,CAAa,GACjC9M,KAAmBmH,GAAS2F,CAAa,GACzC/M,KAAiBoH,GAAS2F,CAAa,GACvCtS,KAAS2M,GAAS2F,CAAa,GAC/BjS,KAAaiF,GAAWpF,IAAUqF,IAAgBC,IAAkBxF,IAAQqG,GAAUlD,CAAQ,GAC9F7C,KAAeqK,GAAanL,GAAMhK,GAAagS,GAAaZ,GAAO5G,EAAM,GACzEI,KAAW0L,GAAS3L,GAAWhI,GAAO6T,GAAe3L,IAAYC,IAAcN,IAAQO,CAAY,GACnGgS,KAAiBtJ,GAAerC,CAAK,GACrC/P,KAAayF,GAAU,GACvBkW,KAAejD,GAAajL,GAAWC,GAAQhE,GAAcqR,CAAe,GAC5E;AAAA,IACJ,eAAAxH;AAAA,EACJ,IAAMH,GAAcC,GAAcxC,GAAelS,GAAauS,IAAoBwB,GAAgBY,CAAY,GACtGsI,KAAarG,GAAWpV,GAAMuN,GAAQ6F,IAAehK,IAAUC,IAAYxJ,IAAY0J,GAAc8L,CAAU,GAE/GgG,KAAS;AAAA,IACb,eAAAvb;AAAA,IACA,aAAAY;AAAA,IACA,cAAA6I;AAAA,IACA,eAAA8I;AAAA,IACA,YAAAC;AAAA,IACA,WAAAnJ;AAAA,IACA,MAAArC;AAAA,IACA,aAAaiC,GAAYjC,GAAM9G,GAAMF,GAAeY,GAAasI,IAAQoD,GAAYtF,GAAMpG,CAAW,GAAGwI,IAAUC,GAAWC,IAAUC,IAAYC,IAAcnI,GAAOoI,GAAcC,GAAeC,GAAUC,GAAeC,GAAWwC,GAAUtC,CAAS;AAAA,IAC7P,YAAAhK;AAAA,IACA,eAAA2J;AAAA,IACA,OAAArI;AAAA,IACA,eAAA6T;AAAA,IACA,OAAApF;AAAA,IACA,UAAA1G;AAAA,IACA,gBAAAqF;AAAA,IACA,kBAAAC;AAAA,IACA,SAAA1P;AAAA,IACA,eAAeuO,GAAcC,GAAW/D,GAAc7I,GAAa6M,GAAQzG,GAAM0G,GAAaC,CAAS;AAAA,IACvG,YAAApE;AAAA,IACA,cAAcsG,GAAaC,GAAOrB,IAAgBvF,IAAQK,IAAYG,CAAa;AAAA,IACnF,cAAcqI,GAAarB,GAAaZ,GAAOrB,IAAgB,CAACrF,IAAUqF,IAAgBC,IAAkBxF,EAAM,CAAC;AAAA,IACnH,gBAAAuS;AAAA,IACA,gBAAgB/c,EAAY,IAAI+c,GAAe,GAAG;AAAA,IAClD,aAAA/c;AAAA,IACA,cAAA8K;AAAA,IACA,UAAAF;AAAA,IACA,aAAaoN,GAAY1P,GAAM9B,GAAUwL,GAAa3C,GAAY4I,GAAoB9D,GAAOnU,GAAa+P,IAAgBhB,CAAM;AAAA,IAChI,YAAAkO;AAAA,IACA,eAAevD,GAAc5K,GAAW/D,GAAc4O,CAAW;AAAA,IACjE,cAAAqD;AAAA,IACA,cAAArI;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAb;AAAA,IACA,QAAAvJ;AAAA,IACA,WAAWgN,GAAUlP,GAAMwG,CAAS;AAAA,EACxC;AACE,SAAO+N;AACT;AAEA,SAASK,KAAe;AACtB,MAAInW,IAAY,CAAA,GACZoW;AACJ,WAASrc,EAAKhB,GAAU;AACtB,IAAAqd,IAAMrd;AAAA,EACR;AACA,WAASsd,EAAa/W,GAAK;AACzB,WAAOU,EAAUV,CAAG,KAAK,CAAA;AAAA,EAC3B;AACA,WAASgX,EAAKhX,GAAK;AACjB,WAAA+W,EAAa/W,CAAG,EAAE,QAAQ,CAAA5G,MAAKA,EAAE0d,GAAK9W,CAAG,CAAC,GACnCiB;AAAA,EACT;AACA,WAASgW,EAAGjX,GAAKkX,GAAI;AACnB,WAAAxW,EAAUV,CAAG,IAAI+W,EAAa/W,CAAG,EAAE,OAAO,CAACkX,CAAE,CAAC,GACvCjW;AAAA,EACT;AACA,WAASkW,EAAInX,GAAKkX,GAAI;AACpB,WAAAxW,EAAUV,CAAG,IAAI+W,EAAa/W,CAAG,EAAE,OAAO,CAAA5G,MAAKA,MAAM8d,CAAE,GAChDjW;AAAA,EACT;AACA,WAASC,IAAQ;AACf,IAAAR,IAAY,CAAA;AAAA,EACd;AACA,QAAMO,IAAO;AAAA,IACX,MAAAxG;AAAA,IACA,MAAAuc;AAAA,IACA,KAAAG;AAAA,IACA,IAAAF;AAAA,IACA,OAAA/V;AAAA,EACJ;AACE,SAAOD;AACT;AAEA,MAAM1H,KAAiB;AAAA,EACrB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,aAAa,CAAA;AAAA,EACb,UAAU;AAAA,EACV,eAAe;AAAA,EACf,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AACd;AAEA,SAAS6d,GAAevb,GAAa;AACnC,WAASjB,EAAasC,GAAUC,GAAU;AACxC,WAAOsC,GAAiBvC,GAAUC,KAAY,EAAE;AAAA,EAClD;AACA,WAAStC,EAAeZ,GAAS;AAC/B,UAAMY,IAAiBZ,EAAQ,eAAe,CAAA,GACxCod,IAAsBpY,GAAWpE,CAAc,EAAE,OAAO,CAAAyc,MAASzb,EAAY,WAAWyb,CAAK,EAAE,OAAO,EAAE,IAAI,CAAAA,MAASzc,EAAeyc,CAAK,CAAC,EAAE,OAAO,CAACte,GAAGue,MAAgB3c,EAAa5B,GAAGue,CAAW,GAAG,CAAA,CAAE;AAC7M,WAAO3c,EAAaX,GAASod,CAAmB;AAAA,EAClD;AACA,WAASG,EAAoBC,GAAa;AACxC,WAAOA,EAAY,IAAI,CAAAxd,MAAWgF,GAAWhF,EAAQ,eAAe,EAAE,CAAC,EAAE,OAAO,CAACyd,GAAKC,MAAiBD,EAAI,OAAOC,CAAY,GAAG,CAAA,CAAE,EAAE,IAAI9b,EAAY,UAAU;AAAA,EACjK;AAMA,SALa;AAAA,IACX,cAAAjB;AAAA,IACA,gBAAAC;AAAA,IACA,qBAAA2c;AAAA,EACJ;AAEA;AAEA,SAASI,GAAejd,GAAgB;AACtC,MAAIkd,IAAgB,CAAA;AACpB,WAASpd,EAAKhB,GAAUmE,GAAS;AAC/B,WAAAia,IAAgBja,EAAQ,OAAO,CAAC;AAAA,MAC9B,SAAA3D;AAAA,IACN,MAAUU,EAAe,eAAeV,CAAO,EAAE,WAAW,EAAK,GAC7D4d,EAAc,QAAQ,CAAA/Z,MAAUA,EAAO,KAAKrE,GAAUkB,CAAc,CAAC,GAC9DiD,EAAQ,OAAO,CAACka,GAAKha,MAAW,OAAO,OAAOga,GAAK;AAAA,MACxD,CAACha,EAAO,IAAI,GAAGA;AAAA,IACrB,CAAK,GAAG,CAAA,CAAE;AAAA,EACR;AACA,WAASnC,IAAU;AACjB,IAAAkc,IAAgBA,EAAc,OAAO,CAAA/Z,MAAUA,EAAO,QAAO,CAAE;AAAA,EACjE;AAKA,SAJa;AAAA,IACX,MAAArD;AAAA,IACA,SAAAkB;AAAA,EACJ;AAEA;AAEA,SAASoc,GAAc5c,GAAMnB,GAAage,GAAa;AACrD,QAAM/c,IAAgBE,EAAK,eACrBU,IAAcZ,EAAc,aAC5BN,IAAiByc,GAAevb,CAAW,GAC3Coc,IAAiBL,GAAejd,CAAc,GAC9Cud,IAAgBzX,GAAU,GAC1BiE,IAAemS,GAAY,GAC3B;AAAA,IACJ,cAAAjc;AAAA,IACA,gBAAAC;AAAA,IACA,qBAAA2c;AAAA,EACJ,IAAM7c,GACE;AAAA,IACJ,IAAAsc;AAAA,IACA,KAAAE;AAAA,IACA,MAAAH;AAAA,EACJ,IAAMtS,GACEyT,IAASC;AACf,MAAIle,IAAY,IACZsc,GACA1b,IAAcF,EAAarB,IAAgBwe,GAAc,aAAa,GACtE9d,IAAUW,EAAaE,CAAW,GAClCud,IAAa,CAAA,GACbC,GACA7P,GACAC;AACJ,WAAS6P,IAAgB;AACvB,UAAM;AAAA,MACJ,WAAWC;AAAA,MACX,QAAQC;AAAA,IACd,IAAQxe;AAEJ,IAAAwO,KADwBpK,GAASma,CAAa,IAAIrd,EAAK,cAAcqd,CAAa,IAAIA,MACvDrd,EAAK,SAAS,CAAC;AAC9C,UAAMud,IAAera,GAASoa,CAAU,IAAIhQ,EAAU,iBAAiBgQ,CAAU,IAAIA;AACrF,IAAA/P,IAAS,CAAA,EAAG,MAAM,KAAKgQ,KAAgBjQ,EAAU,QAAQ;AAAA,EAC3D;AACA,WAASkQ,EAAa1e,GAAS;AAC7B,UAAMuc,IAASZ,GAAOza,GAAMsN,GAAWC,GAAQzN,GAAeY,GAAa5B,GAASyK,CAAY;AAChG,QAAIzK,EAAQ,QAAQ,CAACuc,EAAO,YAAY,QAAO,GAAI;AACjD,YAAMoC,IAAqB,OAAO,OAAO,CAAA,GAAI3e,GAAS;AAAA,QACpD,MAAM;AAAA,MACd,CAAO;AACD,aAAO0e,EAAaC,CAAkB;AAAA,IACxC;AACA,WAAOpC;AAAA,EACT;AACA,WAASqC,EAASC,GAAaC,GAAa;AAC1C,IAAI7e,MACJY,IAAcF,EAAaE,GAAage,CAAW,GACnD7e,IAAUY,EAAeC,CAAW,GACpCud,IAAaU,KAAeV,GAC5BE,EAAa,GACb/B,IAASmC,EAAa1e,CAAO,GAC7Bud,EAAoB,CAAC1c,GAAa,GAAGud,EAAW,IAAI,CAAC;AAAA,MACnD,SAAApe;AAAA,IACN,MAAUA,CAAO,CAAC,CAAC,EAAE,QAAQ,CAAA+e,MAASd,EAAc,IAAIc,GAAO,UAAUZ,CAAU,CAAC,GAC3Ene,EAAQ,WACbuc,EAAO,UAAU,GAAGA,EAAO,SAAS,IAAG,CAAE,GACzCA,EAAO,UAAU,KAAI,GACrBA,EAAO,aAAa,KAAI,GACxBA,EAAO,WAAW,KAAKvV,CAAI,GAC3BuV,EAAO,aAAa,KAAKvV,CAAI,GAC7BuV,EAAO,cAAc,KAAKvV,CAAI,GAC9BuV,EAAO,cAAc,KAAKvV,CAAI,GAC1BuV,EAAO,QAAQ,QAAMA,EAAO,YAAY,KAAI,GAC5C/N,EAAU,gBAAgBC,EAAO,UAAQ8N,EAAO,YAAY,KAAKvV,CAAI,GACzEqX,IAAaL,EAAe,KAAKhX,GAAMoX,CAAU;AAAA,EACnD;AACA,WAASD,EAAWU,GAAaC,GAAa;AAC5C,UAAMjD,IAAamD,EAAkB;AACrC,IAAAC,EAAU,GACVL,EAASje,EAAa;AAAA,MACpB,YAAAkb;AAAA,IACN,GAAOgD,CAAW,GAAGC,CAAW,GAC5BrU,EAAa,KAAK,QAAQ;AAAA,EAC5B;AACA,WAASwU,IAAa;AACpB,IAAA1C,EAAO,YAAY,QAAO,GAC1BA,EAAO,WAAW,MAAK,GACvBA,EAAO,UAAU,MAAK,GACtBA,EAAO,YAAY,MAAK,GACxBA,EAAO,cAAc,QAAO,GAC5BA,EAAO,cAAc,QAAO,GAC5BA,EAAO,aAAa,QAAO,GAC3BA,EAAO,UAAU,QAAO,GACxByB,EAAe,QAAO,GACtBC,EAAc,MAAK;AAAA,EACrB;AACA,WAASvc,IAAU;AACjB,IAAIzB,MACJA,IAAY,IACZge,EAAc,MAAK,GACnBgB,EAAU,GACVxU,EAAa,KAAK,SAAS,GAC3BA,EAAa,MAAK;AAAA,EACpB;AACA,WAASH,EAASjI,GAAO9B,GAAMwI,GAAW;AACxC,IAAI,CAAC/I,EAAQ,UAAUC,MACvBsc,EAAO,WAAW,gBAAe,EAAG,YAAYhc,MAAS,KAAO,IAAIP,EAAQ,QAAQ,GACpFuc,EAAO,SAAS,MAAMla,GAAO0G,KAAa,CAAC;AAAA,EAC7C;AACA,WAASmW,EAAW3e,GAAM;AACxB,UAAMsB,IAAO0a,EAAO,MAAM,IAAI,CAAC,EAAE,IAAG;AACpC,IAAAjS,EAASzI,GAAMtB,GAAM,EAAE;AAAA,EACzB;AACA,WAAS4e,EAAW5e,GAAM;AACxB,UAAM6e,IAAO7C,EAAO,MAAM,IAAI,EAAE,EAAE,IAAG;AACrC,IAAAjS,EAAS8U,GAAM7e,GAAM,CAAC;AAAA,EACxB;AACA,WAAS8e,IAAgB;AAEvB,WADa9C,EAAO,MAAM,IAAI,CAAC,EAAE,IAAG,MACpByC,EAAkB;AAAA,EACpC;AACA,WAASM,IAAgB;AAEvB,WADa/C,EAAO,MAAM,IAAI,EAAE,EAAE,IAAG,MACrByC,EAAkB;AAAA,EACpC;AACA,WAASO,IAAiB;AACxB,WAAOhD,EAAO;AAAA,EAChB;AACA,WAASE,IAAiB;AACxB,WAAOF,EAAO,eAAe,IAAIA,EAAO,eAAe,KAAK;AAAA,EAC9D;AACA,WAASyC,IAAqB;AAC5B,WAAOzC,EAAO,MAAM,IAAG;AAAA,EACzB;AACA,WAASiD,IAAqB;AAC5B,WAAOjD,EAAO,cAAc,IAAG;AAAA,EACjC;AACA,WAASG,IAAe;AACtB,WAAOH,EAAO,aAAa,IAAG;AAAA,EAChC;AACA,WAASkD,IAAkB;AACzB,WAAOlD,EAAO,aAAa,IAAI,EAAK;AAAA,EACtC;AACA,WAAS5Y,KAAU;AACjB,WAAO0a;AAAA,EACT;AACA,WAASqB,KAAiB;AACxB,WAAOnD;AAAA,EACT;AACA,WAAS3c,IAAW;AAClB,WAAOsB;AAAA,EACT;AACA,WAASye,IAAgB;AACvB,WAAOnR;AAAA,EACT;AACA,WAASoR,IAAa;AACpB,WAAOnR;AAAA,EACT;AACA,QAAMzH,IAAO;AAAA,IACX,eAAAqY;AAAA,IACA,eAAAC;AAAA,IACA,eAAAK;AAAA,IACA,gBAAAD;AAAA,IACA,SAAAhe;AAAA,IACA,KAAAwb;AAAA,IACA,IAAAF;AAAA,IACA,MAAAD;AAAA,IACA,SAAApZ;AAAA,IACA,oBAAA6b;AAAA,IACA,QAAAtB;AAAA,IACA,UAAAte;AAAA,IACA,YAAAsf;AAAA,IACA,YAAAC;AAAA,IACA,gBAAA1C;AAAA,IACA,gBAAA8C;AAAA,IACA,UAAAjV;AAAA,IACA,oBAAA0U;AAAA,IACA,YAAAY;AAAA,IACA,cAAAlD;AAAA,IACA,iBAAA+C;AAAA,EACJ;AACE,SAAAb,EAAS7e,GAAage,CAAW,GACjC,WAAW,MAAMtT,EAAa,KAAK,MAAM,GAAG,CAAC,GACtCzD;AACT;AACA8W,GAAc,gBAAgB;AC9nD9B,SAAS+B,GAAiB7f,IAAU,IAAI2D,IAAU,CAAA,GAAI;AACpD,QAAMmc,IAAgBC,GAAO/f,CAAO,GAC9BggB,IAAgBD,GAAOpc,CAAO,GAC9B,CAACnE,GAAUygB,CAAW,IAAIC,GAAQ,GAClC,CAACC,GAAUC,CAAW,IAAIF,GAAQ,GAClChC,IAASmC,GAAY,MAAM;AAC/B,IAAI7gB,KAAUA,EAAS,OAAOsgB,EAAc,SAASE,EAAc,OAAO;AAAA,EAC5E,GAAG,CAACxgB,CAAQ,CAAC;AACb,SAAA8gB,GAAU,MAAM;AACd,IAAItd,GAAgB8c,EAAc,SAAS9f,CAAO,MAClD8f,EAAc,UAAU9f,GACxBke,EAAM;AAAA,EACR,GAAG,CAACle,GAASke,CAAM,CAAC,GACpBoC,GAAU,MAAM;AACd,IAAIxc,GAAgBkc,EAAc,SAASrc,CAAO,MAClDqc,EAAc,UAAUrc,GACxBua,EAAM;AAAA,EACR,GAAG,CAACva,GAASua,CAAM,CAAC,GACpBoC,GAAU,MAAM;AACd,QAAIvd,GAAS,KAAMod,GAAU;AAC3B,MAAArC,GAAc,gBAAgB+B,GAAiB;AAC/C,YAAMU,IAAczC,GAAcqC,GAAUL,EAAc,SAASE,EAAc,OAAO;AACxF,aAAAC,EAAYM,CAAW,GAChB,MAAMA,EAAY,QAAO;AAAA,IAClC;AACE,MAAAN,EAAY,MAAS;AAAA,EAEzB,GAAG,CAACE,GAAUF,CAAW,CAAC,GACnB,CAACG,GAAa5gB,CAAQ;AAC/B;AACAqgB,GAAiB,gBAAgB;;;;;;;;;;;;;GC5B3BW,KAAKC,GAAE,KAAKC,EAAM,GAElBC,KAAgB,2BAUhBC,KAAe,KAERC,KAAgB,CAAC;AAAA,EAC5B,OAAAxe;AAAA,EACA,eAAAye;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAvhB,IAAQmhB;AACV,MAA0B;AACxB,QAAMK,IAAU,MAAM;AACpB,UAAMC,IAAiB,KAAK,IAAI7e,GAAO0e,IAAkB,IAAI1e,CAAK;AAElE,QAAImW,IAAS2I;AAEb,QAAI,CAACC,EAAe,QAAO;AAC3B,QAAIF,MAAmB,EAAG,QAAO;AAEjC,IAAIG,MAA2B,MACzBF,MAAuB,MAAG3I,IAAS,IACnC2I,MAAuB,MAAG3I,IAAS;AAGzC,UAAM8I,IAAO,KAAK,KAAK9I,KAAU;AAEjC,WAAI8I,IAAO,OAAa,KACpBA,IAAO,MAAY,MAEhB;AAAA,EACT,GAEMC,IAAalf,MAAUye,GACvBK,IAAqB,KAAK,IAAIL,IAAgBze,CAAK,GACnDgf,IAAyB,KAAK,IAAIP,GAAeC,IAAkB,IAAID,CAAa,GACpFU,IAAa,KAAK,IAAI,IAAIH,GAAwB,CAAC,GACnDD,IAAgBD,IAAqBK,GACrCC,IAAOV,IAAkB,IAAI,MAAME,EAAA;AAEzC,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWlB,GAAGG,EAAa;AAAA,MAC3B,iBAAeY;AAAA,MACf,sBAAoBP;AAAA,MACpB,OAAO;AAAA,QACL,YAAYI,IAAgB,8BAA8B;AAAA,QAC1D,OAAOG,IAAa,8BAA8B,wBAAwBE,CAAI;AAAA,QAC9E,QAAQ,wBAAwBA,CAAI;AAAA;AAAA,QAEnC,mBAAoB,GAAGhiB,CAAK;AAAA,MAAA;AAAA,IAC/B;AAAA,EAAA;AAGN,GC5DakiB,KAAc,CACzBniB,GACAoiB,MACoB;AACpB,QAAMC,IAAqB9B,GAAO,EAAK,GACjC,CAAC+B,GAAmBC,CAAoB,IAAI7B,GAAS,EAAK,GAC1D8B,IAAWxiB,GAAU,QAAA,GAAW,UAEhCyiB,IAAiB5B,GAAY,MAAM;AACvC,QAAI,CAAC2B,EAAU;AAGf,KADmBA,EAAS,UAAA,IAAcA,EAAS,OAAOA,EAAS,MACnE;AAAA,EACF,GAAG,CAACA,CAAQ,CAAC,GAEPE,IAAgB,MAAM;AAC1B,IAAKF,KACLA,EAAS,MAAA;AAAA,EACX;AAEA,SAAA1B,GAAU,MAAM;AACd,IAAK0B,MAELD,EAAqBC,EAAS,WAAW,GAEzCxiB,EACG,GAAG,iBAAiB,MAAMuiB,EAAqB,EAAI,CAAC,EACpD,GAAG,iBAAiB,MAAMA,EAAqB,EAAK,CAAC,EACrD,GAAG,UAAU,MAAMA,EAAqBC,EAAS,UAAA,CAAW,CAAC;AAAA,EAClE,GAAG,CAACA,GAAUxiB,CAAQ,CAAC,GAEvB8gB,GAAU,MAAM;AACd,QAAI,CAAC0B,KAAY,CAACJ,GAAc,QAAS;AAEzC,UAAMO,IAAW,IAAI;AAAA,MACnB,CAAC,CAAChT,CAAK,MAAM;AACX,QAAKA,EAAM,iBAML0S,EAAmB,YACrBA,EAAmB,UAAU,IAC7BG,EAAS,KAAA,KAPPA,EAAS,gBACXH,EAAmB,UAAU,IAC7BG,EAAS,KAAA;AAAA,MAQf;AAAA,MACA,EAAE,WAAW,EAAA;AAAA,IAAE,GAGXI,IAAKR,EAAa;AACxB,WAAAO,EAAS,QAAQC,CAAE,GACZ,MAAMD,EAAS,WAAA;AAAA,EACxB,GAAG,CAACH,GAAUJ,CAAY,CAAC,GAEpB;AAAA,IACL,WAAWE;AAAA,IACX,QAAQG;AAAA,IACR,OAAOC;AAAA,EAAA;AAEX,GC7DaG,KAAoB,CAAC7iB,MAA8D;AAC9F,QAAM,CAACshB,GAAewB,CAAgB,IAAIpC,GAAS,CAAC,GAC9C,CAACxgB,GAAa6iB,CAAc,IAAIrC,GAAmB,CAAA,CAAE,GAErDsC,IAAmBnC;AAAA,IACvB,CAAChe,MAAkB;AACjB,MAAK7C,KACLA,EAAS,SAAS6C,CAAK;AAAA,IACzB;AAAA,IACA,CAAC7C,CAAQ;AAAA,EAAA,GAGLijB,IAASpC,GAAY,CAAC7gB,MAAgC;AAC1D,IAAA+iB,EAAe/iB,EAAS,gBAAgB;AAAA,EAC1C,GAAG,CAAA,CAAE,GAECkjB,IAAWrC,GAAY,CAAC7gB,MAAgC;AAC5D,IAAA8iB,EAAiB9iB,EAAS,oBAAoB;AAAA,EAChD,GAAG,CAAA,CAAE;AAEL,SAAA8gB,GAAU,MAAM;AACd,IAAK9gB,MAELijB,EAAOjjB,CAAQ,GACfkjB,EAASljB,CAAQ,GACjBA,EAAS,GAAG,UAAUijB,CAAM,EAAE,GAAG,UAAUC,CAAQ,EAAE,GAAG,UAAUA,CAAQ;AAAA,EAC5E,GAAG,CAACljB,GAAUijB,GAAQC,CAAQ,CAAC,GAExB;AAAA,IACL,eAAA5B;AAAA,IACA,aAAAphB;AAAA,IACA,kBAAA8iB;AAAA,EAAA;AAEJ,GCxCMG,KAAuB,oCAEvBC,KAA0B,MAC1B,OAAO,SAAW,MACb,KAGF,OAAO,WAAWD,EAAoB,EAAE,SAGpCE,KAA0B,MAAM;AAC3C,QAAM,CAACC,GAAsBC,CAAuB,IAAI7C,GAAS0C,EAAuB;AAExF,SAAAtC,GAAU,MAAM;AACd,QAAI,OAAO,SAAW;AACpB;AAGF,UAAM0C,IAAiB,OAAO,WAAWL,EAAoB,GACvDM,IAAmB,MAAM;AAC7B,MAAAF,EAAwBC,EAAe,OAAO;AAAA,IAChD;AAEA,WAAAC,EAAA,GAEAD,EAAe,iBAAiB,UAAUC,CAAgB,GAEnD,MAAM;AACX,MAAAD,EAAe,oBAAoB,UAAUC,CAAgB;AAAA,IAC/D;AAAA,EACF,GAAG,CAAA,CAAE,GAEEH;AACT,GCvBaI,KAAqB,CAChC1jB,GACAoiB,GACAI,MAC2B;AAC3B,QAAM,CAACmB,GAAiBC,CAAkB,IAAIlD,GAAS,EAAI,GACrD,CAACmD,GAAiBC,CAAkB,IAAIpD,GAAS,EAAI,GAErDqD,IAAoBlD,GAAY,MAAM;AAC1C,IAAK7gB,MACLA,EAAS,WAAA,GACTwiB,EAAS,MAAA;AAAA,EACX,GAAG,CAACxiB,GAAUwiB,CAAQ,CAAC,GAEjBwB,IAAoBnD,GAAY,MAAM;AAC1C,IAAK7gB,MACLA,EAAS,WAAA,GACTwiB,EAAS,MAAA;AAAA,EACX,GAAG,CAACxiB,GAAUwiB,CAAQ,CAAC,GAEjBU,IAAWrC,GAAY,CAAC7gB,MAAgC;AAC5D,IAAA4jB,EAAmB,CAAC5jB,EAAS,eAAe,GAC5C8jB,EAAmB,CAAC9jB,EAAS,eAAe;AAAA,EAC9C,GAAG,CAAA,CAAE,GAECikB,IAAgBpD;AAAA,IACpB,CAAClhB,MAAqB;AACpB,cAAQA,EAAE,KAAA;AAAA,QACR,KAAK;AACH,UAAAokB,EAAA,GAEApkB,EAAE,QAAQ,iBAAiB,MAAA;AAC3B;AAAA,QAEF,KAAK;AACH,UAAAqkB,EAAA,GAEArkB,EAAE,QAAQ,aAAa,MAAA;AACvB;AAAA,MAGA;AAAA,IAEN;AAAA,IACA,CAACokB,GAAmBC,CAAiB;AAAA,EAAA;AAGvC,SAAAlD,GAAU,MAAM;AACd,UAAM9R,IAAYoT,EAAa;AAE/B,QAAKpiB,KACAgP;AAEL,aAAAkU,EAASljB,CAAQ,GACjBA,EAAS,GAAG,UAAUkjB,CAAQ,EAAE,GAAG,UAAUA,CAAQ,GAErDlU,EAAU,iBAAiB,WAAWiV,CAAa,GAE5C,MAAM;AACX,QAAAjV,EAAU,oBAAoB,WAAWiV,CAAa;AAAA,MACxD;AAAA,EACF,GAAG,CAACjkB,GAAUkjB,GAAUd,GAAc6B,CAAa,CAAC,GAE7C;AAAA,IACL,iBAAAN;AAAA,IACA,iBAAAE;AAAA,IACA,mBAAAE;AAAA,IACA,mBAAAC;AAAA,EAAA;AAEJ,GC/DMhD,KAAKC,GAAE,KAAKC,EAAM,GAmDlBC,KAAgB,mBAET+C,KAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,SAAA3jB,IAAU,CAAA;AAAA,EACV,UAAA4jB;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,GAAGC;AACL,MAAqB;AACnB,QAAMlC,IAAe7B,GAAuB,IAAI,GAC1CgE,IAAehE,GAAsB,IAAI,GAEzCiE,IAAkB,OAAOF,EAAM,YAAa,YAAY,KAAKA,EAAM,YAAY,CAAA,GAC/EG,IAAUzD,GAAGG,IAAegD,CAAS,GACrCb,IAAuBD,GAAA,GAEvBqB,IAAeC;AAAA,IACnBrB,IAAuB,EAAE,GAAG9iB,GAAS,UAAU,MAAMA;AAAA,EAAA,GAGjD2D,IAA6B,CAAA;AAEnC,EAAImgB,EAAM,YACRngB,EAAQ;AAAA,IACN7D,GAAS;AAAA,MACP,GAAGkkB;AAAA,MACH,MAAMlB;AAAA,IAAA,CACP;AAAA,EAAA;AAIL,QAAM,CAACsB,GAAU5kB,CAAQ,IAAIqgB,GAAiB,EAAE,OAAO,SAAS,GAAGqE,EAAA,GAAgBvgB,CAAO,GACpFqe,IAAWL,GAAYniB,GAAUoiB,CAAY,GAC7CyC,IAAUnB,GAAmB1jB,GAAUoiB,GAAcI,CAAQ,GAE7D,EAAE,eAAAlB,GAAe,aAAAphB,MAAgB2iB,GAAkB7iB,CAAQ,GAE3D8kB,IAAe,MACZC,GAAM,SAAS,QAAQX,CAAQ,EAAE,IAAI,CAACjN,MACpC4N,GAAM,SAAS,KAAK5N,CAAK,CACjC,GAGG6N,IAAiB,yBAElB,OAAA,EAAI,WAAWhE,GAAG,GAAGG,EAAa,YAAY,GAC5C,UAAA;AAAA,IAAAmD,EAAM,sBAAsB,MAC3B,gBAAAW,GAAAC,IAAA,EACE,UAAA;AAAA,MAAA,gBAAAhD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWlB,GAAG,GAAGG,EAAa,mBAAmB;AAAA,UACjD,oBAAkBjhB,EAAY,SAAS;AAAA,UACvC,cAAY,GAAGokB,EAAM,WAAW,SAAS,SAAS,IAAIhD,IAAgB,CAAC;AAAA,UACvE,aAAU;AAAA,UAET,UAAAphB,EAAY,IAAI,CAAC4F,GAAG8S,GAAGuM,MAEpB,gBAAAjD;AAAA,YAACb;AAAA,YAAA;AAAA,cAEC,OAAOzI;AAAA,cACP,KAAK2L;AAAA,cACL,cAAc/B,EAAS;AAAA,cACvB,iBAAiB2C,EAAI;AAAA,cACrB,eAAA7D;AAAA,cACA,OAAOkD,EAAgB;AAAA,YAAA;AAAA,YANlB5L;AAAA,UAAA,CASV;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF0L,EAAM,YACL,gBAAApC;AAAA,QAACkD;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,cACE5C,EAAS,YACL8B,EAAM,WAAW,SAAS,QAC1BA,EAAM,WAAW,SAAS;AAAA,UAEhC,SAAS9B,EAAS;AAAA,UAClB,UAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAWxB,GAAG,GAAGG,EAAa,yBAAyB;AAAA,UAEtD,UAAAqB,EAAS,YAAY,gBAAAN,EAACmD,IAAA,EAAY,MAAK,MAAK,IAAK,gBAAAnD,EAACoD,IAAA,EAAe,MAAK,KAAA,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IAC9E,GAEJ;AAAA,uBAGD,OAAA,EAAI,WAAWtE,GAAG,GAAGG,EAAa,WAAW,GAC5C,UAAA;AAAA,MAAA,gBAAAe;AAAA,QAACkD;AAAA,QAAA;AAAA,UACC,UAAQ;AAAA,UACR,cAAYd,EAAM,WAAW;AAAA,UAC7B,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,SAASO,EAAQ;AAAA,UACjB,UAAUA,EAAQ;AAAA,UAElB,UAAA,gBAAA3C,EAACqD,IAAA,EAAc,MAAK,KAAA,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAE3B,gBAAArD;AAAA,QAACkD;AAAA,QAAA;AAAA,UACC,UAAQ;AAAA,UACR,cAAYd,EAAM,WAAW;AAAA,UAC7B,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,SAASO,EAAQ;AAAA,UACjB,UAAUA,EAAQ;AAAA,UAElB,UAAA,gBAAA3C,EAACsD,IAAA,EAAe,MAAK,KAAA,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IAC5B,EAAA,CACF;AAAA,EAAA,GACF,GAIEC,IAAgB,KAAK,IAAI,GAAG,KAAK,IAAI,IAAInB,EAAM,oBAAoB,CAAC,CAAC;AAE3E,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK7C;AAAA,MACL,WAAWqC;AAAA,MACX,mBAAiB,EAAQjkB,GAAS;AAAA,MAClC,OAAO;AAAA;AAAA,QAEJ,OAAQkkB,EAAa,gBAAgB;AAAA,QACrC,aAAce;AAAA,QACd,mBAAoB,wBAAwBnB,EAAM,gBAAgB,GAAG;AAAA,MAAA;AAAA,MAGvE,UAAA;AAAA,QAAAD,MAAwB,SAASW,EAAA;AAAA,QAClC,gBAAA9C,EAAC,SAAI,WAAWlB,GAAG,GAAGG,EAAa,YAAY,GAAG,KAAKyD,GACrD,4BAAC,MAAA,EAAG,WAAW5D,GAAG,GAAGG,EAAa,aAAa,GAAI,UAAA2D,EAAA,GAAe,EAAA,CACpE;AAAA,QACCT,MAAwB,YAAYW,EAAA;AAAA,MAAe;AAAA,IAAA;AAAA,EAAA;AAG1D,GAEMU,KAAgB,CAAC,EAAE,UAAAtB,QAChB,gBAAAlC,EAAC,QAAG,WAAWlB,GAAG,GAAGG,EAAa,SAAS,GAAI,UAAAiD,GAAS;AAGjEF,GAAS,cAAc;AAEvBA,GAAS,QAAQwB;AAEjB,SAASf,GAAgBnkB,IAAoC,IAA8B;AACzF,QAAMkkB,IAAe,EAAE,GAAGlkB,EAAA;AAE1B,MAAI,OAAO,SAAW,OAAe,CAACA,EAAQ;AAC5C,WAAOkkB;AAGT,aAAW3gB,KAAOvD,EAAQ;AACxB,WAAO,OAAOkkB,GAAc,OAAO,WAAW3gB,CAAG,EAAE,UAAUvD,EAAQ,YAAYuD,CAAG,IAAI,CAAA,CAAE;AAG5F,SAAO2gB;AACT;","x_google_ignoreList":[2,3,4,5]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const j=require("react/jsx-runtime"),L=require("react"),_t=require("./button-DmybVApa.js"),gn=require("./arrow-left.es-CCWJyrcQ.js"),mn=require("./arrow-right.es-eH-IgGi9.js"),Qt=require("./icon-DNHpBTHs-faYHqTXU.js"),Jt=require("./bind-DeUYJ6m9.js"),yn={name:"play-filled",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 12 5.5 19.794V4.206L19 12Z"/><path fill-rule="evenodd" d="M19.875 12a.875.875 0 0 1-.438.758l-13.5 7.794a.875.875 0 0 1-1.312-.758V4.206a.875.875 0 0 1 1.313-.758l13.5 7.794c.27.156.437.445.437.758Zm-13.5-6.279V18.28L17.25 12 6.375 5.721Z" clip-rule="evenodd"/></svg>',keywords:["play-filled"],category:"action"},Xt=t=>j.jsx(Qt.b,{...t,svg:yn});Xt.displayName="IconPlayFilled";const hn={name:"tv-pause",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 20h-3V4h3v16ZM8 20H5V4h3v16Z"/><path fill-rule="evenodd" d="M4.1 4a.9.9 0 0 1 .9-.9h3a.9.9 0 0 1 .9.9v16a.9.9 0 0 1-.9.9H5a.9.9 0 0 1-.9-.9V4Zm1.8.9v14.2h1.2V4.9H5.9Zm9.2-.9a.9.9 0 0 1 .9-.9h3a.9.9 0 0 1 .9.9v16a.9.9 0 0 1-.9.9h-3a.9.9 0 0 1-.9-.9V4Zm1.8.9v14.2h1.2V4.9h-1.2Z" clip-rule="evenodd"/></svg>',keywords:["tv-pause"],category:"action"},Yt=t=>j.jsx(Qt.b,{...t,svg:hn});Yt.displayName="IconTvPause";const Sn={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function bn(t,n){const e=t.scrollSnapList();return typeof n=="number"?e.map(()=>n):n(e,t)}function vn(t,n){const e=t.rootNode();return n&&n(e)||e}function Dt(t={}){let n,e,i,c,o=null,s=0,u=!1,r=!1,a=!1,g=!1;function l(D,A){e=D;const{mergeOptions:R,optionsAtMedia:q}=A,U=R(Sn,Dt.globalOptions),Z=R(U,t);if(n=q(Z),e.scrollSnapList().length<=1)return;g=n.jump,i=!1,c=bn(e,n.delay);const{eventStore:Q,ownerDocument:$}=e.internalEngine(),X=!!e.internalEngine().options.watchDrag,Y=vn(e,n.rootNode);Q.add($,"visibilitychange",d),X&&e.on("pointerDown",b),X&&!n.stopOnInteraction&&e.on("pointerUp",E),n.stopOnMouseEnter&&Q.add(Y,"mouseenter",_),n.stopOnMouseEnter&&!n.stopOnInteraction&&Q.add(Y,"mouseleave",I),n.stopOnFocusIn&&e.on("slideFocusStart",y),n.stopOnFocusIn&&!n.stopOnInteraction&&Q.add(e.containerNode(),"focusout",p),n.playOnInit&&p()}function m(){e.off("pointerDown",b).off("pointerUp",E).off("slideFocusStart",y),y(),i=!0,u=!1}function S(){const{ownerWindow:D}=e.internalEngine();D.clearTimeout(s),s=D.setTimeout(T,c[e.selectedScrollSnap()]),o=new Date().getTime(),e.emit("autoplay:timerset")}function f(){const{ownerWindow:D}=e.internalEngine();D.clearTimeout(s),s=0,o=null,e.emit("autoplay:timerstopped")}function p(){if(!i){if(h()){a=!0;return}u||e.emit("autoplay:play"),S(),u=!0}}function y(){i||(u&&e.emit("autoplay:stop"),f(),u=!1)}function d(){if(h())return a=u,y();a&&p()}function h(){const{ownerDocument:D}=e.internalEngine();return D.visibilityState==="hidden"}function b(){r||y()}function E(){r||p()}function _(){r=!0,y()}function I(){r=!1,p()}function x(D){typeof D<"u"&&(g=D),p()}function w(){u&&y()}function O(){u&&p()}function k(){return u}function T(){const{index:D}=e.internalEngine(),A=D.clone().add(1).get(),R=e.scrollSnapList().length-1,q=n.stopOnLastSnap&&A===R;if(e.canScrollNext()?e.scrollNext(g):e.scrollTo(0,g),e.emit("autoplay:select"),q)return y();p()}function B(){if(!o)return null;const D=c[e.selectedScrollSnap()],A=new Date().getTime()-o;return D-A}return{name:"autoplay",options:t,init:l,destroy:m,play:x,stop:w,reset:O,isPlaying:k,timeUntilNext:B}}Dt.globalOptions=void 0;function xn(t){return Object.prototype.toString.call(t)==="[object Object]"}function Gt(t){return xn(t)||Array.isArray(t)}function wn(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Mt(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!==i.length)return!1;const c=JSON.stringify(Object.keys(t.breakpoints||{})),o=JSON.stringify(Object.keys(n.breakpoints||{}));return c!==o?!1:e.every(s=>{const u=t[s],r=n[s];return typeof u=="function"?`${u}`==`${r}`:!Gt(u)||!Gt(r)?u===r:Mt(u,r)})}function Ut(t){return t.concat().sort((n,e)=>n.name>e.name?1:-1).map(n=>n.options)}function En(t,n){if(t.length!==n.length)return!1;const e=Ut(t),i=Ut(n);return e.every((c,o)=>{const s=i[o];return Mt(c,s)})}function Pt(t){return typeof t=="number"}function Ot(t){return typeof t=="string"}function vt(t){return typeof t=="boolean"}function Zt(t){return Object.prototype.toString.call(t)==="[object Object]"}function C(t){return Math.abs(t)}function Ct(t){return Math.sign(t)}function pt(t,n){return C(t-n)}function In(t,n){if(t===0||n===0||C(t)<=C(n))return 0;const e=pt(C(t),C(n));return C(e/t)}function Ln(t){return Math.round(t*100)/100}function gt(t){return mt(t).map(Number)}function K(t){return t[ht(t)]}function ht(t){return Math.max(0,t.length-1)}function kt(t,n){return n===ht(t)}function Kt(t,n=0){return Array.from(Array(t),(e,i)=>n+i)}function mt(t){return Object.keys(t)}function Wt(t,n){return[t,n].reduce((e,i)=>(mt(i).forEach(c=>{const o=e[c],s=i[c],u=Zt(o)&&Zt(s);e[c]=u?Wt(o,s):s}),e),{})}function Tt(t,n){return typeof n.MouseEvent<"u"&&t instanceof n.MouseEvent}function _n(t,n){const e={start:i,center:c,end:o};function i(){return 0}function c(r){return o(r)/2}function o(r){return n-r}function s(r,a){return Ot(t)?e[t](r):t(n,r,a)}return{measure:s}}function yt(){let t=[];function n(c,o,s,u={passive:!0}){let r;if("addEventListener"in c)c.addEventListener(o,s,u),r=()=>c.removeEventListener(o,s,u);else{const a=c;a.addListener(s),r=()=>a.removeListener(s)}return t.push(r),i}function e(){t=t.filter(c=>c())}const i={add:n,clear:e};return i}function On(t,n,e,i){const c=yt(),o=1e3/60;let s=null,u=0,r=0;function a(){c.add(t,"visibilitychange",()=>{t.hidden&&f()})}function g(){S(),c.clear()}function l(y){if(!r)return;s||(s=y,e(),e());const d=y-s;for(s=y,u+=d;u>=o;)e(),u-=o;const h=u/o;i(h),r&&(r=n.requestAnimationFrame(l))}function m(){r||(r=n.requestAnimationFrame(l))}function S(){n.cancelAnimationFrame(r),s=null,u=0,r=0}function f(){s=null,u=0}return{init:a,destroy:g,start:m,stop:S,update:e,render:i}}function Tn(t,n){const e=n==="rtl",i=t==="y",c=i?"y":"x",o=i?"x":"y",s=!i&&e?-1:1,u=g(),r=l();function a(f){const{height:p,width:y}=f;return i?p:y}function g(){return i?"top":e?"right":"left"}function l(){return i?"bottom":e?"left":"right"}function m(f){return f*s}return{scroll:c,cross:o,startEdge:u,endEdge:r,measureSize:a,direction:m}}function ct(t=0,n=0){const e=C(t-n);function i(a){return a<t}function c(a){return a>n}function o(a){return i(a)||c(a)}function s(a){return o(a)?i(a)?t:n:a}function u(a){return e?a-e*Math.ceil((a-n)/e):a}return{length:e,max:n,min:t,constrain:s,reachedAny:o,reachedMax:c,reachedMin:i,removeOffset:u}}function tn(t,n,e){const{constrain:i}=ct(0,t),c=t+1;let o=s(n);function s(m){return e?C((c+m)%c):i(m)}function u(){return o}function r(m){return o=s(m),l}function a(m){return g().set(u()+m)}function g(){return tn(t,u(),e)}const l={get:u,set:r,add:a,clone:g};return l}function Dn(t,n,e,i,c,o,s,u,r,a,g,l,m,S,f,p,y,d,h){const{cross:b,direction:E}=t,_=["INPUT","SELECT","TEXTAREA"],I={passive:!1},x=yt(),w=yt(),O=ct(50,225).constrain(S.measure(20)),k={mouse:300,touch:400},T={mouse:500,touch:600},B=f?43:25;let G=!1,D=0,A=0,R=!1,q=!1,U=!1,Z=!1;function Q(v){if(!h)return;function M(V){(vt(h)||h(v,V))&<(V)}const N=n;x.add(N,"dragstart",V=>V.preventDefault(),I).add(N,"touchmove",()=>{},I).add(N,"touchend",()=>{}).add(N,"touchstart",M).add(N,"mousedown",M).add(N,"touchcancel",F).add(N,"contextmenu",F).add(N,"click",tt,!0)}function $(){x.clear(),w.clear()}function X(){const v=Z?e:n;w.add(v,"touchmove",z,I).add(v,"touchend",F).add(v,"mousemove",z,I).add(v,"mouseup",F)}function Y(v){const M=v.nodeName||"";return _.includes(M)}function W(){return(f?T:k)[Z?"mouse":"touch"]}function at(v,M){const N=l.add(Ct(v)*-1),V=g.byDistance(v,!f).distance;return f||C(v)<O?V:y&&M?V*.5:g.byIndex(N.get(),0).distance}function lt(v){const M=Tt(v,i);Z=M,U=f&&M&&!v.buttons&&G,G=pt(c.get(),s.get())>=2,!(M&&v.button!==0)&&(Y(v.target)||(R=!0,o.pointerDown(v),a.useFriction(0).useDuration(0),c.set(s),X(),D=o.readPoint(v),A=o.readPoint(v,b),m.emit("pointerDown")))}function z(v){if(!Tt(v,i)&&v.touches.length>=2)return F(v);const N=o.readPoint(v),V=o.readPoint(v,b),J=pt(N,D),nt=pt(V,A);if(!q&&!Z&&(!v.cancelable||(q=J>nt,!q)))return F(v);const rt=o.pointerMove(v);J>p&&(U=!0),a.useFriction(.3).useDuration(.75),u.start(),c.add(E(rt)),v.preventDefault()}function F(v){const N=g.byDistance(0,!1).index!==l.get(),V=o.pointerUp(v)*W(),J=at(E(V),N),nt=In(V,J),rt=B-10*nt,et=d+nt/50;q=!1,R=!1,w.clear(),a.useDuration(rt).useFriction(et),r.distance(J,!f),Z=!1,m.emit("pointerUp")}function tt(v){U&&(v.stopPropagation(),v.preventDefault(),U=!1)}function H(){return R}return{init:Q,destroy:$,pointerDown:H}}function Mn(t,n){let i,c;function o(l){return l.timeStamp}function s(l,m){const f=`client${(m||t.scroll)==="x"?"X":"Y"}`;return(Tt(l,n)?l:l.touches[0])[f]}function u(l){return i=l,c=l,s(l)}function r(l){const m=s(l)-s(c),S=o(l)-o(i)>170;return c=l,S&&(i=l),m}function a(l){if(!i||!c)return 0;const m=s(c)-s(i),S=o(l)-o(i),f=o(l)-o(c)>170,p=m/S;return S&&!f&&C(p)>.1?p:0}return{pointerDown:u,pointerMove:r,pointerUp:a,readPoint:s}}function Pn(){function t(e){const{offsetTop:i,offsetLeft:c,offsetWidth:o,offsetHeight:s}=e;return{top:i,right:c+o,bottom:i+s,left:c,width:o,height:s}}return{measure:t}}function Cn(t){function n(i){return t*(i/100)}return{measure:n}}function kn(t,n,e,i,c,o,s){const u=[t].concat(i);let r,a,g=[],l=!1;function m(y){return c.measureSize(s.measure(y))}function S(y){if(!o)return;a=m(t),g=i.map(m);function d(h){for(const b of h){if(l)return;const E=b.target===t,_=i.indexOf(b.target),I=E?a:g[_],x=m(E?t:i[_]);if(C(x-I)>=.5){y.reInit(),n.emit("resize");break}}}r=new ResizeObserver(h=>{(vt(o)||o(y,h))&&d(h)}),e.requestAnimationFrame(()=>{u.forEach(h=>r.observe(h))})}function f(){l=!0,r&&r.disconnect()}return{init:S,destroy:f}}function Nn(t,n,e,i,c,o){let s=0,u=0,r=c,a=o,g=t.get(),l=0;function m(){const I=i.get()-t.get(),x=!r;let w=0;return x?(s=0,e.set(i),t.set(i),w=I):(e.set(t),s+=I/r,s*=a,g+=s,t.add(s),w=g-l),u=Ct(w),l=g,_}function S(){const I=i.get()-n.get();return C(I)<.001}function f(){return r}function p(){return u}function y(){return s}function d(){return b(c)}function h(){return E(o)}function b(I){return r=I,_}function E(I){return a=I,_}const _={direction:p,duration:f,velocity:y,seek:m,settled:S,useBaseFriction:h,useBaseDuration:d,useFriction:E,useDuration:b};return _}function jn(t,n,e,i,c){const o=c.measure(10),s=c.measure(50),u=ct(.1,.99);let r=!1;function a(){return!(r||!t.reachedAny(e.get())||!t.reachedAny(n.get()))}function g(S){if(!a())return;const f=t.reachedMin(n.get())?"min":"max",p=C(t[f]-n.get()),y=e.get()-n.get(),d=u.constrain(p/s);e.subtract(y*d),!S&&C(y)<o&&(e.set(t.constrain(e.get())),i.useDuration(25).useBaseFriction())}function l(S){r=!S}return{shouldConstrain:a,constrain:g,toggleActive:l}}function Bn(t,n,e,i,c){const o=ct(-n+t,0),s=l(),u=g(),r=m();function a(f,p){return pt(f,p)<=1}function g(){const f=s[0],p=K(s),y=s.lastIndexOf(f),d=s.indexOf(p)+1;return ct(y,d)}function l(){return e.map((f,p)=>{const{min:y,max:d}=o,h=o.constrain(f),b=!p,E=kt(e,p);return b?d:E||a(y,h)?y:a(d,h)?d:h}).map(f=>parseFloat(f.toFixed(3)))}function m(){if(n<=t+c)return[o.max];if(i==="keepSnaps")return s;const{min:f,max:p}=u;return s.slice(f,p)}return{snapsContained:r,scrollContainLimit:u}}function An(t,n,e){const i=n[0],c=e?i-t:K(n);return{limit:ct(c,i)}}function Fn(t,n,e,i){const o=n.min+.1,s=n.max+.1,{reachedMin:u,reachedMax:r}=ct(o,s);function a(m){return m===1?r(e.get()):m===-1?u(e.get()):!1}function g(m){if(!a(m))return;const S=t*(m*-1);i.forEach(f=>f.add(S))}return{loop:g}}function Vn(t){const{max:n,length:e}=t;function i(o){const s=o-n;return e?s/-e:0}return{get:i}}function zn(t,n,e,i,c){const{startEdge:o,endEdge:s}=t,{groupSlides:u}=c,r=l().map(n.measure),a=m(),g=S();function l(){return u(i).map(p=>K(p)[s]-p[0][o]).map(C)}function m(){return i.map(p=>e[o]-p[o]).map(p=>-C(p))}function S(){return u(a).map(p=>p[0]).map((p,y)=>p+r[y])}return{snaps:a,snapsAligned:g}}function Rn(t,n,e,i,c,o){const{groupSlides:s}=c,{min:u,max:r}=i,a=g();function g(){const m=s(o),S=!t||n==="keepSnaps";return e.length===1?[o]:S?m:m.slice(u,r).map((f,p,y)=>{const d=!p,h=kt(y,p);if(d){const b=K(y[0])+1;return Kt(b)}if(h){const b=ht(o)-K(y)[0]+1;return Kt(b,K(y)[0])}return f})}return{slideRegistry:a}}function qn(t,n,e,i,c){const{reachedAny:o,removeOffset:s,constrain:u}=i;function r(f){return f.concat().sort((p,y)=>C(p)-C(y))[0]}function a(f){const p=t?s(f):u(f),y=n.map((h,b)=>({diff:g(h-p,0),index:b})).sort((h,b)=>C(h.diff)-C(b.diff)),{index:d}=y[0];return{index:d,distance:p}}function g(f,p){const y=[f,f+e,f-e];if(!t)return f;if(!p)return r(y);const d=y.filter(h=>Ct(h)===p);return d.length?r(d):K(y)-e}function l(f,p){const y=n[f]-c.get(),d=g(y,p);return{index:f,distance:d}}function m(f,p){const y=c.get()+f,{index:d,distance:h}=a(y),b=!t&&o(y);if(!p||b)return{index:d,distance:f};const E=n[d]-h,_=f+g(E,0);return{index:d,distance:_}}return{byDistance:m,byIndex:l,shortcut:g}}function $n(t,n,e,i,c,o,s){function u(l){const m=l.distance,S=l.index!==n.get();o.add(m),m&&(i.duration()?t.start():(t.update(),t.render(1),t.update())),S&&(e.set(n.get()),n.set(l.index),s.emit("select"))}function r(l,m){const S=c.byDistance(l,m);u(S)}function a(l,m){const S=n.clone().set(l),f=c.byIndex(S.get(),m);u(f)}return{distance:r,index:a}}function Hn(t,n,e,i,c,o,s,u){const r={passive:!0,capture:!0};let a=0;function g(S){if(!u)return;function f(p){if(new Date().getTime()-a>10)return;s.emit("slideFocusStart"),t.scrollLeft=0;const h=e.findIndex(b=>b.includes(p));Pt(h)&&(c.useDuration(0),i.index(h,0),s.emit("slideFocus"))}o.add(document,"keydown",l,!1),n.forEach((p,y)=>{o.add(p,"focus",d=>{(vt(u)||u(S,d))&&f(y)},r)})}function l(S){S.code==="Tab"&&(a=new Date().getTime())}return{init:g}}function dt(t){let n=t;function e(){return n}function i(r){n=s(r)}function c(r){n+=s(r)}function o(r){n-=s(r)}function s(r){return Pt(r)?r:r.get()}return{get:e,set:i,add:c,subtract:o}}function nn(t,n){const e=t.scroll==="x"?s:u,i=n.style;let c=null,o=!1;function s(m){return`translate3d(${m}px,0px,0px)`}function u(m){return`translate3d(0px,${m}px,0px)`}function r(m){if(o)return;const S=Ln(t.direction(m));S!==c&&(i.transform=e(S),c=S)}function a(m){o=!m}function g(){o||(i.transform="",n.getAttribute("style")||n.removeAttribute("style"))}return{clear:g,to:r,toggleActive:a}}function Gn(t,n,e,i,c,o,s,u,r){const g=gt(c),l=gt(c).reverse(),m=d().concat(h());function S(x,w){return x.reduce((O,k)=>O-c[k],w)}function f(x,w){return x.reduce((O,k)=>S(O,w)>0?O.concat([k]):O,[])}function p(x){return o.map((w,O)=>({start:w-i[O]+.5+x,end:w+n-.5+x}))}function y(x,w,O){const k=p(w);return x.map(T=>{const B=O?0:-e,G=O?e:0,D=O?"end":"start",A=k[T][D];return{index:T,loopPoint:A,slideLocation:dt(-1),translate:nn(t,r[T]),target:()=>u.get()>A?B:G}})}function d(){const x=s[0],w=f(l,x);return y(w,e,!1)}function h(){const x=n-s[0]-1,w=f(g,x);return y(w,-e,!0)}function b(){return m.every(({index:x})=>{const w=g.filter(O=>O!==x);return S(w,n)<=.1})}function E(){m.forEach(x=>{const{target:w,translate:O,slideLocation:k}=x,T=w();T!==k.get()&&(O.to(T),k.set(T))})}function _(){m.forEach(x=>x.translate.clear())}return{canLoop:b,clear:_,loop:E,loopPoints:m}}function Un(t,n,e){let i,c=!1;function o(r){if(!e)return;function a(g){for(const l of g)if(l.type==="childList"){r.reInit(),n.emit("slidesChanged");break}}i=new MutationObserver(g=>{c||(vt(e)||e(r,g))&&a(g)}),i.observe(t,{childList:!0})}function s(){i&&i.disconnect(),c=!0}return{init:o,destroy:s}}function Zn(t,n,e,i){const c={};let o=null,s=null,u,r=!1;function a(){u=new IntersectionObserver(f=>{r||(f.forEach(p=>{const y=n.indexOf(p.target);c[y]=p}),o=null,s=null,e.emit("slidesInView"))},{root:t.parentElement,threshold:i}),n.forEach(f=>u.observe(f))}function g(){u&&u.disconnect(),r=!0}function l(f){return mt(c).reduce((p,y)=>{const d=parseInt(y),{isIntersecting:h}=c[d];return(f&&h||!f&&!h)&&p.push(d),p},[])}function m(f=!0){if(f&&o)return o;if(!f&&s)return s;const p=l(f);return f&&(o=p),f||(s=p),p}return{init:a,destroy:g,get:m}}function Kn(t,n,e,i,c,o){const{measureSize:s,startEdge:u,endEdge:r}=t,a=e[0]&&c,g=f(),l=p(),m=e.map(s),S=y();function f(){if(!a)return 0;const h=e[0];return C(n[u]-h[u])}function p(){if(!a)return 0;const h=o.getComputedStyle(K(i));return parseFloat(h.getPropertyValue(`margin-${r}`))}function y(){return e.map((h,b,E)=>{const _=!b,I=kt(E,b);return _?m[b]+g:I?m[b]+l:E[b+1][u]-h[u]}).map(C)}return{slideSizes:m,slideSizesWithGaps:S,startGap:g,endGap:l}}function Qn(t,n,e,i,c,o,s,u,r){const{startEdge:a,endEdge:g,direction:l}=t,m=Pt(e);function S(d,h){return gt(d).filter(b=>b%h===0).map(b=>d.slice(b,b+h))}function f(d){return d.length?gt(d).reduce((h,b,E)=>{const _=K(h)||0,I=_===0,x=b===ht(d),w=c[a]-o[_][a],O=c[a]-o[b][g],k=!i&&I?l(s):0,T=!i&&x?l(u):0,B=C(O-T-(w+k));return E&&B>n+r&&h.push(b),x&&h.push(d.length),h},[]).map((h,b,E)=>{const _=Math.max(E[b-1]||0);return d.slice(_,h)}):[]}function p(d){return m?S(d,e):f(d)}return{groupSlides:p}}function Jn(t,n,e,i,c,o,s){const{align:u,axis:r,direction:a,startIndex:g,loop:l,duration:m,dragFree:S,dragThreshold:f,inViewThreshold:p,slidesToScroll:y,skipSnaps:d,containScroll:h,watchResize:b,watchSlides:E,watchDrag:_,watchFocus:I}=o,x=2,w=Pn(),O=w.measure(n),k=e.map(w.measure),T=Tn(r,a),B=T.measureSize(O),G=Cn(B),D=_n(u,B),A=!l&&!!h,R=l||!!h,{slideSizes:q,slideSizesWithGaps:U,startGap:Z,endGap:Q}=Kn(T,O,k,e,R,c),$=Qn(T,B,y,l,O,k,Z,Q,x),{snaps:X,snapsAligned:Y}=zn(T,D,O,k,$),W=-K(X)+K(U),{snapsContained:at,scrollContainLimit:lt}=Bn(B,W,Y,h,x),z=A?at:Y,{limit:F}=An(W,z,l),tt=tn(ht(z),g,l),H=tt.clone(),P=gt(e),v=({dragHandler:ut,scrollBody:It,scrollBounds:Lt,options:{loop:St}})=>{St||Lt.constrain(ut.pointerDown()),It.seek()},M=({scrollBody:ut,translate:It,location:Lt,offsetLocation:St,previousLocation:rn,scrollLooper:cn,slideLooper:un,dragHandler:an,animation:ln,eventHandler:Vt,scrollBounds:fn,options:{loop:zt}},Rt)=>{const qt=ut.settled(),dn=!fn.shouldConstrain(),$t=zt?qt:qt&&dn,Ht=$t&&!an.pointerDown();Ht&&ln.stop();const pn=Lt.get()*Rt+rn.get()*(1-Rt);St.set(pn),zt&&(cn.loop(ut.direction()),un.loop()),It.to(St.get()),Ht&&Vt.emit("settle"),$t||Vt.emit("scroll")},N=On(i,c,()=>v(Et),ut=>M(Et,ut)),V=.68,J=z[tt.get()],nt=dt(J),rt=dt(J),et=dt(J),it=dt(J),ft=Nn(nt,et,rt,it,m,V),xt=qn(l,z,W,F,it),wt=$n(N,tt,H,ft,xt,it,s),Bt=Vn(F),At=yt(),on=Zn(n,e,s,p),{slideRegistry:Ft}=Rn(A,h,z,lt,$,P),sn=Hn(t,e,Ft,wt,ft,At,s,I),Et={ownerDocument:i,ownerWindow:c,eventHandler:s,containerRect:O,slideRects:k,animation:N,axis:T,dragHandler:Dn(T,t,i,c,it,Mn(T,c),nt,N,wt,ft,xt,tt,s,G,S,f,d,V,_),eventStore:At,percentOfView:G,index:tt,indexPrevious:H,limit:F,location:nt,offsetLocation:et,previousLocation:rt,options:o,resizeHandler:kn(n,s,c,e,T,b,w),scrollBody:ft,scrollBounds:jn(F,et,it,ft,G),scrollLooper:Fn(W,F,et,[nt,et,rt,it]),scrollProgress:Bt,scrollSnapList:z.map(Bt.get),scrollSnaps:z,scrollTarget:xt,scrollTo:wt,slideLooper:Gn(T,B,W,q,U,X,z,et,e),slideFocus:sn,slidesHandler:Un(n,s,E),slidesInView:on,slideIndexes:P,slideRegistry:Ft,slidesToScroll:$,target:it,translate:nn(T,n)};return Et}function Xn(){let t={},n;function e(a){n=a}function i(a){return t[a]||[]}function c(a){return i(a).forEach(g=>g(n,a)),r}function o(a,g){return t[a]=i(a).concat([g]),r}function s(a,g){return t[a]=i(a).filter(l=>l!==g),r}function u(){t={}}const r={init:e,emit:c,off:s,on:o,clear:u};return r}const Yn={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function Wn(t){function n(o,s){return Wt(o,s||{})}function e(o){const s=o.breakpoints||{},u=mt(s).filter(r=>t.matchMedia(r).matches).map(r=>s[r]).reduce((r,a)=>n(r,a),{});return n(o,u)}function i(o){return o.map(s=>mt(s.breakpoints||{})).reduce((s,u)=>s.concat(u),[]).map(t.matchMedia)}return{mergeOptions:n,optionsAtMedia:e,optionsMediaQueries:i}}function te(t){let n=[];function e(o,s){return n=s.filter(({options:u})=>t.optionsAtMedia(u).active!==!1),n.forEach(u=>u.init(o,t)),s.reduce((u,r)=>Object.assign(u,{[r.name]:r}),{})}function i(){n=n.filter(o=>o.destroy())}return{init:e,destroy:i}}function bt(t,n,e){const i=t.ownerDocument,c=i.defaultView,o=Wn(c),s=te(o),u=yt(),r=Xn(),{mergeOptions:a,optionsAtMedia:g,optionsMediaQueries:l}=o,{on:m,off:S,emit:f}=r,p=T;let y=!1,d,h=a(Yn,bt.globalOptions),b=a(h),E=[],_,I,x;function w(){const{container:P,slides:v}=b;I=(Ot(P)?t.querySelector(P):P)||t.children[0];const N=Ot(v)?I.querySelectorAll(v):v;x=[].slice.call(N||I.children)}function O(P){const v=Jn(t,I,x,i,c,P,r);if(P.loop&&!v.slideLooper.canLoop()){const M=Object.assign({},P,{loop:!1});return O(M)}return v}function k(P,v){y||(h=a(h,P),b=g(h),E=v||E,w(),d=O(b),l([h,...E.map(({options:M})=>M)]).forEach(M=>u.add(M,"change",T)),b.active&&(d.translate.to(d.location.get()),d.animation.init(),d.slidesInView.init(),d.slideFocus.init(H),d.eventHandler.init(H),d.resizeHandler.init(H),d.slidesHandler.init(H),d.options.loop&&d.slideLooper.loop(),I.offsetParent&&x.length&&d.dragHandler.init(H),_=s.init(H,E)))}function T(P,v){const M=$();B(),k(a({startIndex:M},P),v),r.emit("reInit")}function B(){d.dragHandler.destroy(),d.eventStore.clear(),d.translate.clear(),d.slideLooper.clear(),d.resizeHandler.destroy(),d.slidesHandler.destroy(),d.slidesInView.destroy(),d.animation.destroy(),s.destroy(),u.clear()}function G(){y||(y=!0,u.clear(),B(),r.emit("destroy"),r.clear())}function D(P,v,M){!b.active||y||(d.scrollBody.useBaseFriction().useDuration(v===!0?0:b.duration),d.scrollTo.index(P,M||0))}function A(P){const v=d.index.add(1).get();D(v,P,-1)}function R(P){const v=d.index.add(-1).get();D(v,P,1)}function q(){return d.index.add(1).get()!==$()}function U(){return d.index.add(-1).get()!==$()}function Z(){return d.scrollSnapList}function Q(){return d.scrollProgress.get(d.offsetLocation.get())}function $(){return d.index.get()}function X(){return d.indexPrevious.get()}function Y(){return d.slidesInView.get()}function W(){return d.slidesInView.get(!1)}function at(){return _}function lt(){return d}function z(){return t}function F(){return I}function tt(){return x}const H={canScrollNext:q,canScrollPrev:U,containerNode:F,internalEngine:lt,destroy:G,off:S,on:m,emit:f,plugins:at,previousScrollSnap:X,reInit:p,rootNode:z,scrollNext:A,scrollPrev:R,scrollProgress:Q,scrollSnapList:Z,scrollTo:D,selectedScrollSnap:$,slideNodes:tt,slidesInView:Y,slidesNotInView:W};return k(n,e),setTimeout(()=>r.emit("init"),0),H}bt.globalOptions=void 0;function Nt(t={},n=[]){const e=L.useRef(t),i=L.useRef(n),[c,o]=L.useState(),[s,u]=L.useState(),r=L.useCallback(()=>{c&&c.reInit(e.current,i.current)},[c]);return L.useEffect(()=>{Mt(e.current,t)||(e.current=t,r())},[t,r]),L.useEffect(()=>{En(i.current,n)||(i.current=n,r())},[n,r]),L.useEffect(()=>{if(wn()&&s){bt.globalOptions=Nt.globalOptions;const a=bt(s,e.current,i.current);return o(a),()=>a.destroy()}else o(void 0)},[s,o]),[u,c]}Nt.globalOptions=void 0;const ne={"purpur-carousel":"_purpur-carousel_pqv4p_1","purpur-carousel__viewport":"_purpur-carousel__viewport_pqv4p_16","purpur-carousel__container":"_purpur-carousel__container_pqv4p_19","purpur-carousel__page-indicators":"_purpur-carousel__page-indicators_pqv4p_27","purpur-carousel__controls":"_purpur-carousel__controls_pqv4p_36","purpur-carousel__autoplay-pause-button":"_purpur-carousel__autoplay-pause-button_pqv4p_40","purpur-carousel__buttons":"_purpur-carousel__buttons_pqv4p_48","purpur-carousel__slide":"_purpur-carousel__slide_pqv4p_59"},ee={"carousel-page-indicator":"_carousel-page-indicator_y8joq_1","dot-progress":"_dot-progress_y8joq_1"},oe=Jt.c.bind(ee),se="carousel-page-indicator",re=4e3,ie=({index:t,selectedIndex:n,totalIndicators:e,showProgress:i,delay:c=re})=>{const o=()=>{const m=Math.min(t,e-1-t);let S=u;if(!g)return 0;if(m===0)return 150;r===0&&(u===2&&(S=1),u===3&&(S=2));const f=1/(2*(S||.5));return f<.25?50:f<.5?100:150},s=t===n,u=Math.abs(n-t),r=Math.min(n,e-1-n),a=Math.max(5-r,3),g=u<a,l=e<6?150:o();return j.jsx("li",{className:oe(se),"data-selected":s,"data-show-progress":i,style:{marginLeft:g?"var(--purpur-spacing-100)":void 0,width:s?"var(--purpur-spacing-400)":`var(--purpur-spacing-${l})`,height:`var(--purpur-spacing-${l})`,"--progress-time":`${c}ms`}})},ce=(t,n)=>{const e=L.useRef(!1),[i,c]=L.useState(!1),o=t?.plugins()?.autoplay,s=L.useCallback(()=>{if(!o)return;(o.isPlaying()?o.stop:o.play)()},[o]),u=()=>{o&&o.reset()};return L.useEffect(()=>{o&&(c(o.isPlaying()),t.on("autoplay:play",()=>c(!0)).on("autoplay:stop",()=>c(!1)).on("reInit",()=>c(o.isPlaying())))},[o,t]),L.useEffect(()=>{if(!o||!n?.current)return;const r=new IntersectionObserver(([g])=>{g.isIntersecting?e.current&&(e.current=!1,o.play()):o.isPlaying()&&(e.current=!0,o.stop())},{threshold:0}),a=n.current;return r.observe(a),()=>r.disconnect()},[o,n]),{isPlaying:i,toggle:s,reset:u}},ue=t=>{const[n,e]=L.useState(0),[i,c]=L.useState([]),o=L.useCallback(r=>{t&&t.scrollTo(r)},[t]),s=L.useCallback(r=>{c(r.scrollSnapList())},[]),u=L.useCallback(r=>{e(r.selectedScrollSnap())},[]);return L.useEffect(()=>{t&&(s(t),u(t),t.on("reInit",s).on("reInit",u).on("select",u))},[t,s,u]),{selectedIndex:n,scrollSnaps:i,onIndicatorClick:o}},en="(prefers-reduced-motion: reduce)",ae=()=>typeof window>"u"?!1:window.matchMedia(en).matches,le=()=>{const[t,n]=L.useState(ae);return L.useEffect(()=>{if(typeof window>"u")return;const e=window.matchMedia(en),i=()=>{n(e.matches)};return i(),e.addEventListener("change",i),()=>{e.removeEventListener("change",i)}},[]),t},fe=(t,n,e)=>{const[i,c]=L.useState(!0),[o,s]=L.useState(!0),u=L.useCallback(()=>{t&&(t.scrollPrev(),e.reset())},[t,e]),r=L.useCallback(()=>{t&&(t.scrollNext(),e.reset())},[t,e]),a=L.useCallback(l=>{c(!l.canScrollPrev()),s(!l.canScrollNext())},[]),g=L.useCallback(l=>{switch(l.key){case"ArrowLeft":u(),l.target?.previousSibling?.focus();break;case"ArrowRight":r(),l.target?.nextSibling?.focus();break}},[u,r]);return L.useEffect(()=>{const l=n.current;if(t&&l)return a(t),t.on("reInit",a).on("select",a),l.addEventListener("keydown",g),()=>{l.removeEventListener("keydown",g)}},[t,a,n,g]),{prevBtnDisabled:i,nextBtnDisabled:o,onPrevButtonClick:u,onNextButtonClick:r}},ot=Jt.c.bind(ne),st="purpur-carousel",jt=({className:t,options:n={},children:e,controllerPlacement:i="bottom",...c})=>{const o=L.useRef(null),s=L.useRef(null),u=typeof c.autoplay=="boolean"?{}:c.autoplay??{},r=ot(st,t),a=le(),g=pe(a?{...n,duration:0}:n),l=[];c.autoplay&&l.push(Dt({...u,jump:a}));const[m,S]=Nt({align:"start",...g},l),f=ce(S,o),p=fe(S,o,f),{selectedIndex:y,scrollSnaps:d}=ue(S),h=()=>L.Children.toArray(e).map(_=>L.Children.only(_)),b=()=>j.jsxs("div",{className:ot(`${st}__controls`),children:[c.hidePageIndicator!==!0&&j.jsxs(j.Fragment,{children:[j.jsx("ul",{className:ot(`${st}__page-indicators`),"data-overflowing":d.length>5,"aria-label":`${c.ariaLabels.autoplay.indicator} ${y+1}`,"aria-live":"off",children:d.map((_,I,x)=>j.jsx(ie,{index:I,ref:s,showProgress:f.isPlaying,totalIndicators:x.length,selectedIndex:y,delay:u.delay},I))}),c.autoplay&&j.jsx(_t.Button,{variant:"text","aria-label":f.isPlaying?c.ariaLabels.autoplay.pause:c.ariaLabels.autoplay.play,onClick:f.toggle,iconOnly:!0,size:"sm",className:ot(`${st}__autoplay-pause-button`),children:f.isPlaying?j.jsx(Yt,{size:"xs"}):j.jsx(Xt,{size:"xs"})})]}),j.jsxs("div",{className:ot(`${st}__buttons`),children:[j.jsx(_t.Button,{iconOnly:!0,"aria-label":c.ariaLabels.previousButton,size:"md",variant:"secondary",onClick:p.onPrevButtonClick,disabled:p.prevBtnDisabled,children:j.jsx(gn.l,{size:"xs"})}),j.jsx(_t.Button,{iconOnly:!0,"aria-label":c.ariaLabels.nextButton,size:"md",variant:"secondary",onClick:p.onNextButtonClick,disabled:p.nextBtnDisabled,children:j.jsx(mn.i,{size:"xs"})})]})]}),E=Math.max(0,Math.min(50,c.nextSlidePreview||0));return j.jsxs("section",{ref:o,className:r,"data-is-looping":!!n?.loop,style:{"--n":g.slidesToShow||1,"--preview":E,"--slide-spacing":`var(--purpur-spacing-${c.slideSpacing||300})`},children:[i==="top"&&b(),j.jsx("div",{className:ot(`${st}__viewport`),ref:m,children:j.jsx("ul",{className:ot(`${st}__container`),children:h()})}),i==="bottom"&&b()]})},de=({children:t})=>j.jsx("li",{className:ot(`${st}__slide`),children:t});jt.displayName="Carousel";jt.Slide=de;function pe(t={}){const n={...t};if(typeof window>"u"||!t.breakpoints)return n;for(const e in t.breakpoints)Object.assign(n,window.matchMedia(e).matches?t.breakpoints[e]:{});return n}exports.Carousel=jt;
|
|
2
|
-
//# sourceMappingURL=carousel-DXrtxRz5.js.map
|