@commercetools/nimbus 2.0.1-rc4 → 2.1.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/dist/chunks/Button-BjcDZ5eb.es.js +79 -0
- package/dist/chunks/Button-BjcDZ5eb.es.js.map +1 -0
- package/dist/chunks/Button-DLCecw8f.cjs.js +2 -0
- package/dist/chunks/Button-DLCecw8f.cjs.js.map +1 -0
- package/dist/chunks/CollectionBuilder-BipvtvSl.cjs.js +18 -0
- package/dist/chunks/CollectionBuilder-BipvtvSl.cjs.js.map +1 -0
- package/dist/chunks/CollectionBuilder-ZlIN4SR4.es.js +677 -0
- package/dist/chunks/CollectionBuilder-ZlIN4SR4.es.js.map +1 -0
- package/dist/chunks/DateField-B5u8QZFY.cjs.js +2 -0
- package/dist/chunks/DateField-B5u8QZFY.cjs.js.map +1 -0
- package/dist/chunks/DateField-C5JgBb30.es.js +2691 -0
- package/dist/chunks/DateField-C5JgBb30.es.js.map +1 -0
- package/dist/chunks/DatePicker-DGLrUdLu.cjs.js +2 -0
- package/dist/chunks/DatePicker-DGLrUdLu.cjs.js.map +1 -0
- package/dist/chunks/DatePicker-DeknOPX6.es.js +786 -0
- package/dist/chunks/DatePicker-DeknOPX6.es.js.map +1 -0
- package/dist/chunks/Dialog-DUbUCf4o.es.js +1951 -0
- package/dist/chunks/Dialog-DUbUCf4o.es.js.map +1 -0
- package/dist/chunks/Dialog-Ye_7tQZU.cjs.js +7 -0
- package/dist/chunks/Dialog-Ye_7tQZU.cjs.js.map +1 -0
- package/dist/chunks/FieldError-CXcEMuBf.es.js.map +1 -1
- package/dist/chunks/FieldError-DyGFfqST.cjs.js.map +1 -1
- package/dist/chunks/FocusScope-CqEZq7sr.es.js +625 -0
- package/dist/chunks/FocusScope-CqEZq7sr.es.js.map +1 -0
- package/dist/chunks/FocusScope-vAM-Q62b.cjs.js +2 -0
- package/dist/chunks/FocusScope-vAM-Q62b.cjs.js.map +1 -0
- package/dist/chunks/Form-BuOomA4T.cjs.js.map +1 -1
- package/dist/chunks/Form-CXcEMuBf.es.js.map +1 -1
- package/dist/chunks/Group-1nWkximy.cjs.js +2 -0
- package/dist/chunks/Group-1nWkximy.cjs.js.map +1 -0
- package/dist/chunks/Group-BQc9LuMT.es.js +47 -0
- package/dist/chunks/Group-BQc9LuMT.es.js.map +1 -0
- package/dist/chunks/Header-Bvl-gjeR.cjs.js +2 -0
- package/dist/chunks/Header-Bvl-gjeR.cjs.js.map +1 -0
- package/dist/chunks/Header-Bvo6aMcQ.es.js +213 -0
- package/dist/chunks/Header-Bvo6aMcQ.es.js.map +1 -0
- package/dist/chunks/Heading-D7Ut7eK3.es.js +1619 -0
- package/dist/chunks/Heading-D7Ut7eK3.es.js.map +1 -0
- package/dist/chunks/Heading-kcnZ-PKv.cjs.js +2 -0
- package/dist/chunks/Heading-kcnZ-PKv.cjs.js.map +1 -0
- package/dist/chunks/Hidden-CNJIJ63M.cjs.js.map +1 -1
- package/dist/chunks/Hidden-X9vuhkMZ.es.js +28 -0
- package/dist/chunks/Hidden-X9vuhkMZ.es.js.map +1 -0
- package/dist/chunks/Input-2FU1rljx.cjs.js +2 -0
- package/dist/chunks/Input-2FU1rljx.cjs.js.map +1 -0
- package/dist/chunks/Input-Cmg08oRP.es.js +43 -0
- package/dist/chunks/Input-Cmg08oRP.es.js.map +1 -0
- package/dist/chunks/Keyboard-Clnp4zAC.es.js.map +1 -1
- package/dist/chunks/Keyboard-rYf2KxZN.cjs.js.map +1 -1
- package/dist/chunks/Label-DIseLESi.es.js +17 -0
- package/dist/chunks/Label-DIseLESi.es.js.map +1 -0
- package/dist/chunks/Label-szabofdc.cjs.js +2 -0
- package/dist/chunks/Label-szabofdc.cjs.js.map +1 -0
- package/dist/chunks/ListBox-C8TVMFFY.es.js +561 -0
- package/dist/chunks/ListBox-C8TVMFFY.es.js.map +1 -0
- package/dist/chunks/ListBox-Dcnj8pHo.cjs.js +2 -0
- package/dist/chunks/ListBox-Dcnj8pHo.cjs.js.map +1 -0
- package/dist/chunks/Modal-CMJEwrBs.es.js +197 -0
- package/dist/chunks/Modal-CMJEwrBs.es.js.map +1 -0
- package/dist/chunks/Modal-DjOIA2BE.cjs.js +2 -0
- package/dist/chunks/Modal-DjOIA2BE.cjs.js.map +1 -0
- package/dist/chunks/OverlayArrow-BIjbCSXk.es.js +491 -0
- package/dist/chunks/OverlayArrow-BIjbCSXk.es.js.map +1 -0
- package/dist/chunks/OverlayArrow-ltipYWUv.cjs.js +2 -0
- package/dist/chunks/OverlayArrow-ltipYWUv.cjs.js.map +1 -0
- package/dist/chunks/ProgressBar-BnIWveAr.cjs.js +2 -0
- package/dist/chunks/ProgressBar-BnIWveAr.cjs.js.map +1 -0
- package/dist/chunks/ProgressBar-Dm2Ge45l.es.js +42 -0
- package/dist/chunks/ProgressBar-Dm2Ge45l.es.js.map +1 -0
- package/dist/chunks/RSPContexts-BdKenzIN.cjs.js.map +1 -1
- package/dist/chunks/RSPContexts-DLgb84PF.es.js +9 -0
- package/dist/chunks/RSPContexts-DLgb84PF.es.js.map +1 -0
- package/dist/chunks/SSRProvider-DZRLwxPS.cjs.js +2 -0
- package/dist/chunks/SSRProvider-DZRLwxPS.cjs.js.map +1 -0
- package/dist/chunks/SSRProvider-eIEwc-2s.es.js +51 -0
- package/dist/chunks/SSRProvider-eIEwc-2s.es.js.map +1 -0
- package/dist/chunks/SelectionIndicator-B27AsfqE.es.js +17 -0
- package/dist/chunks/SelectionIndicator-B27AsfqE.es.js.map +1 -0
- package/dist/chunks/SelectionIndicator-Du7-bvy3.cjs.js +2 -0
- package/dist/chunks/SelectionIndicator-Du7-bvy3.cjs.js.map +1 -0
- package/dist/chunks/SelectionManager-CCETIs4l.cjs.js +2 -0
- package/dist/chunks/SelectionManager-CCETIs4l.cjs.js.map +1 -0
- package/dist/chunks/SelectionManager-bgcDT3lR.es.js +1132 -0
- package/dist/chunks/SelectionManager-bgcDT3lR.es.js.map +1 -0
- package/dist/chunks/Separator-BmVimNX_.es.js +55 -0
- package/dist/chunks/Separator-BmVimNX_.es.js.map +1 -0
- package/dist/chunks/Separator-DyU2njbj.cjs.js +2 -0
- package/dist/chunks/Separator-DyU2njbj.cjs.js.map +1 -0
- package/dist/chunks/Text-BWSfeB9p.cjs.js.map +1 -1
- package/dist/chunks/Text-DOcU1ycg.es.js.map +1 -1
- package/dist/chunks/TextArea-2QJpeMJq.cjs.js +2 -0
- package/dist/chunks/TextArea-2QJpeMJq.cjs.js.map +1 -0
- package/dist/chunks/TextArea-CXEdUjgW.es.js +42 -0
- package/dist/chunks/TextArea-CXEdUjgW.es.js.map +1 -0
- package/dist/chunks/ToggleButton-BqW-X6iJ.es.js +150 -0
- package/dist/chunks/ToggleButton-BqW-X6iJ.es.js.map +1 -0
- package/dist/chunks/ToggleButton-CFG1iLco.cjs.js +2 -0
- package/dist/chunks/ToggleButton-CFG1iLco.cjs.js.map +1 -0
- package/dist/chunks/VisuallyHidden-BLRzeMsq.es.js +41 -0
- package/dist/chunks/VisuallyHidden-BLRzeMsq.es.js.map +1 -0
- package/dist/chunks/VisuallyHidden-CDvZiyH6.cjs.js +2 -0
- package/dist/chunks/VisuallyHidden-CDvZiyH6.cjs.js.map +1 -0
- package/dist/chunks/accordion-AupzDJ2i.cjs.js +2 -0
- package/dist/chunks/accordion-AupzDJ2i.cjs.js.map +1 -0
- package/dist/chunks/accordion-Bu9iEN-Z.es.js +84 -0
- package/dist/chunks/accordion-Bu9iEN-Z.es.js.map +1 -0
- package/dist/chunks/accordion.content-C8iYlvoi.es.js +227 -0
- package/dist/chunks/accordion.content-C8iYlvoi.es.js.map +1 -0
- package/dist/chunks/accordion.content-DwLtYzIy.cjs.js +2 -0
- package/dist/chunks/accordion.content-DwLtYzIy.cjs.js.map +1 -0
- package/dist/chunks/alert-ByKnzJtr.cjs.js +2 -0
- package/dist/chunks/alert-ByKnzJtr.cjs.js.map +1 -0
- package/dist/chunks/alert-Cb8WoJYV.es.js +211 -0
- package/dist/chunks/alert-Cb8WoJYV.es.js.map +1 -0
- package/dist/chunks/avatar-Dx_Cda2J.es.js +47 -0
- package/dist/chunks/avatar-Dx_Cda2J.es.js.map +1 -0
- package/dist/chunks/avatar-wRR1leVi.cjs.js +2 -0
- package/dist/chunks/avatar-wRR1leVi.cjs.js.map +1 -0
- package/dist/chunks/avatar.recipe-BEdxgo-r.es.js +39 -0
- package/dist/chunks/avatar.recipe-BEdxgo-r.es.js.map +1 -0
- package/dist/chunks/avatar.recipe-XvknqPJq.cjs.js +2 -0
- package/dist/chunks/avatar.recipe-XvknqPJq.cjs.js.map +1 -0
- package/dist/chunks/badge-5F6i4KSF.cjs.js +2 -0
- package/dist/chunks/badge-5F6i4KSF.cjs.js.map +1 -0
- package/dist/chunks/badge-CgYpum7D.es.js +17 -0
- package/dist/chunks/badge-CgYpum7D.es.js.map +1 -0
- package/dist/chunks/badge.recipe-Cu6u9yqC.cjs.js.map +1 -1
- package/dist/chunks/badge.recipe-DsV4A_UD.es.js.map +1 -1
- package/dist/chunks/button-DF_RV6pd.cjs.js +2 -0
- package/dist/chunks/button-DF_RV6pd.cjs.js.map +1 -0
- package/dist/chunks/button-czddlTvJ.es.js +65 -0
- package/dist/chunks/button-czddlTvJ.es.js.map +1 -0
- package/dist/chunks/calendar-B--ZxTlQ.es.js +217 -0
- package/dist/chunks/calendar-B--ZxTlQ.es.js.map +1 -0
- package/dist/chunks/calendar-DLSOwy_e.cjs.js +2 -0
- package/dist/chunks/calendar-DLSOwy_e.cjs.js.map +1 -0
- package/dist/chunks/card-B2TxE_Ez.cjs.js +2 -0
- package/dist/chunks/card-B2TxE_Ez.cjs.js.map +1 -0
- package/dist/chunks/card-CEfEgF48.es.js +120 -0
- package/dist/chunks/card-CEfEgF48.es.js.map +1 -0
- package/dist/chunks/checkbox-BAZ2ps7B.es.js +221 -0
- package/dist/chunks/checkbox-BAZ2ps7B.es.js.map +1 -0
- package/dist/chunks/checkbox-CWhwDnrI.cjs.js +2 -0
- package/dist/chunks/checkbox-CWhwDnrI.cjs.js.map +1 -0
- package/dist/chunks/collapsible-motion-D4u7W2de.cjs.js +2 -0
- package/dist/chunks/collapsible-motion-D4u7W2de.cjs.js.map +1 -0
- package/dist/chunks/collapsible-motion-dMfEe4kv.es.js +126 -0
- package/dist/chunks/collapsible-motion-dMfEe4kv.es.js.map +1 -0
- package/dist/chunks/combobox-B2nkVE2H.cjs.js +2 -0
- package/dist/chunks/combobox-B2nkVE2H.cjs.js.map +1 -0
- package/dist/chunks/combobox-COyroO64.es.js +2497 -0
- package/dist/chunks/combobox-COyroO64.es.js.map +1 -0
- package/dist/chunks/context-CyT9C4U4.cjs.js +2 -0
- package/dist/chunks/context-CyT9C4U4.cjs.js.map +1 -0
- package/dist/chunks/context-DW7UvQ8z.es.js +108 -0
- package/dist/chunks/context-DW7UvQ8z.es.js.map +1 -0
- package/dist/chunks/data-table-BzY3lLyR.cjs.js +2 -0
- package/dist/chunks/data-table-BzY3lLyR.cjs.js.map +1 -0
- package/dist/chunks/data-table-C0rC7Jgu.es.js +4384 -0
- package/dist/chunks/data-table-C0rC7Jgu.es.js.map +1 -0
- package/dist/chunks/date-input-Cnlg-VXW.es.js +21 -0
- package/dist/chunks/date-input-Cnlg-VXW.es.js.map +1 -0
- package/dist/chunks/date-input-DlQD1DQ3.cjs.js +2 -0
- package/dist/chunks/date-input-DlQD1DQ3.cjs.js.map +1 -0
- package/dist/chunks/date-picker-8kdn6Ih5.es.js +218 -0
- package/dist/chunks/date-picker-8kdn6Ih5.es.js.map +1 -0
- package/dist/chunks/date-picker-CxJ6zMkz.cjs.js +2 -0
- package/dist/chunks/date-picker-CxJ6zMkz.cjs.js.map +1 -0
- package/dist/chunks/date-range-picker-B2VUcKjG.cjs.js +2 -0
- package/dist/chunks/date-range-picker-B2VUcKjG.cjs.js.map +1 -0
- package/dist/chunks/date-range-picker-Di9p8cKs.es.js +356 -0
- package/dist/chunks/date-range-picker-Di9p8cKs.es.js.map +1 -0
- package/dist/chunks/date-range-picker-field-D3tLPzMb.es.js +61 -0
- package/dist/chunks/date-range-picker-field-D3tLPzMb.es.js.map +1 -0
- package/dist/chunks/date-range-picker-field-DipL5QZq.cjs.js +2 -0
- package/dist/chunks/date-range-picker-field-DipL5QZq.cjs.js.map +1 -0
- package/dist/chunks/dialog-qw6IMWj3.cjs.js +2 -0
- package/dist/chunks/dialog-qw6IMWj3.cjs.js.map +1 -0
- package/dist/chunks/dialog-z8EM12xr.es.js +305 -0
- package/dist/chunks/dialog-z8EM12xr.es.js.map +1 -0
- package/dist/chunks/draggable-list-B0MpgfeC.es.js +4305 -0
- package/dist/chunks/draggable-list-B0MpgfeC.es.js.map +1 -0
- package/dist/chunks/draggable-list-DNQAZADx.cjs.js +3 -0
- package/dist/chunks/draggable-list-DNQAZADx.cjs.js.map +1 -0
- package/dist/chunks/drawer-BZBluK-I.es.js +312 -0
- package/dist/chunks/drawer-BZBluK-I.es.js.map +1 -0
- package/dist/chunks/drawer-DfJY_5pD.cjs.js +2 -0
- package/dist/chunks/drawer-DfJY_5pD.cjs.js.map +1 -0
- package/dist/chunks/extract-style-props-BilMyFTD.cjs.js +2 -0
- package/dist/chunks/extract-style-props-BilMyFTD.cjs.js.map +1 -0
- package/dist/chunks/extract-style-props-DChosa6I.es.js +11 -0
- package/dist/chunks/extract-style-props-DChosa6I.es.js.map +1 -0
- package/dist/chunks/field-errors-ClQprmQz.es.js.map +1 -1
- package/dist/chunks/field-errors-D2re_C_c.cjs.js.map +1 -1
- package/dist/chunks/filterDOMProps-BSVCO5jK.es.js.map +1 -1
- package/dist/chunks/filterDOMProps-WUskt27c.cjs.js.map +1 -1
- package/dist/chunks/focusSafely-Cwb0Tyy6.es.js +27 -0
- package/dist/chunks/focusSafely-Cwb0Tyy6.es.js.map +1 -0
- package/dist/chunks/focusSafely-Dvxmj9Tu.cjs.js +2 -0
- package/dist/chunks/focusSafely-Dvxmj9Tu.cjs.js.map +1 -0
- package/dist/chunks/focusWithoutScrolling-BlyUcXdY.cjs.js.map +1 -1
- package/dist/chunks/focusWithoutScrolling-CDw3JYiq.es.js.map +1 -1
- package/dist/chunks/form-field-BqlkPY29.es.js +358 -0
- package/dist/chunks/form-field-BqlkPY29.es.js.map +1 -0
- package/dist/chunks/form-field-lALRYL6D.cjs.js +2 -0
- package/dist/chunks/form-field-lALRYL6D.cjs.js.map +1 -0
- package/dist/chunks/getScrollParent-MZgwmCKW.es.js +10 -0
- package/dist/chunks/getScrollParent-MZgwmCKW.es.js.map +1 -0
- package/dist/chunks/getScrollParent-oFZOwvRj.cjs.js +2 -0
- package/dist/chunks/getScrollParent-oFZOwvRj.cjs.js.map +1 -0
- package/dist/chunks/group-CCBgdph2.es.js +13 -0
- package/dist/chunks/group-CCBgdph2.es.js.map +1 -0
- package/dist/chunks/group-Cjq5lNQD.cjs.js +2 -0
- package/dist/chunks/group-Cjq5lNQD.cjs.js.map +1 -0
- package/dist/chunks/heading-DWweWKGQ.cjs.js +2 -0
- package/dist/chunks/heading-DWweWKGQ.cjs.js.map +1 -0
- package/dist/chunks/heading-nfjoR4vL.es.js +25 -0
- package/dist/chunks/heading-nfjoR4vL.es.js.map +1 -0
- package/dist/chunks/icon-button-BUmqYcIF.cjs.js +2 -0
- package/dist/chunks/icon-button-BUmqYcIF.cjs.js.map +1 -0
- package/dist/chunks/icon-button-DgL7XNUZ.es.js +14 -0
- package/dist/chunks/icon-button-DgL7XNUZ.es.js.map +1 -0
- package/dist/chunks/icon-toggle-button-BKmjmlZt.es.js +13 -0
- package/dist/chunks/icon-toggle-button-BKmjmlZt.es.js.map +1 -0
- package/dist/chunks/icon-toggle-button-D3spgxe2.cjs.js +2 -0
- package/dist/chunks/icon-toggle-button-D3spgxe2.cjs.js.map +1 -0
- package/dist/chunks/index-BEgCT-l6.es.js +5640 -0
- package/dist/chunks/index-BEgCT-l6.es.js.map +1 -0
- package/dist/chunks/index-DzRjEtIu.cjs.js +34 -0
- package/dist/chunks/index-DzRjEtIu.cjs.js.map +1 -0
- package/dist/chunks/intlStrings-Cd44R5hT.es.js.map +1 -1
- package/dist/chunks/intlStrings-ClBuC6xN.cjs.js.map +1 -1
- package/dist/chunks/kbd-Bl5Ncm2d.es.js +15 -0
- package/dist/chunks/kbd-Bl5Ncm2d.es.js.map +1 -0
- package/dist/chunks/kbd-tKeWcdmy.cjs.js +2 -0
- package/dist/chunks/kbd-tKeWcdmy.cjs.js.map +1 -0
- package/dist/chunks/link-BMUyXcmC.es.js +48 -0
- package/dist/chunks/link-BMUyXcmC.es.js.map +1 -0
- package/dist/chunks/link-CI7W-6L3.cjs.js +2 -0
- package/dist/chunks/link-CI7W-6L3.cjs.js.map +1 -0
- package/dist/chunks/loading-spinner-DF6c3rBM.es.js +59 -0
- package/dist/chunks/loading-spinner-DF6c3rBM.es.js.map +1 -0
- package/dist/chunks/loading-spinner-DsKcjJ2b.cjs.js +2 -0
- package/dist/chunks/loading-spinner-DsKcjJ2b.cjs.js.map +1 -0
- package/dist/chunks/localized-field-CtLqzEnl.cjs.js +2 -0
- package/dist/chunks/localized-field-CtLqzEnl.cjs.js.map +1 -0
- package/dist/chunks/localized-field-XLDcWlU1.es.js +470 -0
- package/dist/chunks/localized-field-XLDcWlU1.es.js.map +1 -0
- package/dist/chunks/make-element-focusable-7-aXFtDJ.es.js +25 -0
- package/dist/chunks/make-element-focusable-7-aXFtDJ.es.js.map +1 -0
- package/dist/chunks/make-element-focusable-Cdmdc8sd.cjs.js +2 -0
- package/dist/chunks/make-element-focusable-Cdmdc8sd.cjs.js.map +1 -0
- package/dist/chunks/menu-C3Ovi5Mr.es.js +256 -0
- package/dist/chunks/menu-C3Ovi5Mr.es.js.map +1 -0
- package/dist/chunks/menu-Vj3cVc_v.cjs.js +2 -0
- package/dist/chunks/menu-Vj3cVc_v.cjs.js.map +1 -0
- package/dist/chunks/mergeProps-CxnHrnow.cjs.js +2 -0
- package/dist/chunks/mergeProps-CxnHrnow.cjs.js.map +1 -0
- package/dist/chunks/mergeProps-Dsl8k3Ig.es.js +130 -0
- package/dist/chunks/mergeProps-Dsl8k3Ig.es.js.map +1 -0
- package/dist/chunks/money-input-B2tSXXU9.cjs.js +2 -0
- package/dist/chunks/money-input-B2tSXXU9.cjs.js.map +1 -0
- package/dist/chunks/money-input-BEek-VSq.es.js +525 -0
- package/dist/chunks/money-input-BEek-VSq.es.js.map +1 -0
- package/dist/chunks/multiline-text-input-D5vbZHyU.es.js +64 -0
- package/dist/chunks/multiline-text-input-D5vbZHyU.es.js.map +1 -0
- package/dist/chunks/multiline-text-input-G1ZSL7hm.cjs.js +2 -0
- package/dist/chunks/multiline-text-input-G1ZSL7hm.cjs.js.map +1 -0
- package/dist/chunks/nimbus-i18n-provider-BbsapOze.cjs.js +2 -0
- package/dist/chunks/nimbus-i18n-provider-BbsapOze.cjs.js.map +1 -0
- package/dist/chunks/nimbus-i18n-provider-CZh1r8F5.es.js +11 -0
- package/dist/chunks/nimbus-i18n-provider-CZh1r8F5.es.js.map +1 -0
- package/dist/chunks/nimbus-provider-BHwVMxgZ.es.js +102 -0
- package/dist/chunks/nimbus-provider-BHwVMxgZ.es.js.map +1 -0
- package/dist/chunks/nimbus-provider-DHZ_RRPR.cjs.js +2 -0
- package/dist/chunks/nimbus-provider-DHZ_RRPR.cjs.js.map +1 -0
- package/dist/chunks/number-DHvo-MDe.cjs.js.map +1 -1
- package/dist/chunks/number-dMxJejI6.es.js.map +1 -1
- package/dist/chunks/number-input-CwrgDAWw.cjs.js +2 -0
- package/dist/chunks/number-input-CwrgDAWw.cjs.js.map +1 -0
- package/dist/chunks/number-input-DrhSvm6o.es.js +691 -0
- package/dist/chunks/number-input-DrhSvm6o.es.js.map +1 -0
- package/dist/chunks/openLink-BNz58j4a.es.js +105 -0
- package/dist/chunks/openLink-BNz58j4a.es.js.map +1 -0
- package/dist/chunks/openLink-DkCJYbzq.cjs.js.map +1 -1
- package/dist/chunks/pagination-C6OYOaIl.cjs.js +2 -0
- package/dist/chunks/pagination-C6OYOaIl.cjs.js.map +1 -0
- package/dist/chunks/pagination-aj1F0182.es.js +210 -0
- package/dist/chunks/pagination-aj1F0182.es.js.map +1 -0
- package/dist/chunks/password-input-BILx_1d0.cjs.js +2 -0
- package/dist/chunks/password-input-BILx_1d0.cjs.js.map +1 -0
- package/dist/chunks/password-input-DTPr52a3.es.js +54 -0
- package/dist/chunks/password-input-DTPr52a3.es.js.map +1 -0
- package/dist/chunks/platform-BDLy2vDY.cjs.js.map +1 -1
- package/dist/chunks/platform-Z5fvtFmM.es.js.map +1 -1
- package/dist/chunks/popover-BAIwOPdC.es.js +14 -0
- package/dist/chunks/popover-BAIwOPdC.es.js.map +1 -0
- package/dist/chunks/popover-DY7ASSCU.cjs.js +2 -0
- package/dist/chunks/popover-DY7ASSCU.cjs.js.map +1 -0
- package/dist/chunks/progress-bar-NAFgbTy5.cjs.js +2 -0
- package/dist/chunks/progress-bar-NAFgbTy5.cjs.js.map +1 -0
- package/dist/chunks/progress-bar-vRz1k6ol.es.js +76 -0
- package/dist/chunks/progress-bar-vRz1k6ol.es.js.map +1 -0
- package/dist/chunks/radio-input-C2lCxDiv.es.js +376 -0
- package/dist/chunks/radio-input-C2lCxDiv.es.js.map +1 -0
- package/dist/chunks/radio-input-CRvjsU1E.cjs.js +2 -0
- package/dist/chunks/radio-input-CRvjsU1E.cjs.js.map +1 -0
- package/dist/chunks/range-calendar-BagHIF-Y.es.js +219 -0
- package/dist/chunks/range-calendar-BagHIF-Y.es.js.map +1 -0
- package/dist/chunks/range-calendar-sHWelH3C.cjs.js +2 -0
- package/dist/chunks/range-calendar-sHWelH3C.cjs.js.map +1 -0
- package/dist/chunks/rich-text-input-B4ksKYJh.cjs.js +10 -0
- package/dist/chunks/rich-text-input-B4ksKYJh.cjs.js.map +1 -0
- package/dist/chunks/rich-text-input-CZqXRWdM.es.js +1200 -0
- package/dist/chunks/rich-text-input-CZqXRWdM.es.js.map +1 -0
- package/dist/chunks/scoped-search-input-BKTc1h-7.cjs.js +2 -0
- package/dist/chunks/scoped-search-input-BKTc1h-7.cjs.js.map +1 -0
- package/dist/chunks/scoped-search-input-DY4w22Ki.es.js +152 -0
- package/dist/chunks/scoped-search-input-DY4w22Ki.es.js.map +1 -0
- package/dist/chunks/scrollIntoView-B7D07fJk.es.js +96 -0
- package/dist/chunks/scrollIntoView-B7D07fJk.es.js.map +1 -0
- package/dist/chunks/scrollIntoView-BE5bh59O.cjs.js +2 -0
- package/dist/chunks/scrollIntoView-BE5bh59O.cjs.js.map +1 -0
- package/dist/chunks/search-input-Bl0EswfK.cjs.js +2 -0
- package/dist/chunks/search-input-Bl0EswfK.cjs.js.map +1 -0
- package/dist/chunks/search-input-CMrPbAUI.es.js +364 -0
- package/dist/chunks/search-input-CMrPbAUI.es.js.map +1 -0
- package/dist/chunks/select-B2MAR-fq.cjs.js +2 -0
- package/dist/chunks/select-B2MAR-fq.cjs.js.map +1 -0
- package/dist/chunks/select-DG6qOekv.es.js +770 -0
- package/dist/chunks/select-DG6qOekv.es.js.map +1 -0
- package/dist/chunks/separator-B-ibkWW-.es.js +24 -0
- package/dist/chunks/separator-B-ibkWW-.es.js.map +1 -0
- package/dist/chunks/separator-DYCn6JPo.cjs.js +2 -0
- package/dist/chunks/separator-DYCn6JPo.cjs.js.map +1 -0
- package/dist/chunks/split-button-BpZ8jMvw.es.js +106 -0
- package/dist/chunks/split-button-BpZ8jMvw.es.js.map +1 -0
- package/dist/chunks/split-button-C99oShiQ.cjs.js +2 -0
- package/dist/chunks/split-button-C99oShiQ.cjs.js.map +1 -0
- package/dist/chunks/switch-BzYS9qlr.cjs.js +2 -0
- package/dist/chunks/switch-BzYS9qlr.cjs.js.map +1 -0
- package/dist/chunks/switch-_TfZ37Nm.es.js +67 -0
- package/dist/chunks/switch-_TfZ37Nm.es.js.map +1 -0
- package/dist/chunks/tabs-HOHhoLn5.es.js +502 -0
- package/dist/chunks/tabs-HOHhoLn5.es.js.map +1 -0
- package/dist/chunks/tabs-gitNliDG.cjs.js +2 -0
- package/dist/chunks/tabs-gitNliDG.cjs.js.map +1 -0
- package/dist/chunks/tag-group-Aa30DcsU.es.js +612 -0
- package/dist/chunks/tag-group-Aa30DcsU.es.js.map +1 -0
- package/dist/chunks/tag-group-Ci_H89V0.cjs.js +2 -0
- package/dist/chunks/tag-group-Ci_H89V0.cjs.js.map +1 -0
- package/dist/chunks/text-BtRhIklG.cjs.js +2 -0
- package/dist/chunks/text-BtRhIklG.cjs.js.map +1 -0
- package/dist/chunks/text-CIb_VDvO.es.js +24 -0
- package/dist/chunks/text-CIb_VDvO.es.js.map +1 -0
- package/dist/chunks/text-input-D3KWm-NF.cjs.js +2 -0
- package/dist/chunks/text-input-D3KWm-NF.cjs.js.map +1 -0
- package/dist/chunks/text-input-DOTYCJyJ.es.js +78 -0
- package/dist/chunks/text-input-DOTYCJyJ.es.js.map +1 -0
- package/dist/chunks/text-input-field-BgQ4Te_a.cjs.js +2 -0
- package/dist/chunks/text-input-field-BgQ4Te_a.cjs.js.map +1 -0
- package/dist/chunks/text-input-field-CkcoMrv2.es.js +55 -0
- package/dist/chunks/text-input-field-CkcoMrv2.es.js.map +1 -0
- package/dist/chunks/time-input-BYGEbCd6.cjs.js +2 -0
- package/dist/chunks/time-input-BYGEbCd6.cjs.js.map +1 -0
- package/dist/chunks/time-input-KrO-X3uW.es.js +21 -0
- package/dist/chunks/time-input-KrO-X3uW.es.js.map +1 -0
- package/dist/chunks/toggle-button-BKXhwp3e.cjs.js +2 -0
- package/dist/chunks/toggle-button-BKXhwp3e.cjs.js.map +1 -0
- package/dist/chunks/toggle-button-C03AKN2I.es.js +30 -0
- package/dist/chunks/toggle-button-C03AKN2I.es.js.map +1 -0
- package/dist/chunks/toggle-button-group-BWpmMkEz.es.js +29 -0
- package/dist/chunks/toggle-button-group-BWpmMkEz.es.js.map +1 -0
- package/dist/chunks/toggle-button-group-Lfn3zYmC.cjs.js +2 -0
- package/dist/chunks/toggle-button-group-Lfn3zYmC.cjs.js.map +1 -0
- package/dist/chunks/toggle-button-group.recipe-COF-yHYR.cjs.js +2 -0
- package/dist/chunks/toggle-button-group.recipe-COF-yHYR.cjs.js.map +1 -0
- package/dist/chunks/toggle-button-group.recipe-Cl3PTeGf.es.js +230 -0
- package/dist/chunks/toggle-button-group.recipe-Cl3PTeGf.es.js.map +1 -0
- package/dist/chunks/toolbar-D0WjTxz2.es.js +61 -0
- package/dist/chunks/toolbar-D0WjTxz2.es.js.map +1 -0
- package/dist/chunks/toolbar-DMowluJ2.cjs.js +2 -0
- package/dist/chunks/toolbar-DMowluJ2.cjs.js.map +1 -0
- package/dist/chunks/tooltip-Bv-QlJ1O.cjs.js +2 -0
- package/dist/chunks/tooltip-Bv-QlJ1O.cjs.js.map +1 -0
- package/dist/chunks/tooltip-D3QrrizN.es.js +301 -0
- package/dist/chunks/tooltip-D3QrrizN.es.js.map +1 -0
- package/dist/chunks/useButton-BwsmYrml.cjs.js +2 -0
- package/dist/chunks/useButton-BwsmYrml.cjs.js.map +1 -0
- package/dist/chunks/useButton-CiPiehgC.es.js +57 -0
- package/dist/chunks/useButton-CiPiehgC.es.js.map +1 -0
- package/dist/chunks/useCollator-BjnMaGJd.es.js +12 -0
- package/dist/chunks/useCollator-BjnMaGJd.es.js.map +1 -0
- package/dist/chunks/useCollator-Lsi9B90Z.cjs.js +2 -0
- package/dist/chunks/useCollator-Lsi9B90Z.cjs.js.map +1 -0
- package/dist/chunks/useControlledState-D0L6S_5r.cjs.js.map +1 -1
- package/dist/chunks/useControlledState-u436Wbp1.es.js.map +1 -1
- package/dist/chunks/useDateFormatter-886GJ5w1.es.js +1632 -0
- package/dist/chunks/useDateFormatter-886GJ5w1.es.js.map +1 -0
- package/dist/chunks/useDateFormatter-WCaFojul.cjs.js +2 -0
- package/dist/chunks/useDateFormatter-WCaFojul.cjs.js.map +1 -0
- package/dist/chunks/useDisclosureState-CWZTR2xM.es.js +87 -0
- package/dist/chunks/useDisclosureState-CWZTR2xM.es.js.map +1 -0
- package/dist/chunks/useDisclosureState-mIvoKolL.cjs.js +2 -0
- package/dist/chunks/useDisclosureState-mIvoKolL.cjs.js.map +1 -0
- package/dist/chunks/useEvent-CRo5BZDX.es.js +22 -0
- package/dist/chunks/useEvent-CRo5BZDX.es.js.map +1 -0
- package/dist/chunks/useEvent-D0r31Azw.cjs.js +2 -0
- package/dist/chunks/useEvent-D0r31Azw.cjs.js.map +1 -0
- package/dist/chunks/useField-CHrpmkxe.es.js +36 -0
- package/dist/chunks/useField-CHrpmkxe.es.js.map +1 -0
- package/dist/chunks/useField-lK6K_h1G.cjs.js +2 -0
- package/dist/chunks/useField-lK6K_h1G.cjs.js.map +1 -0
- package/dist/chunks/useFilter-BgT0isJK.es.js +36 -0
- package/dist/chunks/useFilter-BgT0isJK.es.js.map +1 -0
- package/dist/chunks/useFilter-CAVKltBB.cjs.js +2 -0
- package/dist/chunks/useFilter-CAVKltBB.cjs.js.map +1 -0
- package/dist/chunks/useFocus-9leARHB4.cjs.js +2 -0
- package/dist/chunks/useFocus-9leARHB4.cjs.js.map +1 -0
- package/dist/chunks/useFocus-CrgTusM3.es.js +29 -0
- package/dist/chunks/useFocus-CrgTusM3.es.js.map +1 -0
- package/dist/chunks/useFocusRing-B7_ogYbr.cjs.js +2 -0
- package/dist/chunks/useFocusRing-B7_ogYbr.cjs.js.map +1 -0
- package/dist/chunks/useFocusRing-FPt2Rwil.es.js +35 -0
- package/dist/chunks/useFocusRing-FPt2Rwil.es.js.map +1 -0
- package/dist/chunks/useFocusVisible-B3HmFL2Q.es.js +111 -0
- package/dist/chunks/useFocusVisible-B3HmFL2Q.es.js.map +1 -0
- package/dist/chunks/useFocusVisible-DfE3Z6QO.cjs.js +2 -0
- package/dist/chunks/useFocusVisible-DfE3Z6QO.cjs.js.map +1 -0
- package/dist/chunks/useFocusWithin-CX8GdFVw.cjs.js +2 -0
- package/dist/chunks/useFocusWithin-CX8GdFVw.cjs.js.map +1 -0
- package/dist/chunks/useFocusWithin-EFOG-Jn1.es.js +56 -0
- package/dist/chunks/useFocusWithin-EFOG-Jn1.es.js.map +1 -0
- package/dist/chunks/useFocusable-C7VjcJHL.cjs.js +2 -0
- package/dist/chunks/useFocusable-C7VjcJHL.cjs.js.map +1 -0
- package/dist/chunks/useFocusable-Cs6i58WP.es.js +77 -0
- package/dist/chunks/useFocusable-Cs6i58WP.es.js.map +1 -0
- package/dist/chunks/useFormReset-BGuIA_u2.es.js +21 -0
- package/dist/chunks/useFormReset-BGuIA_u2.es.js.map +1 -0
- package/dist/chunks/useFormReset-COoih4uI.cjs.js +2 -0
- package/dist/chunks/useFormReset-COoih4uI.cjs.js.map +1 -0
- package/dist/chunks/useFormValidation-BCVLtR0U.es.js +202 -0
- package/dist/chunks/useFormValidation-BCVLtR0U.es.js.map +1 -0
- package/dist/chunks/useFormValidation-BfTV0EQ1.cjs.js +2 -0
- package/dist/chunks/useFormValidation-BfTV0EQ1.cjs.js.map +1 -0
- package/dist/chunks/useGlobalListeners-BOOfV5Wh.es.js.map +1 -1
- package/dist/chunks/useGlobalListeners-CwGh-cDn.cjs.js +2 -0
- package/dist/chunks/useGlobalListeners-CwGh-cDn.cjs.js.map +1 -0
- package/dist/chunks/useGridListItem-BETI-KGO.cjs.js +2 -0
- package/dist/chunks/useGridListItem-BETI-KGO.cjs.js.map +1 -0
- package/dist/chunks/useGridListItem-DAGp36bD.es.js +811 -0
- package/dist/chunks/useGridListItem-DAGp36bD.es.js.map +1 -0
- package/dist/chunks/useHasTabbableChild-DXq72IE3.es.js +35 -0
- package/dist/chunks/useHasTabbableChild-DXq72IE3.es.js.map +1 -0
- package/dist/chunks/useHasTabbableChild-ytnnMmC_.cjs.js +2 -0
- package/dist/chunks/useHasTabbableChild-ytnnMmC_.cjs.js.map +1 -0
- package/dist/chunks/useHover-BQRSM3qT.es.js +86 -0
- package/dist/chunks/useHover-BQRSM3qT.es.js.map +1 -0
- package/dist/chunks/useHover-xrdh1GG9.cjs.js +2 -0
- package/dist/chunks/useHover-xrdh1GG9.cjs.js.map +1 -0
- package/dist/chunks/useLabel-BFqAB17s.cjs.js +2 -0
- package/dist/chunks/useLabel-BFqAB17s.cjs.js.map +1 -0
- package/dist/chunks/useLabel-DQaRD22u.es.js +24 -0
- package/dist/chunks/useLabel-DQaRD22u.es.js.map +1 -0
- package/dist/chunks/useLabels-BDqWMehi.es.js +18 -0
- package/dist/chunks/useLabels-BDqWMehi.es.js.map +1 -0
- package/dist/chunks/useLabels-C_UIaxmz.cjs.js +2 -0
- package/dist/chunks/useLabels-C_UIaxmz.cjs.js.map +1 -0
- package/dist/chunks/useListState-BHLGQlP3.es.js +139 -0
- package/dist/chunks/useListState-BHLGQlP3.es.js.map +1 -0
- package/dist/chunks/useListState-QQtJHpsQ.cjs.js +2 -0
- package/dist/chunks/useListState-QQtJHpsQ.cjs.js.map +1 -0
- package/dist/chunks/useLocalizedStringFormatter-DaRRUvyV.es.js +97 -0
- package/dist/chunks/useLocalizedStringFormatter-DaRRUvyV.es.js.map +1 -0
- package/dist/chunks/useLocalizedStringFormatter-kWoZGAh5.cjs.js +2 -0
- package/dist/chunks/useLocalizedStringFormatter-kWoZGAh5.cjs.js.map +1 -0
- package/dist/chunks/useObjectRef-4v2MxSjQ.cjs.js +2 -0
- package/dist/chunks/useObjectRef-4v2MxSjQ.cjs.js.map +1 -0
- package/dist/chunks/useObjectRef-CaJ5pgjX.es.js.map +1 -1
- package/dist/chunks/usePress-BuLomD_X.es.js +456 -0
- package/dist/chunks/usePress-BuLomD_X.es.js.map +1 -0
- package/dist/chunks/usePress-MEEljcWP.cjs.js +8 -0
- package/dist/chunks/usePress-MEEljcWP.cjs.js.map +1 -0
- package/dist/chunks/useProgressBar--OvVKto2.es.js +48 -0
- package/dist/chunks/useProgressBar--OvVKto2.es.js.map +1 -0
- package/dist/chunks/useProgressBar-C_mJ1JKi.cjs.js +2 -0
- package/dist/chunks/useProgressBar-C_mJ1JKi.cjs.js.map +1 -0
- package/dist/chunks/useSingleSelectListState-B29G7the.es.js +35 -0
- package/dist/chunks/useSingleSelectListState-B29G7the.es.js.map +1 -0
- package/dist/chunks/useSingleSelectListState-CsD7W9nK.cjs.js +2 -0
- package/dist/chunks/useSingleSelectListState-CsD7W9nK.cjs.js.map +1 -0
- package/dist/chunks/useSpinButton-Dyt6kG4o.cjs.js +2 -0
- package/dist/chunks/useSpinButton-Dyt6kG4o.cjs.js.map +1 -0
- package/dist/chunks/useSpinButton-YcV6vlPf.es.js +433 -0
- package/dist/chunks/useSpinButton-YcV6vlPf.es.js.map +1 -0
- package/dist/chunks/useSyncRef-BRCOnlwB.cjs.js +2 -0
- package/dist/chunks/useSyncRef-BRCOnlwB.cjs.js.map +1 -0
- package/dist/chunks/useSyncRef-BpLviItW.es.js +13 -0
- package/dist/chunks/useSyncRef-BpLviItW.es.js.map +1 -0
- package/dist/chunks/useTextField-B1RrrtMI.cjs.js +2 -0
- package/dist/chunks/useTextField-B1RrrtMI.cjs.js.map +1 -0
- package/dist/chunks/useTextField-yuaT8-G4.es.js +91 -0
- package/dist/chunks/useTextField-yuaT8-G4.es.js.map +1 -0
- package/dist/chunks/useToggle-DKP3zVOY.es.js +62 -0
- package/dist/chunks/useToggle-DKP3zVOY.es.js.map +1 -0
- package/dist/chunks/useToggle-DWRQYar0.cjs.js +2 -0
- package/dist/chunks/useToggle-DWRQYar0.cjs.js.map +1 -0
- package/dist/chunks/useToggleState-D7k4zllv.cjs.js +2 -0
- package/dist/chunks/useToggleState-D7k4zllv.cjs.js.map +1 -0
- package/dist/chunks/useToggleState-Uh0wTgdI.es.js.map +1 -1
- package/dist/chunks/useToolbar-CbJkugif.es.js +55 -0
- package/dist/chunks/useToolbar-CbJkugif.es.js.map +1 -0
- package/dist/chunks/useToolbar-D0DQSSBf.cjs.js +2 -0
- package/dist/chunks/useToolbar-D0DQSSBf.cjs.js.map +1 -0
- package/dist/chunks/useUpdateEffect-CCDx8D4X.es.js.map +1 -1
- package/dist/chunks/useUpdateEffect-sk3kiVGz.cjs.js +2 -0
- package/dist/chunks/useUpdateEffect-sk3kiVGz.cjs.js.map +1 -0
- package/dist/chunks/utils-B6pV5ewr.es.js +128 -0
- package/dist/chunks/utils-B6pV5ewr.es.js.map +1 -0
- package/dist/chunks/utils-Bv1frUk6.cjs.js +2 -0
- package/dist/chunks/utils-Bv1frUk6.cjs.js.map +1 -0
- package/dist/chunks/utils-DVb3jcp5.cjs.js +2 -0
- package/dist/chunks/utils-DVb3jcp5.cjs.js.map +1 -0
- package/dist/chunks/utils-oAGBWzI5.es.js +190 -0
- package/dist/chunks/utils-oAGBWzI5.es.js.map +1 -0
- package/dist/chunks/visually-hidden-BjtXUoFK.cjs.js +2 -0
- package/dist/chunks/visually-hidden-BjtXUoFK.cjs.js.map +1 -0
- package/dist/chunks/visually-hidden-Dj5CT-u_.es.js +11 -0
- package/dist/chunks/visually-hidden-Dj5CT-u_.es.js.map +1 -0
- package/dist/components/accordion/accordion.d.ts +116 -11
- package/dist/components/accordion/accordion.recipe.d.ts +13 -13
- package/dist/components/accordion/accordion.slots.d.ts +5 -5
- package/dist/components/accordion/accordion.types.d.ts +15 -5
- package/dist/components/accordion/components/accordion.content.d.ts +12 -0
- package/dist/components/accordion/components/accordion.header-right-content.d.ts +13 -0
- package/dist/components/accordion/components/accordion.header.d.ts +13 -0
- package/dist/components/accordion/components/accordion.item.d.ts +13 -0
- package/dist/components/accordion/components/accordion.root.d.ts +12 -0
- package/dist/components/accordion/components/index.d.ts +5 -0
- package/dist/components/accordion.cjs +1 -1
- package/dist/components/accordion.es.js +8 -7
- package/dist/components/accordion.es.js.map +1 -1
- package/dist/components/alert/alert.d.ts +84 -5
- package/dist/components/alert/alert.recipe.d.ts +1 -23
- package/dist/components/alert/alert.slots.d.ts +8 -13
- package/dist/components/alert/alert.types.d.ts +9 -6
- package/dist/components/alert/components/alert.actions.d.ts +5 -0
- package/dist/components/alert/components/alert.description.d.ts +5 -0
- package/dist/components/alert/components/alert.dismiss-button.d.ts +5 -0
- package/dist/components/alert/components/alert.root.d.ts +2 -4
- package/dist/components/alert/components/alert.title.d.ts +5 -0
- package/dist/components/alert/components/index.d.ts +5 -0
- package/dist/components/alert.cjs +1 -1
- package/dist/components/alert.es.js +1 -1
- package/dist/components/avatar/avatar.d.ts +22 -0
- package/dist/components/avatar/avatar.i18n.d.ts +7 -0
- package/dist/components/avatar/avatar.slots.d.ts +1 -1
- package/dist/components/avatar/avatar.types.d.ts +2 -1
- package/dist/components/avatar.cjs +1 -1
- package/dist/components/avatar.es.js +1 -1
- package/dist/components/badge/badge.slots.d.ts +1 -1
- package/dist/components/badge/badge.types.d.ts +2 -1
- package/dist/components/badge.cjs +1 -1
- package/dist/components/badge.es.js +1 -1
- package/dist/components/button/button.d.ts +23 -1
- package/dist/components/button/button.recipe.d.ts +0 -14
- package/dist/components/button/button.slots.d.ts +2 -2
- package/dist/components/button/button.types.d.ts +6 -5
- package/dist/components/button.cjs +1 -1
- package/dist/components/button.es.js +1 -1
- package/dist/components/calendar/calendar.i18n.d.ts +22 -0
- package/dist/components/calendar/calendar.recipe.d.ts +1 -1
- package/dist/components/calendar/calendar.slots.d.ts +8 -8
- package/dist/components/calendar/calendar.types.d.ts +42 -2
- package/dist/components/calendar/components/index.d.ts +3 -0
- package/dist/components/calendar.cjs +1 -1
- package/dist/components/calendar.es.js +1 -1
- package/dist/components/card/card.d.ts +66 -4
- package/dist/components/card/card.recipe.d.ts +1 -1
- package/dist/components/card/card.slots.d.ts +5 -8
- package/dist/components/card/card.types.d.ts +4 -3
- package/dist/components/card/components/card.content.d.ts +5 -0
- package/dist/components/card/components/card.header.d.ts +5 -0
- package/dist/components/card/components/card.root.d.ts +3 -5
- package/dist/components/card/components/index.d.ts +3 -0
- package/dist/components/card.cjs +1 -1
- package/dist/components/card.es.js +1 -1
- package/dist/components/checkbox/checkbox.slots.d.ts +5 -5
- package/dist/components/checkbox/checkbox.types.d.ts +4 -3
- package/dist/components/checkbox.cjs +1 -1
- package/dist/components/checkbox.es.js +1 -1
- package/dist/components/collapsible-motion/collapsible-motion.d.ts +1 -3
- package/dist/components/collapsible-motion/collapsible-motion.recipe.d.ts +1 -1
- package/dist/components/collapsible-motion/collapsible-motion.slots.d.ts +2 -2
- package/dist/components/collapsible-motion/collapsible-motion.types.d.ts +4 -3
- package/dist/components/collapsible-motion/components/collapsible-motion-content.d.ts +3 -1
- package/dist/components/collapsible-motion/components/collapsible-motion-root.d.ts +2 -0
- package/dist/components/collapsible-motion/components/collapsible-motion-trigger.d.ts +3 -1
- package/dist/components/collapsible-motion/components/index.d.ts +3 -0
- package/dist/components/collapsible-motion/index.d.ts +1 -1
- package/dist/components/collapsible-motion.cjs +1 -1
- package/dist/components/collapsible-motion.es.js +5 -2
- package/dist/components/combobox/combobox.d.ts +44 -4
- package/dist/components/combobox/combobox.i18n.d.ts +32 -0
- package/dist/components/combobox/combobox.recipe.d.ts +1 -1
- package/dist/components/combobox/combobox.slots.d.ts +15 -13
- package/dist/components/combobox/combobox.types.d.ts +6 -5
- package/dist/components/combobox/components/combobox.leading-element.d.ts +2 -0
- package/dist/components/combobox/components/combobox.multi-select-button-group.d.ts +5 -0
- package/dist/components/combobox/components/combobox.multi-select-root.d.ts +5 -0
- package/dist/components/combobox/components/combobox.multi-select-tag-group.d.ts +5 -0
- package/dist/components/combobox/components/combobox.option-group.d.ts +5 -0
- package/dist/components/combobox/components/combobox.option.d.ts +5 -0
- package/dist/components/combobox/components/combobox.options.d.ts +5 -0
- package/dist/components/combobox/components/combobox.root.d.ts +1 -1
- package/dist/components/combobox/components/combobox.single-select-button-group.d.ts +5 -0
- package/dist/components/combobox/components/combobox.single-select-input.d.ts +5 -0
- package/dist/components/combobox/components/combobox.single-select-root.d.ts +5 -0
- package/dist/components/combobox/components/index.d.ts +11 -0
- package/dist/components/combobox.cjs +1 -1
- package/dist/components/combobox.es.js +2 -5
- package/dist/components/components.cjs +1 -1
- package/dist/components/components.es.js +6 -9
- package/dist/components/data-table/components/data-table.body.d.ts +5 -0
- package/dist/components/data-table/components/data-table.cell.d.ts +9 -1
- package/dist/components/data-table/components/data-table.column.d.ts +5 -0
- package/dist/components/data-table/components/data-table.footer.d.ts +5 -0
- package/dist/components/data-table/components/data-table.header.d.ts +5 -0
- package/dist/components/data-table/components/data-table.layout-settings-panel.d.ts +4 -0
- package/dist/components/data-table/components/data-table.manager.d.ts +9 -0
- package/dist/components/data-table/components/data-table.root.d.ts +5 -0
- package/dist/components/data-table/components/data-table.table.d.ts +5 -0
- package/dist/components/data-table/components/data-table.visible-columns-panel.d.ts +7 -0
- package/dist/components/data-table/components/index.d.ts +10 -0
- package/dist/components/data-table/constants.d.ts +4 -0
- package/dist/components/data-table/data-table.d.ts +235 -13
- package/dist/components/data-table/data-table.i18n.d.ts +157 -0
- package/dist/components/data-table/data-table.recipe.d.ts +1 -1
- package/dist/components/data-table/data-table.slots.d.ts +14 -14
- package/dist/components/data-table/data-table.types.d.ts +21 -7
- package/dist/components/data-table/index.d.ts +1 -0
- package/dist/components/data-table/test-data.d.ts +4 -1
- package/dist/components/data-table.cjs +1 -1
- package/dist/components/data-table.es.js +10 -8
- package/dist/components/date-input/date-input.slots.d.ts +5 -5
- package/dist/components/date-input.cjs +1 -1
- package/dist/components/date-input.es.js +1 -1
- package/dist/components/date-picker/components/date-picker.custom-context.d.ts +6 -0
- package/dist/components/date-picker/components/date-picker.time-input.d.ts +8 -0
- package/dist/components/date-picker/components/index.d.ts +2 -0
- package/dist/components/date-picker/date-picker.i18n.d.ts +1 -2
- package/dist/components/date-picker/date-picker.recipe.d.ts +1 -1
- package/dist/components/date-picker/date-picker.slots.d.ts +6 -6
- package/dist/components/date-picker/date-picker.types.d.ts +2 -1
- package/dist/components/date-picker.cjs +1 -1
- package/dist/components/date-picker.es.js +1 -1
- package/dist/components/date-range-picker/date-range-picker.d.ts +2 -0
- package/dist/components/date-range-picker/date-range-picker.i18n.d.ts +67 -0
- package/dist/components/date-range-picker/date-range-picker.recipe.d.ts +1 -1
- package/dist/components/date-range-picker/date-range-picker.slots.d.ts +8 -8
- package/dist/components/date-range-picker-field.cjs +2 -0
- package/dist/components/date-range-picker-field.cjs.map +1 -0
- package/dist/components/date-range-picker-field.es.js +5 -0
- package/dist/components/date-range-picker-field.es.js.map +1 -0
- package/dist/components/date-range-picker.cjs +1 -1
- package/dist/components/date-range-picker.es.js +1 -1
- package/dist/components/dialog/components/dialog.body.d.ts +5 -0
- package/dist/components/dialog/components/dialog.close-trigger.d.ts +5 -0
- package/dist/components/dialog/components/dialog.content.d.ts +5 -0
- package/dist/components/dialog/components/dialog.footer.d.ts +5 -0
- package/dist/components/dialog/components/dialog.header.d.ts +5 -0
- package/dist/components/dialog/components/dialog.root.d.ts +5 -0
- package/dist/components/dialog/components/dialog.title.d.ts +5 -0
- package/dist/components/dialog/components/dialog.trigger.d.ts +5 -0
- package/dist/components/dialog/dialog.recipe.d.ts +1 -1
- package/dist/components/dialog/dialog.slots.d.ts +10 -19
- package/dist/components/dialog/dialog.types.d.ts +9 -8
- package/dist/components/dialog.cjs +1 -1
- package/dist/components/dialog.es.js +1 -1
- package/dist/components/draggable-list/components/draggable-list.field.d.ts +12 -1
- package/dist/components/draggable-list/components/draggable-list.item.d.ts +12 -1
- package/dist/components/draggable-list/components/draggable-list.root.d.ts +12 -1
- package/dist/components/draggable-list/components/index.d.ts +3 -0
- package/dist/components/draggable-list/draggable-list.d.ts +13 -6
- package/dist/components/draggable-list/draggable-list.slots.d.ts +4 -4
- package/dist/components/draggable-list/draggable-list.types.d.ts +22 -0
- package/dist/components/draggable-list.cjs +1 -1
- package/dist/components/draggable-list.es.js +1 -1
- package/dist/components/drawer/components/drawer.body.d.ts +5 -0
- package/dist/components/drawer/components/drawer.close-trigger.d.ts +5 -0
- package/dist/components/drawer/components/drawer.content.d.ts +5 -0
- package/dist/components/drawer/components/drawer.footer.d.ts +5 -0
- package/dist/components/drawer/components/drawer.header.d.ts +5 -0
- package/dist/components/drawer/components/drawer.title.d.ts +5 -0
- package/dist/components/drawer/components/drawer.trigger.d.ts +5 -0
- package/dist/components/drawer/drawer.recipe.d.ts +1 -1
- package/dist/components/drawer/drawer.slots.d.ts +10 -10
- package/dist/components/drawer/drawer.types.d.ts +28 -12
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer.cjs +1 -1
- package/dist/components/drawer.es.js +10 -2
- package/dist/components/field-errors/field-errors.d.ts +4 -0
- package/dist/components/field-errors/field-errors.slots.d.ts +4 -6
- package/dist/components/field-errors/field-errors.types.d.ts +7 -21
- package/dist/components/field-errors/index.d.ts +1 -1
- package/dist/components/fields.cjs +2 -0
- package/dist/components/fields.cjs.map +1 -0
- package/dist/components/fields.es.js +7 -0
- package/dist/components/fields.es.js.map +1 -0
- package/dist/components/form-field/components/form-field.description.d.ts +9 -1
- package/dist/components/form-field/components/form-field.error.d.ts +9 -1
- package/dist/components/form-field/components/form-field.info-box.d.ts +9 -1
- package/dist/components/form-field/components/form-field.input.d.ts +9 -1
- package/dist/components/form-field/components/form-field.label.d.ts +9 -1
- package/dist/components/form-field/components/form-field.root.d.ts +6 -3
- package/dist/components/form-field/components/index.d.ts +6 -0
- package/dist/components/form-field/form-field.d.ts +142 -14
- package/dist/components/form-field/form-field.recipe.d.ts +1 -1
- package/dist/components/form-field/form-field.slots.d.ts +7 -6
- package/dist/components/form-field/form-field.types.d.ts +6 -5
- package/dist/components/form-field.cjs +1 -1
- package/dist/components/form-field.es.js +1 -1
- package/dist/components/group.cjs +1 -1
- package/dist/components/group.es.js +1 -1
- package/dist/components/heading.cjs +1 -1
- package/dist/components/heading.es.js +1 -1
- package/dist/components/icon-button.cjs +1 -1
- package/dist/components/icon-button.es.js +1 -1
- package/dist/components/icon-toggle-button.cjs +1 -1
- package/dist/components/icon-toggle-button.es.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/inline-svg/inline-svg.slots.d.ts +1 -1
- package/dist/components/kbd.cjs +1 -1
- package/dist/components/kbd.es.js +1 -1
- package/dist/components/link/link.slots.d.ts +1 -1
- package/dist/components/link.cjs +1 -1
- package/dist/components/link.es.js +1 -1
- package/dist/components/loading-spinner/loading-spinner.i18n.d.ts +1 -2
- package/dist/components/loading-spinner/loading-spinner.recipe.d.ts +1 -1
- package/dist/components/loading-spinner/loading-spinner.slots.d.ts +5 -2
- package/dist/components/loading-spinner/loading-spinner.types.d.ts +3 -6
- package/dist/components/loading-spinner.cjs +1 -1
- package/dist/components/loading-spinner.es.js +1 -1
- package/dist/components/localized-field/components/index.d.ts +2 -0
- package/dist/components/localized-field/components/localized-field.locale-field.d.ts +9 -0
- package/dist/components/localized-field/components/localized-field.root.d.ts +9 -0
- package/dist/components/localized-field/localized-field.d.ts +32 -4
- package/dist/components/localized-field/localized-field.i18n.d.ts +1 -2
- package/dist/components/localized-field/localized-field.recipe.d.ts +1 -1
- package/dist/components/localized-field/localized-field.slots.d.ts +10 -10
- package/dist/components/localized-field/localized-field.types.d.ts +11 -10
- package/dist/components/localized-field/utils/localized-field.utils.d.ts +7 -7
- package/dist/components/localized-field/utils/test-data.d.ts +2 -2
- package/dist/components/localized-field.cjs +1 -1
- package/dist/components/localized-field.es.js +1 -1
- package/dist/components/menu/components/index.d.ts +7 -0
- package/dist/components/menu/components/menu.content.d.ts +5 -0
- package/dist/components/menu/components/menu.item.d.ts +5 -0
- package/dist/components/menu/components/menu.root.d.ts +5 -0
- package/dist/components/menu/components/menu.section-label.d.ts +3 -1
- package/dist/components/menu/components/menu.section.d.ts +5 -0
- package/dist/components/menu/components/menu.submenu-trigger.d.ts +5 -0
- package/dist/components/menu/components/menu.submenu.d.ts +5 -0
- package/dist/components/menu/components/menu.trigger.d.ts +5 -0
- package/dist/components/menu/menu.d.ts +117 -8
- package/dist/components/menu/menu.recipe.d.ts +1 -1
- package/dist/components/menu/menu.slots.d.ts +8 -8
- package/dist/components/menu/menu.types.d.ts +9 -3
- package/dist/components/money-input/index.d.ts +1 -1
- package/dist/components/money-input/money-input.d.ts +6 -6
- package/dist/components/money-input/money-input.i18n.d.ts +1 -2
- package/dist/components/money-input/money-input.recipe.d.ts +3 -7
- package/dist/components/money-input/money-input.slots.d.ts +6 -6
- package/dist/components/money-input/money-input.types.d.ts +12 -11
- package/dist/components/money-input/utils/parsing-utilities.d.ts +10 -10
- package/dist/components/money-input/utils/static-methods.d.ts +5 -5
- package/dist/components/money-input.cjs +1 -1
- package/dist/components/money-input.es.js +1 -1
- package/dist/components/multiline-text-input/hooks/use-autogrow.d.ts +2 -2
- package/dist/components/multiline-text-input/multiline-text-input.recipe.d.ts +1 -1
- package/dist/components/multiline-text-input/multiline-text-input.slots.d.ts +3 -3
- package/dist/components/multiline-text-input/multiline-text-input.types.d.ts +2 -1
- package/dist/components/multiline-text-input.cjs +1 -1
- package/dist/components/multiline-text-input.es.js +1 -1
- package/dist/components/nimbus-i18n-provider/index.d.ts +2 -0
- package/dist/components/nimbus-i18n-provider/nimbus-i18n-provider.d.ts +16 -0
- package/dist/components/nimbus-i18n-provider/nimbus-i18n-provider.types.d.ts +16 -0
- package/dist/components/nimbus-i18n-provider.cjs +2 -0
- package/dist/components/nimbus-i18n-provider.cjs.map +1 -0
- package/dist/components/nimbus-i18n-provider.es.js +5 -0
- package/dist/components/nimbus-i18n-provider.es.js.map +1 -0
- package/dist/components/nimbus-provider/index.d.ts +1 -0
- package/dist/components/nimbus-provider/nimbus-provider.d.ts +1 -1
- package/dist/components/nimbus-provider.cjs +1 -1
- package/dist/components/nimbus-provider.es.js +3 -1
- package/dist/components/nimbus-provider.es.js.map +1 -1
- package/dist/components/number-input/number-input.i18n.d.ts +1 -2
- package/dist/components/number-input/number-input.recipe.d.ts +1 -1
- package/dist/components/number-input/number-input.slots.d.ts +6 -6
- package/dist/components/number-input/number-input.types.d.ts +3 -2
- package/dist/components/number-input.cjs +1 -1
- package/dist/components/number-input.es.js +1 -1
- package/dist/components/pagination/pagination.i18n.d.ts +42 -0
- package/dist/components/pagination.cjs +1 -1
- package/dist/components/pagination.es.js +1 -1
- package/dist/components/password-input/password-input.i18n.d.ts +1 -2
- package/dist/components/password-input.cjs +1 -1
- package/dist/components/password-input.es.js +1 -1
- package/dist/components/patterns.cjs +2 -0
- package/dist/components/patterns.cjs.map +1 -0
- package/dist/components/patterns.es.js +7 -0
- package/dist/components/patterns.es.js.map +1 -0
- package/dist/components/popover.cjs +1 -1
- package/dist/components/popover.es.js +1 -1
- package/dist/components/progress-bar/progress-bar.recipe.d.ts +1 -1
- package/dist/components/progress-bar/progress-bar.slots.d.ts +6 -6
- package/dist/components/progress-bar/progress-bar.types.d.ts +4 -4
- package/dist/components/progress-bar.cjs +1 -1
- package/dist/components/progress-bar.es.js +1 -1
- package/dist/components/radio-input/components/index.d.ts +2 -0
- package/dist/components/radio-input/components/radio-input.option.d.ts +8 -0
- package/dist/components/radio-input/components/radio-input.root.d.ts +2 -1
- package/dist/components/radio-input/radio-input.d.ts +28 -3
- package/dist/components/radio-input/radio-input.recipe.d.ts +1 -1
- package/dist/components/radio-input/radio-input.slots.d.ts +2 -2
- package/dist/components/radio-input/radio-input.types.d.ts +3 -2
- package/dist/components/radio-input.cjs +1 -1
- package/dist/components/radio-input.es.js +2 -4
- package/dist/components/range-calendar/components/index.d.ts +3 -0
- package/dist/components/range-calendar/components/range-calendar.grids.d.ts +6 -0
- package/dist/components/range-calendar/components/range-calendar.header.d.ts +6 -0
- package/dist/components/range-calendar/range-calendar.d.ts +15 -1
- package/dist/components/range-calendar/range-calendar.i18n.d.ts +22 -0
- package/dist/components/range-calendar/range-calendar.recipe.d.ts +1 -1
- package/dist/components/range-calendar/range-calendar.slots.d.ts +8 -8
- package/dist/components/range-calendar/range-calendar.types.d.ts +3 -2
- package/dist/components/range-calendar.cjs +1 -1
- package/dist/components/range-calendar.es.js +1 -1
- package/dist/components/rich-text-input/components/index.d.ts +3 -0
- package/dist/components/rich-text-input/constants/text-styles.d.ts +6 -1
- package/dist/components/rich-text-input/hooks/use-toolbar-state.d.ts +4 -2
- package/dist/components/rich-text-input/rich-text-input.i18n.d.ts +122 -0
- package/dist/components/rich-text-input/rich-text-input.slots.d.ts +2 -2
- package/dist/components/rich-text-input/utils/index.d.ts +0 -1
- package/dist/components/rich-text-input.cjs +1 -1
- package/dist/components/rich-text-input.es.js +1 -1
- package/dist/components/scoped-search-input/scoped-search-input.d.ts +10 -0
- package/dist/components/scoped-search-input/scoped-search-input.i18n.d.ts +1 -12
- package/dist/components/scoped-search-input/scoped-search-input.recipe.d.ts +1 -1
- package/dist/components/scoped-search-input/scoped-search-input.slots.d.ts +6 -6
- package/dist/components/scoped-search-input/scoped-search-input.types.d.ts +2 -1
- package/dist/components/scoped-search-input.cjs +1 -1
- package/dist/components/scoped-search-input.cjs.map +1 -1
- package/dist/components/scoped-search-input.es.js +2 -150
- package/dist/components/scoped-search-input.es.js.map +1 -1
- package/dist/components/search-input/search-input.d.ts +3 -0
- package/dist/components/search-input/search-input.i18n.d.ts +1 -2
- package/dist/components/search-input/search-input.recipe.d.ts +1 -1
- package/dist/components/search-input/search-input.slots.d.ts +5 -12
- package/dist/components/search-input/search-input.types.d.ts +2 -1
- package/dist/components/search-input.cjs +1 -1
- package/dist/components/search-input.es.js +1 -1
- package/dist/components/select/components/index.d.ts +5 -0
- package/dist/components/select/components/select.clear-button.d.ts +5 -0
- package/dist/components/select/components/select.option-group.d.ts +5 -0
- package/dist/components/select/components/select.option.d.ts +5 -0
- package/dist/components/select/components/select.options.d.ts +5 -0
- package/dist/components/select/components/select.root.d.ts +2 -4
- package/dist/components/select/select.d.ts +0 -10
- package/dist/components/select/select.i18n.d.ts +1 -2
- package/dist/components/select/select.recipe.d.ts +1 -1
- package/dist/components/select/select.slots.d.ts +7 -7
- package/dist/components/select/select.types.d.ts +5 -5
- package/dist/components/select.cjs +1 -1
- package/dist/components/select.es.js +2 -6
- package/dist/components/separator/separator.types.d.ts +2 -1
- package/dist/components/separator.cjs +1 -1
- package/dist/components/separator.es.js +1 -1
- package/dist/components/spacer/spacer.types.d.ts +2 -1
- package/dist/components/split-button/split-button.d.ts +0 -1
- package/dist/components/split-button/split-button.i18n.d.ts +7 -0
- package/dist/components/split-button/split-button.slots.d.ts +3 -3
- package/dist/components/split-button/split-button.types.d.ts +1 -1
- package/dist/components/split-button.cjs +1 -1
- package/dist/components/split-button.es.js +1 -1
- package/dist/components/switch/switch.recipe.d.ts +8 -8
- package/dist/components/switch/switch.slots.d.ts +3 -3
- package/dist/components/switch/switch.types.d.ts +3 -2
- package/dist/components/switch.cjs +1 -1
- package/dist/components/switch.es.js +1 -1
- package/dist/components/table/table.recipe.d.ts +1 -1
- package/dist/components/tabs/components/index.d.ts +5 -0
- package/dist/components/tabs/components/tabs.list.d.ts +3 -1
- package/dist/components/tabs/components/tabs.panel.d.ts +1 -1
- package/dist/components/tabs/components/tabs.panels.d.ts +1 -1
- package/dist/components/tabs/components/tabs.root.d.ts +1 -1
- package/dist/components/tabs/components/tabs.tab.d.ts +3 -1
- package/dist/components/tabs/tabs.d.ts +98 -6
- package/dist/components/tabs/tabs.recipe.d.ts +1 -1
- package/dist/components/tabs/tabs.slots.d.ts +3 -3
- package/dist/components/tabs/tabs.types.d.ts +6 -5
- package/dist/components/tabs.cjs +1 -1
- package/dist/components/tabs.es.js +6 -6
- package/dist/components/tag-group/components/index.d.ts +3 -0
- package/dist/components/tag-group/components/tag-group.root.d.ts +2 -4
- package/dist/components/tag-group/components/tag-group.tag-list.d.ts +5 -0
- package/dist/components/tag-group/components/tag-group.tag.d.ts +5 -0
- package/dist/components/tag-group/tag-group.d.ts +59 -0
- package/dist/components/tag-group/tag-group.i18n.d.ts +7 -0
- package/dist/components/tag-group/tag-group.types.d.ts +4 -3
- package/dist/components/tag-group.cjs +1 -1
- package/dist/components/tag-group.es.js +1 -1
- package/dist/components/text-input/text-input.d.ts +24 -6
- package/dist/components/text-input/text-input.recipe.d.ts +1 -1
- package/dist/components/text-input/text-input.slots.d.ts +6 -13
- package/dist/components/text-input/text-input.types.d.ts +32 -2
- package/dist/components/text-input-field.cjs +2 -0
- package/dist/components/text-input-field.cjs.map +1 -0
- package/dist/components/text-input-field.es.js +5 -0
- package/dist/components/text-input-field.es.js.map +1 -0
- package/dist/components/text-input.cjs +1 -1
- package/dist/components/text-input.es.js +1 -1
- package/dist/components/text.cjs +1 -1
- package/dist/components/text.es.js +1 -1
- package/dist/components/time-input/time-input.slots.d.ts +5 -5
- package/dist/components/time-input.cjs +1 -1
- package/dist/components/time-input.es.js +1 -1
- package/dist/components/toggle-button/toggle-button.recipe.d.ts +0 -14
- package/dist/components/toggle-button/toggle-button.slots.d.ts +4 -11
- package/dist/components/toggle-button/toggle-button.types.d.ts +5 -4
- package/dist/components/toggle-button-group/components/toggle-button-group.root.d.ts +0 -1
- package/dist/components/toggle-button-group/toggle-button-group.recipe.d.ts +2 -2
- package/dist/components/toggle-button-group/toggle-button-group.types.d.ts +6 -4
- package/dist/components/toggle-button-group.cjs +1 -1
- package/dist/components/toggle-button-group.es.js +1 -1
- package/dist/components/toggle-button.cjs +1 -1
- package/dist/components/toggle-button.es.js +1 -1
- package/dist/components/toolbar/toolbar.recipe.d.ts +6 -6
- package/dist/components/toolbar.cjs +1 -1
- package/dist/components/toolbar.es.js +1 -1
- package/dist/components/tooltip/components/tooltip.root.d.ts +0 -1
- package/dist/components/tooltip/tooltip.d.ts +53 -1
- package/dist/components/tooltip/tooltip.types.d.ts +2 -2
- package/dist/components/tooltip.cjs +1 -1
- package/dist/components/tooltip.es.js +4 -6
- package/dist/components/visually-hidden.cjs +1 -1
- package/dist/components/visually-hidden.es.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +358 -345
- package/dist/index.es.js.map +1 -1
- package/dist/patterns/fields/date-range-picker-field/date-range-picker-field.d.ts +27 -0
- package/dist/patterns/fields/date-range-picker-field/date-range-picker-field.types.d.ts +55 -0
- package/dist/patterns/fields/date-range-picker-field/index.d.ts +1 -0
- package/dist/patterns/fields/index.d.ts +2 -0
- package/dist/patterns/fields/text-input-field/index.d.ts +2 -0
- package/dist/patterns/fields/text-input-field/text-input-field.d.ts +28 -0
- package/dist/patterns/fields/text-input-field/text-input-field.types.d.ts +44 -0
- package/dist/patterns/index.d.ts +1 -0
- package/dist/theme/recipes/index.d.ts +8 -36
- package/dist/theme/slot-recipes/index.d.ts +50 -76
- package/dist/type-utils/index.d.ts +1 -0
- package/dist/type-utils/omit-props.d.ts +2 -13
- package/dist/type-utils/shared-types.d.ts +18 -0
- package/dist/utils/extract-aria-attributes.d.ts +6 -0
- package/dist/utils/index.d.ts +3 -2
- package/package.json +24 -19
- package/dist/chunks/Button-CFZnLKVR.cjs.js +0 -2
- package/dist/chunks/Button-CFZnLKVR.cjs.js.map +0 -1
- package/dist/chunks/Button-Dx3xzN8n.es.js +0 -79
- package/dist/chunks/Button-Dx3xzN8n.es.js.map +0 -1
- package/dist/chunks/CollectionBuilder-BiEelELF.cjs.js +0 -18
- package/dist/chunks/CollectionBuilder-BiEelELF.cjs.js.map +0 -1
- package/dist/chunks/CollectionBuilder-Wz-mnWjQ.es.js +0 -677
- package/dist/chunks/CollectionBuilder-Wz-mnWjQ.es.js.map +0 -1
- package/dist/chunks/DateField-CDTSjqvQ.cjs.js +0 -2
- package/dist/chunks/DateField-CDTSjqvQ.cjs.js.map +0 -1
- package/dist/chunks/DateField-DmPAxSnT.es.js +0 -2691
- package/dist/chunks/DateField-DmPAxSnT.es.js.map +0 -1
- package/dist/chunks/DatePicker-D8m8YbnD.es.js +0 -786
- package/dist/chunks/DatePicker-D8m8YbnD.es.js.map +0 -1
- package/dist/chunks/DatePicker-DCjrqg4Q.cjs.js +0 -2
- package/dist/chunks/DatePicker-DCjrqg4Q.cjs.js.map +0 -1
- package/dist/chunks/Dialog-Qpq4hk89.es.js +0 -1951
- package/dist/chunks/Dialog-Qpq4hk89.es.js.map +0 -1
- package/dist/chunks/Dialog-XGXh4NXU.cjs.js +0 -7
- package/dist/chunks/Dialog-XGXh4NXU.cjs.js.map +0 -1
- package/dist/chunks/DragAndDrop-BXEtfOEa.es.js +0 -76
- package/dist/chunks/DragAndDrop-BXEtfOEa.es.js.map +0 -1
- package/dist/chunks/DragAndDrop-Cu1BgmHe.cjs.js +0 -2
- package/dist/chunks/DragAndDrop-Cu1BgmHe.cjs.js.map +0 -1
- package/dist/chunks/FocusScope-BY2fddGq.es.js +0 -625
- package/dist/chunks/FocusScope-BY2fddGq.es.js.map +0 -1
- package/dist/chunks/FocusScope-vogC4IAT.cjs.js +0 -2
- package/dist/chunks/FocusScope-vogC4IAT.cjs.js.map +0 -1
- package/dist/chunks/Group-BBaUrRF9.es.js +0 -47
- package/dist/chunks/Group-BBaUrRF9.es.js.map +0 -1
- package/dist/chunks/Group-BX1EpD9E.cjs.js +0 -2
- package/dist/chunks/Group-BX1EpD9E.cjs.js.map +0 -1
- package/dist/chunks/Header-BmzdY2bW.cjs.js +0 -2
- package/dist/chunks/Header-BmzdY2bW.cjs.js.map +0 -1
- package/dist/chunks/Header-DFcQWjkP.es.js +0 -59
- package/dist/chunks/Header-DFcQWjkP.es.js.map +0 -1
- package/dist/chunks/Heading-CCs6OF_m.cjs.js +0 -2
- package/dist/chunks/Heading-CCs6OF_m.cjs.js.map +0 -1
- package/dist/chunks/Heading-lYSFVV4F.es.js +0 -1619
- package/dist/chunks/Heading-lYSFVV4F.es.js.map +0 -1
- package/dist/chunks/Hidden-j3Lbt7xL.es.js +0 -28
- package/dist/chunks/Hidden-j3Lbt7xL.es.js.map +0 -1
- package/dist/chunks/Input-Da2oLmEN.es.js +0 -43
- package/dist/chunks/Input-Da2oLmEN.es.js.map +0 -1
- package/dist/chunks/Input-_6sPm9s0.cjs.js +0 -2
- package/dist/chunks/Input-_6sPm9s0.cjs.js.map +0 -1
- package/dist/chunks/Label-BgrYyYXn.cjs.js +0 -2
- package/dist/chunks/Label-BgrYyYXn.cjs.js.map +0 -1
- package/dist/chunks/Label-qcXzazih.es.js +0 -17
- package/dist/chunks/Label-qcXzazih.es.js.map +0 -1
- package/dist/chunks/ListBox-CFvXqaPX.cjs.js +0 -2
- package/dist/chunks/ListBox-CFvXqaPX.cjs.js.map +0 -1
- package/dist/chunks/ListBox-_1Uk-5-7.es.js +0 -493
- package/dist/chunks/ListBox-_1Uk-5-7.es.js.map +0 -1
- package/dist/chunks/ListKeyboardDelegate-ByRdSpOe.es.js +0 -159
- package/dist/chunks/ListKeyboardDelegate-ByRdSpOe.es.js.map +0 -1
- package/dist/chunks/ListKeyboardDelegate-CYRgZzU8.cjs.js +0 -2
- package/dist/chunks/ListKeyboardDelegate-CYRgZzU8.cjs.js.map +0 -1
- package/dist/chunks/Modal-CVOcKPNx.cjs.js +0 -2
- package/dist/chunks/Modal-CVOcKPNx.cjs.js.map +0 -1
- package/dist/chunks/Modal-DZrVgGsJ.es.js +0 -197
- package/dist/chunks/Modal-DZrVgGsJ.es.js.map +0 -1
- package/dist/chunks/OverlayArrow-CYjyBtg8.cjs.js +0 -2
- package/dist/chunks/OverlayArrow-CYjyBtg8.cjs.js.map +0 -1
- package/dist/chunks/OverlayArrow-CwYMJqgj.es.js +0 -491
- package/dist/chunks/OverlayArrow-CwYMJqgj.es.js.map +0 -1
- package/dist/chunks/ProgressBar-C9Y3C7_B.cjs.js +0 -2
- package/dist/chunks/ProgressBar-C9Y3C7_B.cjs.js.map +0 -1
- package/dist/chunks/ProgressBar-dYIUhB6B.es.js +0 -42
- package/dist/chunks/ProgressBar-dYIUhB6B.es.js.map +0 -1
- package/dist/chunks/RSPContexts-DV4cFLUV.es.js +0 -9
- package/dist/chunks/RSPContexts-DV4cFLUV.es.js.map +0 -1
- package/dist/chunks/SSRProvider-Bc-sMhsT.cjs.js +0 -2
- package/dist/chunks/SSRProvider-Bc-sMhsT.cjs.js.map +0 -1
- package/dist/chunks/SSRProvider-Cu8KibIK.es.js +0 -51
- package/dist/chunks/SSRProvider-Cu8KibIK.es.js.map +0 -1
- package/dist/chunks/SelectionIndicator-Cp3OYqg6.cjs.js +0 -2
- package/dist/chunks/SelectionIndicator-Cp3OYqg6.cjs.js.map +0 -1
- package/dist/chunks/SelectionIndicator-DopimabS.es.js +0 -17
- package/dist/chunks/SelectionIndicator-DopimabS.es.js.map +0 -1
- package/dist/chunks/SelectionManager-1rNaWE7D.cjs.js +0 -2
- package/dist/chunks/SelectionManager-1rNaWE7D.cjs.js.map +0 -1
- package/dist/chunks/SelectionManager-DMLLo5N3.es.js +0 -1132
- package/dist/chunks/SelectionManager-DMLLo5N3.es.js.map +0 -1
- package/dist/chunks/Separator-6J1KiDlQ.cjs.js +0 -2
- package/dist/chunks/Separator-6J1KiDlQ.cjs.js.map +0 -1
- package/dist/chunks/Separator-DyXjJGoH.es.js +0 -55
- package/dist/chunks/Separator-DyXjJGoH.es.js.map +0 -1
- package/dist/chunks/TextArea-DItoG16s.es.js +0 -42
- package/dist/chunks/TextArea-DItoG16s.es.js.map +0 -1
- package/dist/chunks/TextArea-Y5635aIM.cjs.js +0 -2
- package/dist/chunks/TextArea-Y5635aIM.cjs.js.map +0 -1
- package/dist/chunks/ToggleButton-1I5cetxI.cjs.js +0 -2
- package/dist/chunks/ToggleButton-1I5cetxI.cjs.js.map +0 -1
- package/dist/chunks/ToggleButton-881iW8P_.es.js +0 -150
- package/dist/chunks/ToggleButton-881iW8P_.es.js.map +0 -1
- package/dist/chunks/VisuallyHidden-C1WQXLCm.cjs.js +0 -2
- package/dist/chunks/VisuallyHidden-C1WQXLCm.cjs.js.map +0 -1
- package/dist/chunks/VisuallyHidden-Dxf1qswV.es.js +0 -41
- package/dist/chunks/VisuallyHidden-Dxf1qswV.es.js.map +0 -1
- package/dist/chunks/accordion-B2FLWAh5.cjs.js +0 -2
- package/dist/chunks/accordion-B2FLWAh5.cjs.js.map +0 -1
- package/dist/chunks/accordion-CKDnNkVv.es.js +0 -221
- package/dist/chunks/accordion-CKDnNkVv.es.js.map +0 -1
- package/dist/chunks/alert-CPHjPe4-.cjs.js +0 -2
- package/dist/chunks/alert-CPHjPe4-.cjs.js.map +0 -1
- package/dist/chunks/alert-lNg0Rz2w.es.js +0 -138
- package/dist/chunks/alert-lNg0Rz2w.es.js.map +0 -1
- package/dist/chunks/avatar-CTiSGVoD.es.js +0 -40
- package/dist/chunks/avatar-CTiSGVoD.es.js.map +0 -1
- package/dist/chunks/avatar-_o-uSXYy.cjs.js +0 -2
- package/dist/chunks/avatar-_o-uSXYy.cjs.js.map +0 -1
- package/dist/chunks/avatar.recipe-D3--Rkmb.cjs.js +0 -2
- package/dist/chunks/avatar.recipe-D3--Rkmb.cjs.js.map +0 -1
- package/dist/chunks/avatar.recipe-DfyPWbFZ.es.js +0 -39
- package/dist/chunks/avatar.recipe-DfyPWbFZ.es.js.map +0 -1
- package/dist/chunks/badge-Csn5glEd.es.js +0 -17
- package/dist/chunks/badge-Csn5glEd.es.js.map +0 -1
- package/dist/chunks/badge-mMpNb3Qj.cjs.js +0 -2
- package/dist/chunks/badge-mMpNb3Qj.cjs.js.map +0 -1
- package/dist/chunks/button-B5OOW-2z.cjs.js +0 -2
- package/dist/chunks/button-B5OOW-2z.cjs.js.map +0 -1
- package/dist/chunks/button-IZUJaJku.es.js +0 -62
- package/dist/chunks/button-IZUJaJku.es.js.map +0 -1
- package/dist/chunks/calendar-BkGJAIae.es.js +0 -187
- package/dist/chunks/calendar-BkGJAIae.es.js.map +0 -1
- package/dist/chunks/calendar-V0KeNCQ3.cjs.js +0 -2
- package/dist/chunks/calendar-V0KeNCQ3.cjs.js.map +0 -1
- package/dist/chunks/card-BB_1xrND.es.js +0 -78
- package/dist/chunks/card-BB_1xrND.es.js.map +0 -1
- package/dist/chunks/card-BPEsGx1J.cjs.js +0 -2
- package/dist/chunks/card-BPEsGx1J.cjs.js.map +0 -1
- package/dist/chunks/checkbox-BB-WJdal.es.js +0 -218
- package/dist/chunks/checkbox-BB-WJdal.es.js.map +0 -1
- package/dist/chunks/checkbox-Dod-yTj4.cjs.js +0 -2
- package/dist/chunks/checkbox-Dod-yTj4.cjs.js.map +0 -1
- package/dist/chunks/collapsible-motion-C7M_CLNI.cjs.js +0 -2
- package/dist/chunks/collapsible-motion-C7M_CLNI.cjs.js.map +0 -1
- package/dist/chunks/collapsible-motion-CSrKjF8X.es.js +0 -83
- package/dist/chunks/collapsible-motion-CSrKjF8X.es.js.map +0 -1
- package/dist/chunks/combobox-B5UxZWSX.cjs.js +0 -2
- package/dist/chunks/combobox-B5UxZWSX.cjs.js.map +0 -1
- package/dist/chunks/combobox-D_7gr3DY.es.js +0 -2425
- package/dist/chunks/combobox-D_7gr3DY.es.js.map +0 -1
- package/dist/chunks/context-OoV8SSWX.cjs.js +0 -2
- package/dist/chunks/context-OoV8SSWX.cjs.js.map +0 -1
- package/dist/chunks/context-R4YUlO9Y.es.js +0 -108
- package/dist/chunks/context-R4YUlO9Y.es.js.map +0 -1
- package/dist/chunks/data-table-C51WU0Cc.cjs.js +0 -2
- package/dist/chunks/data-table-C51WU0Cc.cjs.js.map +0 -1
- package/dist/chunks/data-table-ClMivKY1.es.js +0 -3585
- package/dist/chunks/data-table-ClMivKY1.es.js.map +0 -1
- package/dist/chunks/date-input-B_EuP5sc.es.js +0 -21
- package/dist/chunks/date-input-B_EuP5sc.es.js.map +0 -1
- package/dist/chunks/date-input-DvOM0DLT.cjs.js +0 -2
- package/dist/chunks/date-input-DvOM0DLT.cjs.js.map +0 -1
- package/dist/chunks/date-picker-CZAoPNsT.cjs.js +0 -2
- package/dist/chunks/date-picker-CZAoPNsT.cjs.js.map +0 -1
- package/dist/chunks/date-picker-DFpgLG1U.es.js +0 -220
- package/dist/chunks/date-picker-DFpgLG1U.es.js.map +0 -1
- package/dist/chunks/date-range-picker-DVuIeQQd.es.js +0 -281
- package/dist/chunks/date-range-picker-DVuIeQQd.es.js.map +0 -1
- package/dist/chunks/date-range-picker-iENzosfN.cjs.js +0 -2
- package/dist/chunks/date-range-picker-iENzosfN.cjs.js.map +0 -1
- package/dist/chunks/dialog-BwtIcIvd.es.js +0 -165
- package/dist/chunks/dialog-BwtIcIvd.es.js.map +0 -1
- package/dist/chunks/dialog-CKwC3dk3.cjs.js +0 -2
- package/dist/chunks/dialog-CKwC3dk3.cjs.js.map +0 -1
- package/dist/chunks/dialog.title-CP_ZeiK4.es.js +0 -152
- package/dist/chunks/dialog.title-CP_ZeiK4.es.js.map +0 -1
- package/dist/chunks/dialog.title-DOPP47Zy.cjs.js +0 -2
- package/dist/chunks/dialog.title-DOPP47Zy.cjs.js.map +0 -1
- package/dist/chunks/draggable-list-MGvr5-A-.cjs.js +0 -3
- package/dist/chunks/draggable-list-MGvr5-A-.cjs.js.map +0 -1
- package/dist/chunks/draggable-list-s43baxoM.es.js +0 -4211
- package/dist/chunks/draggable-list-s43baxoM.es.js.map +0 -1
- package/dist/chunks/drawer-BJ4qvGnj.es.js +0 -304
- package/dist/chunks/drawer-BJ4qvGnj.es.js.map +0 -1
- package/dist/chunks/drawer-DzW9wBMk.cjs.js +0 -2
- package/dist/chunks/drawer-DzW9wBMk.cjs.js.map +0 -1
- package/dist/chunks/extractStyleProps-DYXEhLtq.es.js +0 -11
- package/dist/chunks/extractStyleProps-DYXEhLtq.es.js.map +0 -1
- package/dist/chunks/extractStyleProps-Dk3fpLyQ.cjs.js +0 -2
- package/dist/chunks/extractStyleProps-Dk3fpLyQ.cjs.js.map +0 -1
- package/dist/chunks/focusSafely-BNAvQ-wF.cjs.js +0 -2
- package/dist/chunks/focusSafely-BNAvQ-wF.cjs.js.map +0 -1
- package/dist/chunks/focusSafely-BS2OU9MQ.es.js +0 -27
- package/dist/chunks/focusSafely-BS2OU9MQ.es.js.map +0 -1
- package/dist/chunks/form-field-BYlpCXdY.es.js +0 -231
- package/dist/chunks/form-field-BYlpCXdY.es.js.map +0 -1
- package/dist/chunks/form-field-CIGQxVVS.cjs.js +0 -2
- package/dist/chunks/form-field-CIGQxVVS.cjs.js.map +0 -1
- package/dist/chunks/getScrollParent-B8PotBOX.cjs.js +0 -2
- package/dist/chunks/getScrollParent-B8PotBOX.cjs.js.map +0 -1
- package/dist/chunks/getScrollParent-BS4bncfK.es.js +0 -10
- package/dist/chunks/getScrollParent-BS4bncfK.es.js.map +0 -1
- package/dist/chunks/group-BqUFlw5R.cjs.js +0 -2
- package/dist/chunks/group-BqUFlw5R.cjs.js.map +0 -1
- package/dist/chunks/group-CWADf2vF.es.js +0 -13
- package/dist/chunks/group-CWADf2vF.es.js.map +0 -1
- package/dist/chunks/heading-BTacGwo9.cjs.js +0 -2
- package/dist/chunks/heading-BTacGwo9.cjs.js.map +0 -1
- package/dist/chunks/heading-BtazVUd5.es.js +0 -25
- package/dist/chunks/heading-BtazVUd5.es.js.map +0 -1
- package/dist/chunks/icon-button-DQS2apw-.es.js +0 -14
- package/dist/chunks/icon-button-DQS2apw-.es.js.map +0 -1
- package/dist/chunks/icon-button-vWPrT-bR.cjs.js +0 -2
- package/dist/chunks/icon-button-vWPrT-bR.cjs.js.map +0 -1
- package/dist/chunks/icon-toggle-button-Bi-9Obfx.es.js +0 -13
- package/dist/chunks/icon-toggle-button-Bi-9Obfx.es.js.map +0 -1
- package/dist/chunks/icon-toggle-button-eLrsWehe.cjs.js +0 -2
- package/dist/chunks/icon-toggle-button-eLrsWehe.cjs.js.map +0 -1
- package/dist/chunks/index-CRFg4Mhx.cjs.js +0 -34
- package/dist/chunks/index-CRFg4Mhx.cjs.js.map +0 -1
- package/dist/chunks/index-CtB71yr7.es.js +0 -5655
- package/dist/chunks/index-CtB71yr7.es.js.map +0 -1
- package/dist/chunks/inertValue-B3AFhVG4.cjs.js +0 -2
- package/dist/chunks/inertValue-B3AFhVG4.cjs.js.map +0 -1
- package/dist/chunks/inertValue-B7loUihk.es.js +0 -9
- package/dist/chunks/inertValue-B7loUihk.es.js.map +0 -1
- package/dist/chunks/kbd-BaeV_DL-.cjs.js +0 -2
- package/dist/chunks/kbd-BaeV_DL-.cjs.js.map +0 -1
- package/dist/chunks/kbd-CH9rYghB.es.js +0 -15
- package/dist/chunks/kbd-CH9rYghB.es.js.map +0 -1
- package/dist/chunks/link-BEhlSTUU.es.js +0 -48
- package/dist/chunks/link-BEhlSTUU.es.js.map +0 -1
- package/dist/chunks/link-DpU4rPCp.cjs.js +0 -2
- package/dist/chunks/link-DpU4rPCp.cjs.js.map +0 -1
- package/dist/chunks/loading-spinner-BiVTAfmp.es.js +0 -59
- package/dist/chunks/loading-spinner-BiVTAfmp.es.js.map +0 -1
- package/dist/chunks/loading-spinner-DQM-6XnY.cjs.js +0 -2
- package/dist/chunks/loading-spinner-DQM-6XnY.cjs.js.map +0 -1
- package/dist/chunks/localized-field-C7Vribb2.cjs.js +0 -2
- package/dist/chunks/localized-field-C7Vribb2.cjs.js.map +0 -1
- package/dist/chunks/localized-field-D3G0Uy7Z.es.js +0 -470
- package/dist/chunks/localized-field-D3G0Uy7Z.es.js.map +0 -1
- package/dist/chunks/make-element-focusable-C4jhHHl0.es.js +0 -25
- package/dist/chunks/make-element-focusable-C4jhHHl0.es.js.map +0 -1
- package/dist/chunks/make-element-focusable-oedzOY_M.cjs.js +0 -2
- package/dist/chunks/make-element-focusable-oedzOY_M.cjs.js.map +0 -1
- package/dist/chunks/menu-D-vE6ZpM.es.js +0 -147
- package/dist/chunks/menu-D-vE6ZpM.es.js.map +0 -1
- package/dist/chunks/menu-DIepV2KZ.cjs.js +0 -2
- package/dist/chunks/menu-DIepV2KZ.cjs.js.map +0 -1
- package/dist/chunks/mergeProps-BA5Cwf5w.cjs.js +0 -2
- package/dist/chunks/mergeProps-BA5Cwf5w.cjs.js.map +0 -1
- package/dist/chunks/mergeProps-CzyOU2NE.es.js +0 -130
- package/dist/chunks/mergeProps-CzyOU2NE.es.js.map +0 -1
- package/dist/chunks/money-input-Cu_J86Eu.cjs.js +0 -2
- package/dist/chunks/money-input-Cu_J86Eu.cjs.js.map +0 -1
- package/dist/chunks/money-input-sk0Slpeu.es.js +0 -526
- package/dist/chunks/money-input-sk0Slpeu.es.js.map +0 -1
- package/dist/chunks/multiline-text-input-B9TBDieZ.cjs.js +0 -2
- package/dist/chunks/multiline-text-input-B9TBDieZ.cjs.js.map +0 -1
- package/dist/chunks/multiline-text-input-CilSJJaO.es.js +0 -64
- package/dist/chunks/multiline-text-input-CilSJJaO.es.js.map +0 -1
- package/dist/chunks/nimbus-provider-BHNFDQ0f.es.js +0 -101
- package/dist/chunks/nimbus-provider-BHNFDQ0f.es.js.map +0 -1
- package/dist/chunks/nimbus-provider-WX_qUCxo.cjs.js +0 -2
- package/dist/chunks/nimbus-provider-WX_qUCxo.cjs.js.map +0 -1
- package/dist/chunks/number-input-CktMxOdZ.es.js +0 -691
- package/dist/chunks/number-input-CktMxOdZ.es.js.map +0 -1
- package/dist/chunks/number-input-wMW-o4di.cjs.js +0 -2
- package/dist/chunks/number-input-wMW-o4di.cjs.js.map +0 -1
- package/dist/chunks/openLink-CY66vjvW.es.js +0 -105
- package/dist/chunks/openLink-CY66vjvW.es.js.map +0 -1
- package/dist/chunks/pagination-BWdg8s6g.cjs.js +0 -2
- package/dist/chunks/pagination-BWdg8s6g.cjs.js.map +0 -1
- package/dist/chunks/pagination-Bcq69Nv3.es.js +0 -160
- package/dist/chunks/pagination-Bcq69Nv3.es.js.map +0 -1
- package/dist/chunks/password-input-6MO4I-2j.es.js +0 -54
- package/dist/chunks/password-input-6MO4I-2j.es.js.map +0 -1
- package/dist/chunks/password-input-6SMjhXSO.cjs.js +0 -2
- package/dist/chunks/password-input-6SMjhXSO.cjs.js.map +0 -1
- package/dist/chunks/popover-CfEq5G5-.cjs.js +0 -2
- package/dist/chunks/popover-CfEq5G5-.cjs.js.map +0 -1
- package/dist/chunks/popover-DNaC7CwB.es.js +0 -14
- package/dist/chunks/popover-DNaC7CwB.es.js.map +0 -1
- package/dist/chunks/progress-bar-Bhp7W6Eo.cjs.js +0 -2
- package/dist/chunks/progress-bar-Bhp7W6Eo.cjs.js.map +0 -1
- package/dist/chunks/progress-bar-DwuOjOcH.es.js +0 -77
- package/dist/chunks/progress-bar-DwuOjOcH.es.js.map +0 -1
- package/dist/chunks/radio-input-4jw6HUjC.es.js +0 -350
- package/dist/chunks/radio-input-4jw6HUjC.es.js.map +0 -1
- package/dist/chunks/radio-input-Dp05SXja.cjs.js +0 -2
- package/dist/chunks/radio-input-Dp05SXja.cjs.js.map +0 -1
- package/dist/chunks/range-calendar-D55DTDbA.es.js +0 -187
- package/dist/chunks/range-calendar-D55DTDbA.es.js.map +0 -1
- package/dist/chunks/range-calendar-_dZfAsdG.cjs.js +0 -2
- package/dist/chunks/range-calendar-_dZfAsdG.cjs.js.map +0 -1
- package/dist/chunks/rich-text-input-BC8CBVio.es.js +0 -7801
- package/dist/chunks/rich-text-input-BC8CBVio.es.js.map +0 -1
- package/dist/chunks/rich-text-input-Da5WFZ3l.cjs.js +0 -24
- package/dist/chunks/rich-text-input-Da5WFZ3l.cjs.js.map +0 -1
- package/dist/chunks/scrollIntoView-DTfS0nWq.es.js +0 -96
- package/dist/chunks/scrollIntoView-DTfS0nWq.es.js.map +0 -1
- package/dist/chunks/scrollIntoView-x1EbcfEq.cjs.js +0 -2
- package/dist/chunks/scrollIntoView-x1EbcfEq.cjs.js.map +0 -1
- package/dist/chunks/search-input-BefkmgPy.cjs.js +0 -2
- package/dist/chunks/search-input-BefkmgPy.cjs.js.map +0 -1
- package/dist/chunks/search-input-DJy2NHYW.es.js +0 -361
- package/dist/chunks/search-input-DJy2NHYW.es.js.map +0 -1
- package/dist/chunks/select-BmMhTBo-.es.js +0 -775
- package/dist/chunks/select-BmMhTBo-.es.js.map +0 -1
- package/dist/chunks/select-DMsU6bk9.cjs.js +0 -2
- package/dist/chunks/select-DMsU6bk9.cjs.js.map +0 -1
- package/dist/chunks/separator-CvRn_J0r.cjs.js +0 -2
- package/dist/chunks/separator-CvRn_J0r.cjs.js.map +0 -1
- package/dist/chunks/separator-DJGUFG-o.es.js +0 -24
- package/dist/chunks/separator-DJGUFG-o.es.js.map +0 -1
- package/dist/chunks/split-button-BO52sL7h.cjs.js +0 -2
- package/dist/chunks/split-button-BO52sL7h.cjs.js.map +0 -1
- package/dist/chunks/split-button-BxyZmuNi.es.js +0 -100
- package/dist/chunks/split-button-BxyZmuNi.es.js.map +0 -1
- package/dist/chunks/switch-01hEhL9A.es.js +0 -67
- package/dist/chunks/switch-01hEhL9A.es.js.map +0 -1
- package/dist/chunks/switch-CdLhBEPq.cjs.js +0 -2
- package/dist/chunks/switch-CdLhBEPq.cjs.js.map +0 -1
- package/dist/chunks/tabs-CJ0OAUSR.cjs.js +0 -2
- package/dist/chunks/tabs-CJ0OAUSR.cjs.js.map +0 -1
- package/dist/chunks/tabs-Dhte-RCe.es.js +0 -428
- package/dist/chunks/tabs-Dhte-RCe.es.js.map +0 -1
- package/dist/chunks/tag-group-Btt0egzG.cjs.js +0 -2
- package/dist/chunks/tag-group-Btt0egzG.cjs.js.map +0 -1
- package/dist/chunks/tag-group-D2dgXSsV.es.js +0 -554
- package/dist/chunks/tag-group-D2dgXSsV.es.js.map +0 -1
- package/dist/chunks/text-BgiP8ZB6.es.js +0 -24
- package/dist/chunks/text-BgiP8ZB6.es.js.map +0 -1
- package/dist/chunks/text-CCW9kDT_.cjs.js +0 -2
- package/dist/chunks/text-CCW9kDT_.cjs.js.map +0 -1
- package/dist/chunks/text-input-CSAODlCw.es.js +0 -49
- package/dist/chunks/text-input-CSAODlCw.es.js.map +0 -1
- package/dist/chunks/text-input-DZdkCbdd.cjs.js +0 -2
- package/dist/chunks/text-input-DZdkCbdd.cjs.js.map +0 -1
- package/dist/chunks/time-input-CUEnTp-4.es.js +0 -21
- package/dist/chunks/time-input-CUEnTp-4.es.js.map +0 -1
- package/dist/chunks/time-input-zXykDANk.cjs.js +0 -2
- package/dist/chunks/time-input-zXykDANk.cjs.js.map +0 -1
- package/dist/chunks/toggle-button-DxMZsem4.cjs.js +0 -2
- package/dist/chunks/toggle-button-DxMZsem4.cjs.js.map +0 -1
- package/dist/chunks/toggle-button-awb1jBf8.es.js +0 -30
- package/dist/chunks/toggle-button-awb1jBf8.es.js.map +0 -1
- package/dist/chunks/toggle-button-group-CE2Urvj8.cjs.js +0 -2
- package/dist/chunks/toggle-button-group-CE2Urvj8.cjs.js.map +0 -1
- package/dist/chunks/toggle-button-group-Ce7ezOED.es.js +0 -29
- package/dist/chunks/toggle-button-group-Ce7ezOED.es.js.map +0 -1
- package/dist/chunks/toggle-button-group.recipe-CbCnJQP3.es.js +0 -244
- package/dist/chunks/toggle-button-group.recipe-CbCnJQP3.es.js.map +0 -1
- package/dist/chunks/toggle-button-group.recipe-DgySRvOW.cjs.js +0 -2
- package/dist/chunks/toggle-button-group.recipe-DgySRvOW.cjs.js.map +0 -1
- package/dist/chunks/toolbar-DV0l5MqA.cjs.js +0 -2
- package/dist/chunks/toolbar-DV0l5MqA.cjs.js.map +0 -1
- package/dist/chunks/toolbar-Dduysqqi.es.js +0 -61
- package/dist/chunks/toolbar-Dduysqqi.es.js.map +0 -1
- package/dist/chunks/tooltip-BPTOkK7W.cjs.js +0 -2
- package/dist/chunks/tooltip-BPTOkK7W.cjs.js.map +0 -1
- package/dist/chunks/tooltip-sgakxhiy.es.js +0 -268
- package/dist/chunks/tooltip-sgakxhiy.es.js.map +0 -1
- package/dist/chunks/useButton-KnJ6A32S.cjs.js +0 -2
- package/dist/chunks/useButton-KnJ6A32S.cjs.js.map +0 -1
- package/dist/chunks/useButton-_sJ3_8ha.es.js +0 -57
- package/dist/chunks/useButton-_sJ3_8ha.es.js.map +0 -1
- package/dist/chunks/useCollator-BHMZd1r6.es.js +0 -12
- package/dist/chunks/useCollator-BHMZd1r6.es.js.map +0 -1
- package/dist/chunks/useCollator-YVJAe1GI.cjs.js +0 -2
- package/dist/chunks/useCollator-YVJAe1GI.cjs.js.map +0 -1
- package/dist/chunks/useDateFormatter-4Wq50fMI.es.js +0 -1632
- package/dist/chunks/useDateFormatter-4Wq50fMI.es.js.map +0 -1
- package/dist/chunks/useDateFormatter-BBcUQTYP.cjs.js +0 -2
- package/dist/chunks/useDateFormatter-BBcUQTYP.cjs.js.map +0 -1
- package/dist/chunks/useDisclosureState-DtcHCDt4.es.js +0 -87
- package/dist/chunks/useDisclosureState-DtcHCDt4.es.js.map +0 -1
- package/dist/chunks/useDisclosureState-ipt8A1Kc.cjs.js +0 -2
- package/dist/chunks/useDisclosureState-ipt8A1Kc.cjs.js.map +0 -1
- package/dist/chunks/useEvent-Bh_fbauk.es.js +0 -22
- package/dist/chunks/useEvent-Bh_fbauk.es.js.map +0 -1
- package/dist/chunks/useEvent-CuUOU5WV.cjs.js +0 -2
- package/dist/chunks/useEvent-CuUOU5WV.cjs.js.map +0 -1
- package/dist/chunks/useField-B0j4t47V.es.js +0 -36
- package/dist/chunks/useField-B0j4t47V.es.js.map +0 -1
- package/dist/chunks/useField-C_piDZ9g.cjs.js +0 -2
- package/dist/chunks/useField-C_piDZ9g.cjs.js.map +0 -1
- package/dist/chunks/useFilter-CG8lxfCP.cjs.js +0 -2
- package/dist/chunks/useFilter-CG8lxfCP.cjs.js.map +0 -1
- package/dist/chunks/useFilter-DOfNzeZ9.es.js +0 -36
- package/dist/chunks/useFilter-DOfNzeZ9.es.js.map +0 -1
- package/dist/chunks/useFocus-CwNVYldV.es.js +0 -29
- package/dist/chunks/useFocus-CwNVYldV.es.js.map +0 -1
- package/dist/chunks/useFocus-DVHC9n4e.cjs.js +0 -2
- package/dist/chunks/useFocus-DVHC9n4e.cjs.js.map +0 -1
- package/dist/chunks/useFocusRing-BuJmrp03.cjs.js +0 -2
- package/dist/chunks/useFocusRing-BuJmrp03.cjs.js.map +0 -1
- package/dist/chunks/useFocusRing-DRIG5NVg.es.js +0 -35
- package/dist/chunks/useFocusRing-DRIG5NVg.es.js.map +0 -1
- package/dist/chunks/useFocusVisible-BIPjFmFE.es.js +0 -111
- package/dist/chunks/useFocusVisible-BIPjFmFE.es.js.map +0 -1
- package/dist/chunks/useFocusVisible-CN9NILN7.cjs.js +0 -2
- package/dist/chunks/useFocusVisible-CN9NILN7.cjs.js.map +0 -1
- package/dist/chunks/useFocusWithin-CfiDXiVK.es.js +0 -56
- package/dist/chunks/useFocusWithin-CfiDXiVK.es.js.map +0 -1
- package/dist/chunks/useFocusWithin-CucqUylS.cjs.js +0 -2
- package/dist/chunks/useFocusWithin-CucqUylS.cjs.js.map +0 -1
- package/dist/chunks/useFocusable-D1mzTlxa.es.js +0 -77
- package/dist/chunks/useFocusable-D1mzTlxa.es.js.map +0 -1
- package/dist/chunks/useFocusable-Dv8K4Git.cjs.js +0 -2
- package/dist/chunks/useFocusable-Dv8K4Git.cjs.js.map +0 -1
- package/dist/chunks/useFormReset--wPlnEOl.cjs.js +0 -2
- package/dist/chunks/useFormReset--wPlnEOl.cjs.js.map +0 -1
- package/dist/chunks/useFormReset-D_wskGk5.es.js +0 -21
- package/dist/chunks/useFormReset-D_wskGk5.es.js.map +0 -1
- package/dist/chunks/useFormValidation-DR5NgZ9j.es.js +0 -202
- package/dist/chunks/useFormValidation-DR5NgZ9j.es.js.map +0 -1
- package/dist/chunks/useFormValidation-STNSjSmx.cjs.js +0 -2
- package/dist/chunks/useFormValidation-STNSjSmx.cjs.js.map +0 -1
- package/dist/chunks/useGlobalListeners-DcmIlwrO.cjs.js +0 -2
- package/dist/chunks/useGlobalListeners-DcmIlwrO.cjs.js.map +0 -1
- package/dist/chunks/useGridListItem--iMluO7K.es.js +0 -251
- package/dist/chunks/useGridListItem--iMluO7K.es.js.map +0 -1
- package/dist/chunks/useGridListItem-6gZ8SfZH.cjs.js +0 -2
- package/dist/chunks/useGridListItem-6gZ8SfZH.cjs.js.map +0 -1
- package/dist/chunks/useGridSelectionCheckbox-UA-rsjJv.cjs.js +0 -2
- package/dist/chunks/useGridSelectionCheckbox-UA-rsjJv.cjs.js.map +0 -1
- package/dist/chunks/useGridSelectionCheckbox-yspK-vJA.es.js +0 -23
- package/dist/chunks/useGridSelectionCheckbox-yspK-vJA.es.js.map +0 -1
- package/dist/chunks/useHasTabbableChild-Bif_c3Cz.cjs.js +0 -2
- package/dist/chunks/useHasTabbableChild-Bif_c3Cz.cjs.js.map +0 -1
- package/dist/chunks/useHasTabbableChild-Dq0HGz7B.es.js +0 -35
- package/dist/chunks/useHasTabbableChild-Dq0HGz7B.es.js.map +0 -1
- package/dist/chunks/useHighlightSelectionDescription-BVp60RjN.cjs.js +0 -2
- package/dist/chunks/useHighlightSelectionDescription-BVp60RjN.cjs.js.map +0 -1
- package/dist/chunks/useHighlightSelectionDescription-qks4kKs2.es.js +0 -568
- package/dist/chunks/useHighlightSelectionDescription-qks4kKs2.es.js.map +0 -1
- package/dist/chunks/useHover-271zEzph.cjs.js +0 -2
- package/dist/chunks/useHover-271zEzph.cjs.js.map +0 -1
- package/dist/chunks/useHover-9Xdm5U9d.es.js +0 -86
- package/dist/chunks/useHover-9Xdm5U9d.es.js.map +0 -1
- package/dist/chunks/useLabel-Cv-EvK4W.es.js +0 -24
- package/dist/chunks/useLabel-Cv-EvK4W.es.js.map +0 -1
- package/dist/chunks/useLabel-neE14Yau.cjs.js +0 -2
- package/dist/chunks/useLabel-neE14Yau.cjs.js.map +0 -1
- package/dist/chunks/useLabels-82wzG8z1.es.js +0 -18
- package/dist/chunks/useLabels-82wzG8z1.es.js.map +0 -1
- package/dist/chunks/useLabels-BsHtLxGl.cjs.js +0 -2
- package/dist/chunks/useLabels-BsHtLxGl.cjs.js.map +0 -1
- package/dist/chunks/useListState-Cf8n791-.es.js +0 -134
- package/dist/chunks/useListState-Cf8n791-.es.js.map +0 -1
- package/dist/chunks/useListState-CyKtsfSM.cjs.js +0 -2
- package/dist/chunks/useListState-CyKtsfSM.cjs.js.map +0 -1
- package/dist/chunks/useLocalizedStringFormatter-BRnRyxJp.es.js +0 -97
- package/dist/chunks/useLocalizedStringFormatter-BRnRyxJp.es.js.map +0 -1
- package/dist/chunks/useLocalizedStringFormatter-sB0mFYtL.cjs.js +0 -2
- package/dist/chunks/useLocalizedStringFormatter-sB0mFYtL.cjs.js.map +0 -1
- package/dist/chunks/useObjectRef-dXOJdONs.cjs.js +0 -2
- package/dist/chunks/useObjectRef-dXOJdONs.cjs.js.map +0 -1
- package/dist/chunks/usePress-D5REDWI3.cjs.js +0 -8
- package/dist/chunks/usePress-D5REDWI3.cjs.js.map +0 -1
- package/dist/chunks/usePress-Dc6amhnJ.es.js +0 -456
- package/dist/chunks/usePress-Dc6amhnJ.es.js.map +0 -1
- package/dist/chunks/useProgressBar-BsSMDAsi.es.js +0 -48
- package/dist/chunks/useProgressBar-BsSMDAsi.es.js.map +0 -1
- package/dist/chunks/useProgressBar-COda2Qef.cjs.js +0 -2
- package/dist/chunks/useProgressBar-COda2Qef.cjs.js.map +0 -1
- package/dist/chunks/useSingleSelectListState-CgOgZMJh.cjs.js +0 -2
- package/dist/chunks/useSingleSelectListState-CgOgZMJh.cjs.js.map +0 -1
- package/dist/chunks/useSingleSelectListState-DLY6K_dU.es.js +0 -35
- package/dist/chunks/useSingleSelectListState-DLY6K_dU.es.js.map +0 -1
- package/dist/chunks/useSpinButton-2dD53rZp.es.js +0 -433
- package/dist/chunks/useSpinButton-2dD53rZp.es.js.map +0 -1
- package/dist/chunks/useSpinButton-DA7sVP3T.cjs.js +0 -2
- package/dist/chunks/useSpinButton-DA7sVP3T.cjs.js.map +0 -1
- package/dist/chunks/useSyncRef-bcjp9eId.cjs.js +0 -2
- package/dist/chunks/useSyncRef-bcjp9eId.cjs.js.map +0 -1
- package/dist/chunks/useSyncRef-nVBzPD3o.es.js +0 -13
- package/dist/chunks/useSyncRef-nVBzPD3o.es.js.map +0 -1
- package/dist/chunks/useTextField-0jWzqKW2.cjs.js +0 -2
- package/dist/chunks/useTextField-0jWzqKW2.cjs.js.map +0 -1
- package/dist/chunks/useTextField-CT9tuc9X.es.js +0 -91
- package/dist/chunks/useTextField-CT9tuc9X.es.js.map +0 -1
- package/dist/chunks/useToggle-BXaU8bD5.cjs.js +0 -2
- package/dist/chunks/useToggle-BXaU8bD5.cjs.js.map +0 -1
- package/dist/chunks/useToggle-CKEhqMIa.es.js +0 -62
- package/dist/chunks/useToggle-CKEhqMIa.es.js.map +0 -1
- package/dist/chunks/useToggleState-Dl-o05wQ.cjs.js +0 -2
- package/dist/chunks/useToggleState-Dl-o05wQ.cjs.js.map +0 -1
- package/dist/chunks/useToolbar-CnYu1bn9.es.js +0 -55
- package/dist/chunks/useToolbar-CnYu1bn9.es.js.map +0 -1
- package/dist/chunks/useToolbar-iBRLn7DA.cjs.js +0 -2
- package/dist/chunks/useToolbar-iBRLn7DA.cjs.js.map +0 -1
- package/dist/chunks/useUpdateEffect-C5YQs_1w.cjs.js +0 -2
- package/dist/chunks/useUpdateEffect-C5YQs_1w.cjs.js.map +0 -1
- package/dist/chunks/utils-BHdR5Nww.cjs.js +0 -2
- package/dist/chunks/utils-BHdR5Nww.cjs.js.map +0 -1
- package/dist/chunks/utils-Cjs5h3ad.es.js +0 -190
- package/dist/chunks/utils-Cjs5h3ad.es.js.map +0 -1
- package/dist/chunks/utils-Cyja2WdR.es.js +0 -128
- package/dist/chunks/utils-Cyja2WdR.es.js.map +0 -1
- package/dist/chunks/utils-DUS_ZjvE.cjs.js +0 -2
- package/dist/chunks/utils-DUS_ZjvE.cjs.js.map +0 -1
- package/dist/chunks/visually-hidden-CVUszTlg.es.js +0 -11
- package/dist/chunks/visually-hidden-CVUszTlg.es.js.map +0 -1
- package/dist/chunks/visually-hidden-tTYCAVoQ.cjs.js +0 -2
- package/dist/chunks/visually-hidden-tTYCAVoQ.cjs.js.map +0 -1
- package/dist/components/accordion/components/accordion-content.d.ts +0 -2
- package/dist/components/accordion/components/accordion-header.d.ts +0 -2
- package/dist/components/accordion/components/accordion-item.d.ts +0 -2
- package/dist/components/accordion/components/accordion-root.d.ts +0 -9
- package/dist/components/rich-text-input/utils/text-style-utils.d.ts +0 -33
- /package/dist/utils/{extractStyleProps.d.ts → extract-style-props.d.ts} +0 -0
- /package/dist/utils/{noop.d.ts → no-op.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-input-BC8CBVio.es.js","sources":["../../src/components/rich-text-input/rich-text-input.slots.tsx","../../../../node_modules/.pnpm/is-plain-object@5.0.0/node_modules/is-plain-object/dist/is-plain-object.mjs","../../../../node_modules/.pnpm/immer@9.0.21/node_modules/immer/dist/immer.esm.mjs","../../../../node_modules/.pnpm/slate@0.75.0/node_modules/slate/dist/index.es.js","../../../../node_modules/.pnpm/direction@1.0.4/node_modules/direction/index.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/throttle.js","../../../../node_modules/.pnpm/compute-scroll-into-view@1.0.20/node_modules/compute-scroll-into-view/dist/index.mjs","../../../../node_modules/.pnpm/scroll-into-view-if-needed@2.2.31/node_modules/scroll-into-view-if-needed/es/index.js","../../../../node_modules/.pnpm/is-hotkey@0.1.8/node_modules/is-hotkey/lib/index.js","../../../../node_modules/.pnpm/slate-react@0.75.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_slate@0.75.0/node_modules/slate-react/dist/index.es.js","../../../../node_modules/.pnpm/slate-history@0.113.1_slate@0.75.0/node_modules/slate-history/dist/index.es.js","../../../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js","../../src/components/rich-text-input/constants/editor-constants.ts","../../src/components/rich-text-input/constants/text-styles.ts","../../src/components/rich-text-input/utils/html-serialization.ts","../../src/components/rich-text-input/utils/slate-helpers.tsx","../../../../node_modules/.pnpm/is-hotkey@0.2.0/node_modules/is-hotkey/lib/index.js","../../src/components/rich-text-input/hooks/use-keyboard-shortcuts.ts","../../src/components/rich-text-input/components/rich-text-editor.tsx","../../src/components/rich-text-input/hooks/use-preserved-selection.ts","../../src/components/rich-text-input/hooks/use-toolbar-state.ts","../../src/components/rich-text-input/hooks/use-formatting-state.ts","../../src/components/rich-text-input/components/formatting-menu.tsx","../../src/components/rich-text-input/components/rich-text-toolbar.tsx","../../src/components/rich-text-input/rich-text-input.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport type { SlotComponent } from \"@/type-utils\";\nimport type {\n RichTextInputRootSlotProps,\n RichTextInputToolbarSlotProps,\n RichTextInputEditableSlotProps,\n} from \"./rich-text-input.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"richTextInput\",\n});\n\n// Root slot\nexport const RichTextInputRootSlot: SlotComponent<\n HTMLDivElement,\n RichTextInputRootSlotProps\n> = withProvider<HTMLDivElement, RichTextInputRootSlotProps>(\"div\", \"root\");\n\n// Toolbar slot\nexport const RichTextInputToolbarSlot = withContext<\n HTMLDivElement,\n RichTextInputToolbarSlotProps\n>(\"div\", \"toolbar\");\n\n// Editable slot\nexport const RichTextInputEditableSlot = withContext<\n HTMLDivElement,\n RichTextInputEditableSlotProps\n>(\"div\", \"editable\");\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { isPlainObject } from 'is-plain-object';\nimport { produce, createDraft, finishDraft, isDraft } from 'immer';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar DIRTY_PATHS = new WeakMap();\nvar DIRTY_PATH_KEYS = new WeakMap();\nvar FLUSHING = new WeakMap();\nvar NORMALIZING = new WeakMap();\nvar PATH_REFS = new WeakMap();\nvar POINT_REFS = new WeakMap();\nvar RANGE_REFS = new WeakMap();\n\nfunction ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$9(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * Create a new Slate `Editor` object.\r\n */\n\nvar createEditor = () => {\n var editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isInline: () => false,\n isVoid: () => false,\n onChange: () => {},\n apply: op => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set();\n var dirtyPaths;\n var dirtyPathKeys;\n\n var add = path => {\n if (path) {\n var key = path.join(',');\n\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key);\n dirtyPaths.push(path);\n }\n }\n };\n\n if (Path.operationCanTransformPath(op)) {\n dirtyPaths = [];\n dirtyPathKeys = new Set();\n\n for (var path of oldDirtyPaths) {\n var newPath = Path.transform(path, op);\n add(newPath);\n }\n } else {\n dirtyPaths = oldDirtyPaths;\n dirtyPathKeys = oldDirtyPathKeys;\n }\n\n var newDirtyPaths = getDirtyPaths(op);\n\n for (var _path of newDirtyPaths) {\n add(_path);\n }\n\n DIRTY_PATHS.set(editor, dirtyPaths);\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n Transforms.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor); // Clear any formats applied to the cursor if the selection changes.\n\n if (op.type === 'set_selection') {\n editor.marks = null;\n }\n\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange();\n editor.operations = [];\n });\n }\n },\n addMark: (key, value) => {\n var {\n selection\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks = _objectSpread$9(_objectSpread$9({}, Editor.marks(editor) || {}), {}, {\n [key]: value\n });\n\n editor.marks = marks;\n\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n },\n deleteBackward: unit => {\n var {\n selection\n } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n },\n deleteForward: unit => {\n var {\n selection\n } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n },\n deleteFragment: direction => {\n var {\n selection\n } = editor;\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, {\n reverse: direction === 'backward'\n });\n }\n },\n getFragment: () => {\n var {\n selection\n } = editor;\n\n if (selection) {\n return Node.fragment(editor, selection);\n }\n\n return [];\n },\n insertBreak: () => {\n Transforms.splitNodes(editor, {\n always: true\n });\n },\n insertFragment: fragment => {\n Transforms.insertFragment(editor, fragment);\n },\n insertNode: node => {\n Transforms.insertNodes(editor, node);\n },\n insertText: text => {\n var {\n selection,\n marks\n } = editor;\n\n if (selection) {\n if (marks) {\n var node = _objectSpread$9({\n text\n }, marks);\n\n Transforms.insertNodes(editor, node);\n } else {\n Transforms.insertText(editor, text);\n }\n\n editor.marks = null;\n }\n },\n normalizeNode: entry => {\n var [node, path] = entry; // There are no core normalizations for text nodes.\n\n if (Text.isText(node)) {\n return;\n } // Ensure that block and inline nodes have at least one text child.\n\n\n if (Element.isElement(node) && node.children.length === 0) {\n var child = {\n text: ''\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n } // Determine whether the node should have block or inline children.\n\n\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0])); // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n\n var n = 0;\n\n for (var i = 0; i < node.children.length; i++, n++) {\n var currentNode = Node.get(editor, path);\n if (Text.isText(currentNode)) continue;\n var _child = node.children[i];\n var prev = currentNode.children[n - 1];\n var isLast = i === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element.isElement(_child) && editor.isInline(_child); // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n\n if (isInlineOrText !== shouldHaveInlines) {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n } else if (Element.isElement(_child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(_child)) {\n if (prev == null || !Text.isText(prev)) {\n var newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true\n });\n n++;\n } else if (isLast) {\n var _newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, _newChild, {\n at: path.concat(n + 1),\n voids: true\n });\n n++;\n }\n }\n } else {\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true\n });\n n--;\n } else if (_child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n }\n }\n }\n }\n },\n removeMark: key => {\n var {\n selection\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(editor, key, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks = _objectSpread$9({}, Editor.marks(editor) || {});\n\n delete marks[key];\n editor.marks = marks;\n\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n }\n };\n return editor;\n};\n/**\r\n * Get the \"dirty\" paths generated from an operation.\r\n */\n\nvar getDirtyPaths = op => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n\n case 'insert_node':\n {\n var {\n node,\n path: _path2\n } = op;\n var levels = Path.levels(_path2);\n var descendants = Text.isText(node) ? [] : Array.from(Node.nodes(node), _ref3 => {\n var [, p] = _ref3;\n return _path2.concat(p);\n });\n return [...levels, ...descendants];\n }\n\n case 'merge_node':\n {\n var {\n path: _path3\n } = op;\n var ancestors = Path.ancestors(_path3);\n var previousPath = Path.previous(_path3);\n return [...ancestors, previousPath];\n }\n\n case 'move_node':\n {\n var {\n path: _path4,\n newPath\n } = op;\n\n if (Path.equals(_path4, newPath)) {\n return [];\n }\n\n var oldAncestors = [];\n var newAncestors = [];\n\n for (var ancestor of Path.ancestors(_path4)) {\n var p = Path.transform(ancestor, op);\n oldAncestors.push(p);\n }\n\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n\n newAncestors.push(_p);\n }\n\n var newParent = newAncestors[newAncestors.length - 1];\n var newIndex = newPath[newPath.length - 1];\n var resultPath = newParent.concat(newIndex);\n return [...oldAncestors, ...newAncestors, resultPath];\n }\n\n case 'remove_node':\n {\n var {\n path: _path5\n } = op;\n\n var _ancestors = Path.ancestors(_path5);\n\n return [..._ancestors];\n }\n\n case 'split_node':\n {\n var {\n path: _path6\n } = op;\n\n var _levels = Path.levels(_path6);\n\n var nextPath = Path.next(_path6);\n return [..._levels, nextPath];\n }\n\n default:\n {\n return [];\n }\n }\n};\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\r\n * Get the distance to the end of the first character in a string of text.\r\n */\nvar getCharacterDistance = function getCharacterDistance(str) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isLTR = !isRTL;\n var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n var left = CodepointType.None;\n var right = CodepointType.None;\n var distance = 0; // Evaluation of these conditions are deferred.\n\n var gb11 = null; // Is GB11 applicable?\n\n var gb12Or13 = null; // Is GB12 or GB13 applicable?\n\n for (var char of codepoints) {\n var code = char.codePointAt(0);\n if (!code) break;\n var type = getCodepointType(char, code);\n [left, right] = isLTR ? [right, type] : [type, left];\n\n if (intersects(left, CodepointType.ZWJ) && intersects(right, CodepointType.ExtPict)) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance));\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance));\n }\n\n if (!gb11) break;\n }\n\n if (intersects(left, CodepointType.RI) && intersects(right, CodepointType.RI)) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13;\n } else {\n if (isLTR) {\n gb12Or13 = true;\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n }\n }\n\n if (!gb12Or13) break;\n }\n\n if (left !== CodepointType.None && right !== CodepointType.None && isBoundaryPair(left, right)) {\n break;\n }\n\n distance += char.length;\n }\n\n return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\r\n * Get the distance to the end of the first word in a string of text.\r\n */\n\nvar getWordDistance = function getWordDistance(text) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dist = 0;\n var started = false;\n\n while (text.length > 0) {\n var charDist = getCharacterDistance(text, isRTL);\n var [char, remaining] = splitByCharacterDistance(text, charDist, isRTL);\n\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true;\n dist += charDist;\n } else if (!started) {\n dist += charDist;\n } else {\n break;\n }\n\n text = remaining;\n }\n\n return dist;\n};\n/**\r\n * Split a string in two parts at a given distance starting from the end when\r\n * `isRTL` is set to `true`.\r\n */\n\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n if (isRTL) {\n var at = str.length - dist;\n return [str.slice(at, str.length), str.slice(0, at)];\n }\n\n return [str.slice(0, dist), str.slice(dist)];\n};\n/**\r\n * Check if a character is a word character. The `remaining` argument is used\r\n * because sometimes you must read subsequent characters to truly determine it.\r\n */\n\nvar isWordCharacter = function isWordCharacter(char, remaining) {\n var isRTL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (SPACE.test(char)) {\n return false;\n } // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n\n\n if (CHAMELEON.test(char)) {\n var charDist = getCharacterDistance(remaining, isRTL);\n var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true;\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false;\n }\n\n return true;\n};\n/**\r\n * Iterate on codepoints from right to left.\r\n */\n\n\nvar codepointsIteratorRTL = function* codepointsIteratorRTL(str) {\n var end = str.length - 1;\n\n for (var i = 0; i < str.length; i++) {\n var char1 = str.charAt(end - i);\n\n if (isLowSurrogate(char1.charCodeAt(0))) {\n var char2 = str.charAt(end - i - 1);\n\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1;\n i++;\n continue;\n }\n }\n\n yield char1;\n }\n};\n/**\r\n * Is `charCode` a high surrogate.\r\n *\r\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\r\n */\n\nvar isHighSurrogate = charCode => {\n return charCode >= 0xd800 && charCode <= 0xdbff;\n};\n/**\r\n * Is `charCode` a low surrogate.\r\n *\r\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\r\n */\n\n\nvar isLowSurrogate = charCode => {\n return charCode >= 0xdc00 && charCode <= 0xdfff;\n};\n\nvar CodepointType;\n\n(function (CodepointType) {\n CodepointType[CodepointType[\"None\"] = 0] = \"None\";\n CodepointType[CodepointType[\"Extend\"] = 1] = \"Extend\";\n CodepointType[CodepointType[\"ZWJ\"] = 2] = \"ZWJ\";\n CodepointType[CodepointType[\"RI\"] = 4] = \"RI\";\n CodepointType[CodepointType[\"Prepend\"] = 8] = \"Prepend\";\n CodepointType[CodepointType[\"SpacingMark\"] = 16] = \"SpacingMark\";\n CodepointType[CodepointType[\"L\"] = 32] = \"L\";\n CodepointType[CodepointType[\"V\"] = 64] = \"V\";\n CodepointType[CodepointType[\"T\"] = 128] = \"T\";\n CodepointType[CodepointType[\"LV\"] = 256] = \"LV\";\n CodepointType[CodepointType[\"LVT\"] = 512] = \"LVT\";\n CodepointType[CodepointType[\"ExtPict\"] = 1024] = \"ExtPict\";\n CodepointType[CodepointType[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\n\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BF\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0\\u0CC1\\u0CC3\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D02\\u0D03\\u0D3F\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82\\u0D83\\u0DD0\\u0DD1\\u0DD8-\\u0DDE\\u0DF2\\u0DF3\\u0E33\\u0EB3\\u0F3E\\u0F3F\\u0F7F\\u1031\\u103B\\u103C\\u1056\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/;\nvar reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\n\nvar getCodepointType = (char, code) => {\n var type = CodepointType.Any;\n\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend;\n }\n\n if (code === 0x200d) {\n type |= CodepointType.ZWJ;\n }\n\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI;\n }\n\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend;\n }\n\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark;\n }\n\n if (char.search(reL) !== -1) {\n type |= CodepointType.L;\n }\n\n if (char.search(reV) !== -1) {\n type |= CodepointType.V;\n }\n\n if (char.search(reT) !== -1) {\n type |= CodepointType.T;\n }\n\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV;\n }\n\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT;\n }\n\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict;\n }\n\n return type;\n};\n\nfunction intersects(x, y) {\n return (x & y) !== 0;\n}\n\nvar NonBoundaryPairs = [// GB6\n[CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT], // GB7\n[CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T], // GB8\n[CodepointType.LVT | CodepointType.T, CodepointType.T], // GB9\n[CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ], // GB9a\n[CodepointType.Any, CodepointType.SpacingMark], // GB9b\n[CodepointType.Prepend, CodepointType.Any], // GB11\n[CodepointType.ZWJ, CodepointType.ExtPict], // GB12 and GB13\n[CodepointType.RI, CodepointType.RI]];\n\nfunction isBoundaryPair(left, right) {\n return NonBoundaryPairs.findIndex(r => intersects(left, r[0]) && intersects(right, r[1])) === -1;\n}\n\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\n\nvar endsWithEmojiZWJ = str => {\n return str.search(endingEmojiZWJ) !== -1;\n};\n\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\n\nvar endsWithOddNumberOfRIs = str => {\n var match = str.match(endingRIs);\n\n if (match === null) {\n return false;\n } else {\n // A RI is represented by a surrogate pair.\n var numRIs = match[0].length / 2;\n return numRIs % 2 === 1;\n }\n};\n\n/**\r\n * Shared the function with isElementType utility\r\n */\n\nvar isElement = value => {\n return isPlainObject(value) && Node.isNodeList(value.children) && !Editor.isEditor(value);\n};\n\nvar Element = {\n /**\r\n * Check if a value implements the 'Ancestor' interface.\r\n */\n isAncestor(value) {\n return isPlainObject(value) && Node.isNodeList(value.children);\n },\n\n /**\r\n * Check if a value implements the `Element` interface.\r\n */\n isElement,\n\n /**\r\n * Check if a value is an array of `Element` objects.\r\n */\n isElementList(value) {\n return Array.isArray(value) && value.every(val => Element.isElement(val));\n },\n\n /**\r\n * Check if a set of props is a partial of Element.\r\n */\n isElementProps(props) {\n return props.children !== undefined;\n },\n\n /**\r\n * Check if a value implements the `Element` interface and has elementKey with selected value.\r\n * Default it check to `type` key value\r\n */\n isElementType: function isElementType(value, elementVal) {\n var elementKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';\n return isElement(value) && value[elementKey] === elementVal;\n },\n\n /**\r\n * Check if an element matches set of properties.\r\n *\r\n * Note: this checks custom properties, and it does not ensure that any\r\n * children are equivalent.\r\n */\n matches(element, props) {\n for (var key in props) {\n if (key === 'children') {\n continue;\n }\n\n if (element[key] !== props[key]) {\n return false;\n }\n }\n\n return true;\n }\n\n};\n\nvar _excluded$4 = [\"text\"],\n _excluded2$3 = [\"text\"];\n\nfunction ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$8(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar IS_EDITOR_CACHE = new WeakMap();\nvar Editor = {\n /**\r\n * Get the ancestor above a location in the document.\r\n */\n above(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n var path = Editor.path(editor, at);\n var reverse = mode === 'lowest';\n\n for (var [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse\n })) {\n if (!Text.isText(n) && !Path.equals(path, p)) {\n return [n, p];\n }\n }\n },\n\n /**\r\n * Add a custom property to the leaf text nodes in the current selection.\r\n *\r\n * If the selection is currently collapsed, the marks will be added to the\r\n * `editor.marks` property instead, and applied when text is inserted next.\r\n */\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n\n /**\r\n * Get the point after a location.\r\n */\n after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: 'end'\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n\n for (var p of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n at: range\n }))) {\n if (d > distance) {\n break;\n }\n\n if (d !== 0) {\n target = p;\n }\n\n d++;\n }\n\n return target;\n },\n\n /**\r\n * Get the point before a location.\r\n */\n before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: 'start'\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n\n for (var p of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n at: range,\n reverse: true\n }))) {\n if (d > distance) {\n break;\n }\n\n if (d !== 0) {\n target = p;\n }\n\n d++;\n }\n\n return target;\n },\n\n /**\r\n * Delete content in the editor backward from the current selection.\r\n */\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteBackward(unit);\n },\n\n /**\r\n * Delete content in the editor forward from the current selection.\r\n */\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteForward(unit);\n },\n\n /**\r\n * Delete the content in the current selection.\r\n */\n deleteFragment(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n direction = 'forward'\n } = options;\n editor.deleteFragment(direction);\n },\n\n /**\r\n * Get the start and end points of a location.\r\n */\n edges(editor, at) {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n },\n\n /**\r\n * Get the end point of a location.\r\n */\n end(editor, at) {\n return Editor.point(editor, at, {\n edge: 'end'\n });\n },\n\n /**\r\n * Get the first node at a location.\r\n */\n first(editor, at) {\n var path = Editor.path(editor, at, {\n edge: 'start'\n });\n return Editor.node(editor, path);\n },\n\n /**\r\n * Get the fragment at a location.\r\n */\n fragment(editor, at) {\n var range = Editor.range(editor, at);\n var fragment = Node.fragment(editor, range);\n return fragment;\n },\n\n /**\r\n * Check if a node has block children.\r\n */\n hasBlocks(editor, element) {\n return element.children.some(n => Editor.isBlock(editor, n));\n },\n\n /**\r\n * Check if a node has inline and text children.\r\n */\n hasInlines(editor, element) {\n return element.children.some(n => Text.isText(n) || Editor.isInline(editor, n));\n },\n\n /**\r\n * Check if a node has text children.\r\n */\n hasTexts(editor, element) {\n return element.children.every(n => Text.isText(n));\n },\n\n /**\r\n * Insert a block break at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertBreak(editor) {\n editor.insertBreak();\n },\n\n /**\r\n * Insert a fragment at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertFragment(editor, fragment) {\n editor.insertFragment(fragment);\n },\n\n /**\r\n * Insert a node at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n\n /**\r\n * Insert text at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertText(editor, text) {\n editor.insertText(text);\n },\n\n /**\r\n * Check if a value is a block `Element` object.\r\n */\n isBlock(editor, value) {\n return Element.isElement(value) && !editor.isInline(value);\n },\n\n /**\r\n * Check if a value is an `Editor` object.\r\n */\n isEditor(value) {\n if (!isPlainObject(value)) return false;\n var cachedIsEditor = IS_EDITOR_CACHE.get(value);\n\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor;\n }\n\n var isEditor = typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteBackward === 'function' && typeof value.deleteForward === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isInline === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node.isNodeList(value.children) && Operation.isOperationList(value.operations);\n IS_EDITOR_CACHE.set(value, isEditor);\n return isEditor;\n },\n\n /**\r\n * Check if a point is the end point of a location.\r\n */\n isEnd(editor, point, at) {\n var end = Editor.end(editor, at);\n return Point.equals(point, end);\n },\n\n /**\r\n * Check if a point is an edge of a location.\r\n */\n isEdge(editor, point, at) {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n },\n\n /**\r\n * Check if an element is empty, accounting for void nodes.\r\n */\n isEmpty(editor, element) {\n var {\n children\n } = element;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element);\n },\n\n /**\r\n * Check if a value is an inline `Element` object.\r\n */\n isInline(editor, value) {\n return Element.isElement(value) && editor.isInline(value);\n },\n\n /**\r\n * Check if the editor is currently normalizing after each operation.\r\n */\n isNormalizing(editor) {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === undefined ? true : isNormalizing;\n },\n\n /**\r\n * Check if a point is the start point of a location.\r\n */\n isStart(editor, point, at) {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false;\n }\n\n var start = Editor.start(editor, at);\n return Point.equals(point, start);\n },\n\n /**\r\n * Check if a value is a void `Element` object.\r\n */\n isVoid(editor, value) {\n return Element.isElement(value) && editor.isVoid(value);\n },\n\n /**\r\n * Get the last node at a location.\r\n */\n last(editor, at) {\n var path = Editor.path(editor, at, {\n edge: 'end'\n });\n return Editor.node(editor, path);\n },\n\n /**\r\n * Get the leaf text node at a location.\r\n */\n leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.leaf(editor, path);\n return [node, path];\n },\n\n /**\r\n * Iterate through all of the levels at a location.\r\n */\n *levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (match == null) {\n match = () => true;\n }\n\n if (!at) {\n return;\n }\n\n var levels = [];\n var path = Editor.path(editor, at);\n\n for (var [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue;\n }\n\n levels.push([n, p]);\n\n if (!voids && Editor.isVoid(editor, n)) {\n break;\n }\n }\n\n if (reverse) {\n levels.reverse();\n }\n\n yield* levels;\n },\n\n /**\r\n * Get the marks that would be added to text at the current selection.\r\n */\n marks(editor) {\n var {\n marks,\n selection\n } = editor;\n\n if (!selection) {\n return null;\n }\n\n if (marks) {\n return marks;\n }\n\n if (Range.isExpanded(selection)) {\n var [match] = Editor.nodes(editor, {\n match: Text.isText\n });\n\n if (match) {\n var [_node] = match;\n\n var _rest = _objectWithoutProperties(_node, _excluded$4);\n\n return _rest;\n } else {\n return {};\n }\n }\n\n var {\n anchor\n } = selection;\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var block = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n)\n });\n\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n\n var rest = _objectWithoutProperties(node, _excluded2$3);\n\n return rest;\n },\n\n /**\r\n * Get the matching node in the branch of the document after a location.\r\n */\n next(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n var pointAfterLocation = Editor.after(editor, at, {\n voids\n });\n if (!pointAfterLocation) return;\n var [, to] = Editor.last(editor, []);\n var span = [pointAfterLocation.path, to];\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n\n var [next] = Editor.nodes(editor, {\n at: span,\n match,\n mode,\n voids\n });\n return next;\n },\n\n /**\r\n * Get the node at a location.\r\n */\n node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.get(editor, path);\n return [node, path];\n },\n\n /**\r\n * Iterate through all of the nodes in the Editor.\r\n */\n *nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (!match) {\n match = () => true;\n }\n\n if (!at) {\n return;\n }\n\n var from;\n var to;\n\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: 'start'\n });\n var last = Editor.path(editor, at, {\n edge: 'end'\n });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n\n var nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: _ref => {\n var [n] = _ref;\n return voids ? false : Editor.isVoid(editor, n);\n }\n });\n var matches = [];\n var hit;\n\n for (var [node, path] of nodeEntries) {\n var isLower = hit && Path.compare(path, hit[1]) === 0; // In highest mode any node lower than the last hit is not a match.\n\n if (mode === 'highest' && isLower) {\n continue;\n }\n\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return;\n } else {\n continue;\n }\n } // If there's a match and it's lower than the last, update the hit.\n\n\n if (mode === 'lowest' && isLower) {\n hit = [node, path];\n continue;\n } // In lowest mode we emit the last hit, once it's guaranteed lowest.\n\n\n var emit = mode === 'lowest' ? hit : [node, path];\n\n if (emit) {\n if (universal) {\n matches.push(emit);\n } else {\n yield emit;\n }\n }\n\n hit = [node, path];\n } // Since lowest is always emitting one behind, catch up at the end.\n\n\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n } // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n\n\n if (universal) {\n yield* matches;\n }\n },\n\n /**\r\n * Normalize any dirty objects in the editor.\r\n */\n normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n force = false\n } = options;\n\n var getDirtyPaths = editor => {\n return DIRTY_PATHS.get(editor) || [];\n };\n\n var getDirtyPathKeys = editor => {\n return DIRTY_PATH_KEYS.get(editor) || new Set();\n };\n\n var popDirtyPath = editor => {\n var path = getDirtyPaths(editor).pop();\n var key = path.join(',');\n getDirtyPathKeys(editor).delete(key);\n return path;\n };\n\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n\n if (force) {\n var allPaths = Array.from(Node.nodes(editor), _ref2 => {\n var [, p] = _ref2;\n return p;\n });\n var allPathKeys = new Set(allPaths.map(p => p.join(',')));\n DIRTY_PATHS.set(editor, allPaths);\n DIRTY_PATH_KEYS.set(editor, allPathKeys);\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return;\n }\n\n Editor.withoutNormalizing(editor, () => {\n /*\r\n Fix dirty elements with no children.\r\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\r\n Running an initial pass avoids the catch-22 race condition.\r\n */\n for (var dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n var entry = Editor.node(editor, dirtyPath);\n var [node, _] = entry;\n /*\r\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\r\n So there is some risk here.\r\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\r\n by definition adding children to an empty node can't cause other paths to change.\r\n */\n\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry);\n }\n }\n }\n\n var max = getDirtyPaths(editor).length * 42; // HACK: better way?\n\n var m = 0;\n\n while (getDirtyPaths(editor).length !== 0) {\n if (m > max) {\n throw new Error(\"\\n Could not completely normalize the editor after \".concat(max, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\\n \"));\n }\n\n var _dirtyPath = popDirtyPath(editor); // If the node doesn't exist in the tree, it does not need to be normalized.\n\n\n if (Node.has(editor, _dirtyPath)) {\n var _entry = Editor.node(editor, _dirtyPath);\n\n editor.normalizeNode(_entry);\n }\n\n m++;\n }\n });\n },\n\n /**\r\n * Get the parent node of a location.\r\n */\n parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n },\n\n /**\r\n * Get the path of a location.\r\n */\n path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n var [, firstPath] = Node.first(editor, at);\n at = firstPath;\n } else if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n at = lastPath;\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at);\n } else if (edge === 'end') {\n at = Range.end(at);\n } else {\n at = Path.common(at.anchor.path, at.focus.path);\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path;\n }\n\n if (depth != null) {\n at = at.slice(0, depth);\n }\n\n return at;\n },\n\n hasPath(editor, path) {\n return Node.has(editor, path);\n },\n\n /**\r\n * Create a mutable ref for a `Path` object, which will stay in sync as new\r\n * operations are applied to the editor.\r\n */\n pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: path,\n affinity,\n\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n },\n\n /**\r\n * Get the set of currently tracked path refs of the editor.\r\n */\n pathRefs(editor) {\n var refs = PATH_REFS.get(editor);\n\n if (!refs) {\n refs = new Set();\n PATH_REFS.set(editor, refs);\n }\n\n return refs;\n },\n\n /**\r\n * Get the start or end point of a location.\r\n */\n point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n edge = 'start'\n } = options;\n\n if (Path.isPath(at)) {\n var path;\n\n if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node.first(editor, at);\n path = firstPath;\n }\n\n var node = Node.get(editor, path);\n\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n\n return {\n path,\n offset: edge === 'end' ? node.text.length : 0\n };\n }\n\n if (Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n return edge === 'start' ? start : end;\n }\n\n return at;\n },\n\n /**\r\n * Create a mutable ref for a `Point` object, which will stay in sync as new\r\n * operations are applied to the editor.\r\n */\n pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: point,\n affinity,\n\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n },\n\n /**\r\n * Get the set of currently tracked point refs of the editor.\r\n */\n pointRefs(editor) {\n var refs = POINT_REFS.get(editor);\n\n if (!refs) {\n refs = new Set();\n POINT_REFS.set(editor, refs);\n }\n\n return refs;\n },\n\n /**\r\n * Return all the positions in `at` range where a `Point` can be placed.\r\n *\r\n * By default, moves forward by individual offsets at a time, but\r\n * the `unit` option can be used to to move by character, word, line, or block.\r\n *\r\n * The `reverse` option can be used to change iteration direction.\r\n *\r\n * Note: By default void nodes are treated as a single point and iteration\r\n * will not happen inside their content unless you pass in true for the\r\n * `voids` option, then iteration will occur.\r\n */\n *positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false\n } = options;\n\n if (!at) {\n return;\n }\n /**\r\n * Algorithm notes:\r\n *\r\n * Each step `distance` is dynamic depending on the underlying text\r\n * and the `unit` specified. Each step, e.g., a line or word, may\r\n * span multiple text nodes, so we iterate through the text both on\r\n * two levels in step-sync:\r\n *\r\n * `leafText` stores the text on a text leaf level, and is advanced\r\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\r\n *\r\n * `blockText` stores the text on a block level, and is shortened\r\n * by `distance` every time it is advanced.\r\n *\r\n * We only maintain a window of one blockText and one leafText because\r\n * a block node always appears before all of its leaf nodes.\r\n */\n\n\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var first = reverse ? end : start;\n var isNewBlock = false;\n var blockText = '';\n var distance = 0; // Distance for leafText to catch up to blockText.\n\n var leafTextRemaining = 0;\n var leafTextOffset = 0; // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n\n for (var [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids\n })) {\n /*\r\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\r\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && editor.isVoid(node)) {\n yield Editor.start(editor, path);\n continue;\n } // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n\n\n if (editor.isInline(node)) continue; // Block element node - set `blockText` to its text content.\n\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path);\n var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path);\n blockText = Editor.string(editor, {\n anchor: s,\n focus: e\n }, {\n voids\n });\n isNewBlock = true;\n }\n }\n /*\r\n * TEXT LEAF NODE - Iterate through text content, yielding\r\n * positions every `distance` offset according to `unit`.\r\n */\n\n\n if (Text.isText(node)) {\n var isFirst = Path.equals(path, first.path); // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n // Reset `leafText` counters for new text node.\n\n if (isFirst) {\n leafTextRemaining = reverse ? first.offset : node.text.length - first.offset;\n leafTextOffset = first.offset; // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length;\n leafTextOffset = reverse ? leafTextRemaining : 0;\n } // Yield position at the start of node (potentially).\n\n\n if (isFirst || isNewBlock || unit === 'offset') {\n yield {\n path,\n offset: leafTextOffset\n };\n isNewBlock = false;\n } // Yield positions every (dynamically calculated) `distance` offset.\n\n\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break;\n distance = calcDistance(blockText, unit, reverse); // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1];\n } // Advance `leafText` by the current `distance`.\n\n\n leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n leafTextRemaining = leafTextRemaining - distance; // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining;\n break;\n } // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n\n\n distance = 0;\n yield {\n path,\n offset: leafTextOffset\n };\n }\n }\n } // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n\n\n function calcDistance(text, unit, reverse) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse);\n } else if (unit === 'word') {\n return getWordDistance(text, reverse);\n } else if (unit === 'line' || unit === 'block') {\n return text.length;\n }\n\n return 1;\n }\n },\n\n /**\r\n * Get the matching node in the branch of the document before a location.\r\n */\n previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n var pointBeforeLocation = Editor.before(editor, at, {\n voids\n });\n\n if (!pointBeforeLocation) {\n return;\n }\n\n var [, to] = Editor.first(editor, []); // The search location is from the start of the document to the path of\n // the point before the location passed in\n\n var span = [pointBeforeLocation.path, to];\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n\n var [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids\n });\n return previous;\n },\n\n /**\r\n * Get a range of a location.\r\n */\n range(editor, at, to) {\n if (Range.isRange(at) && !to) {\n return at;\n }\n\n var start = Editor.start(editor, at);\n var end = Editor.end(editor, to || at);\n return {\n anchor: start,\n focus: end\n };\n },\n\n /**\r\n * Create a mutable ref for a `Range` object, which will stay in sync as new\r\n * operations are applied to the editor.\r\n */\n rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: range,\n affinity,\n\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n },\n\n /**\r\n * Get the set of currently tracked range refs of the editor.\r\n */\n rangeRefs(editor) {\n var refs = RANGE_REFS.get(editor);\n\n if (!refs) {\n refs = new Set();\n RANGE_REFS.set(editor, refs);\n }\n\n return refs;\n },\n\n /**\r\n * Remove a custom property from all of the leaf text nodes in the current\r\n * selection.\r\n *\r\n * If the selection is currently collapsed, the removal will be stored on\r\n * `editor.marks` and applied to the text inserted next.\r\n */\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n\n /**\r\n * Manually set if the editor should currently be normalizing.\r\n *\r\n * Note: Using this incorrectly can leave the editor in an invalid state.\r\n *\r\n */\n setNormalizing(editor, isNormalizing) {\n NORMALIZING.set(editor, isNormalizing);\n },\n\n /**\r\n * Get the start point of a location.\r\n */\n start(editor, at) {\n return Editor.point(editor, at, {\n edge: 'start'\n });\n },\n\n /**\r\n * Get the text string content of a location.\r\n *\r\n * Note: by default the text of void nodes is considered to be an empty\r\n * string, regardless of content, unless you pass in true for the voids option\r\n */\n string(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var text = '';\n\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids\n })) {\n var t = node.text;\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset);\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset);\n }\n\n text += t;\n }\n\n return text;\n },\n\n /**\r\n * Convert a range into a non-hanging one.\r\n */\n unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start, end] = Range.edges(range); // PERF: exit early if we can guarantee that the range isn't hanging.\n\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range;\n }\n\n var endBlock = Editor.above(editor, {\n at: end,\n match: n => Editor.isBlock(editor, n)\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, start);\n var before = {\n anchor: first,\n focus: end\n };\n var skip = true;\n\n for (var [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids\n })) {\n if (skip) {\n skip = false;\n continue;\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n\n return {\n anchor: start,\n focus: end\n };\n },\n\n /**\r\n * Match a void node in the current branch of the editor.\r\n */\n void(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n match: n => Editor.isVoid(editor, n)\n }));\n },\n\n /**\r\n * Call a function, deferring normalization until after it completes.\r\n */\n withoutNormalizing(editor, fn) {\n var value = Editor.isNormalizing(editor);\n Editor.setNormalizing(editor, false);\n\n try {\n fn();\n } finally {\n Editor.setNormalizing(editor, value);\n }\n\n Editor.normalize(editor);\n }\n\n};\n\nvar Location = {\n /**\r\n * Check if a value implements the `Location` interface.\r\n */\n isLocation(value) {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value);\n }\n\n};\nvar Span = {\n /**\r\n * Check if a value implements the `Span` interface.\r\n */\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n\n};\n\nvar _excluded$3 = [\"children\"],\n _excluded2$2 = [\"text\"];\nvar IS_NODE_LIST_CACHE = new WeakMap();\nvar Node = {\n /**\r\n * Get the node at a specific path, asserting that it's an ancestor node.\r\n */\n ancestor(root, path) {\n var node = Node.get(root, path);\n\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(node));\n }\n\n return node;\n },\n\n /**\r\n * Return a generator of all the ancestor nodes above a specific path.\r\n *\r\n * By default the order is bottom-up, from lowest to highest ancestor in\r\n * the tree, but you can pass the `reverse: true` option to go top-down.\r\n */\n *ancestors(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n for (var p of Path.ancestors(path, options)) {\n var n = Node.ancestor(root, p);\n var entry = [n, p];\n yield entry;\n }\n },\n\n /**\r\n * Get the child of a node at a specific index.\r\n */\n child(root, index) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(JSON.stringify(root)));\n }\n\n var c = root.children[index];\n\n if (c == null) {\n throw new Error(\"Cannot get child at index `\".concat(index, \"` in node: \").concat(JSON.stringify(root)));\n }\n\n return c;\n },\n\n /**\r\n * Iterate over the children of a node at a specific path.\r\n */\n *children(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n reverse = false\n } = options;\n var ancestor = Node.ancestor(root, path);\n var {\n children\n } = ancestor;\n var index = reverse ? children.length - 1 : 0;\n\n while (reverse ? index >= 0 : index < children.length) {\n var child = Node.child(ancestor, index);\n var childPath = path.concat(index);\n yield [child, childPath];\n index = reverse ? index - 1 : index + 1;\n }\n },\n\n /**\r\n * Get an entry for the common ancesetor node of two paths.\r\n */\n common(root, path, another) {\n var p = Path.common(path, another);\n var n = Node.get(root, p);\n return [n, p];\n },\n\n /**\r\n * Get the node at a specific path, asserting that it's a descendant node.\r\n */\n descendant(root, path) {\n var node = Node.get(root, path);\n\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(node));\n }\n\n return node;\n },\n\n /**\r\n * Return a generator of all the descendant node entries inside a root node.\r\n */\n *descendants(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path];\n }\n }\n },\n\n /**\r\n * Return a generator of all the element nodes inside a root node. Each iteration\r\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\r\n * root node is an element it will be included in the iteration as well.\r\n */\n *elements(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path];\n }\n }\n },\n\n /**\r\n * Extract props from a Node.\r\n */\n extractProps(node) {\n if (Element.isAncestor(node)) {\n var properties = _objectWithoutProperties(node, _excluded$3);\n\n return properties;\n } else {\n var properties = _objectWithoutProperties(node, _excluded2$2);\n\n return properties;\n }\n },\n\n /**\r\n * Get the first node entry in a root node from a path.\r\n */\n first(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n n = n.children[0];\n p.push(0);\n }\n }\n\n return [n, p];\n },\n\n /**\r\n * Get the sliced fragment represented by a range inside a root node.\r\n */\n fragment(root, range) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(JSON.stringify(root)));\n }\n\n var newRoot = produce({\n children: root.children\n }, r => {\n var [start, end] = Range.edges(range);\n var nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: _ref => {\n var [, path] = _ref;\n return !Range.includes(range, path);\n }\n });\n\n for (var [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n var parent = Node.parent(r, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 1);\n }\n\n if (Path.equals(path, end.path)) {\n var leaf = Node.leaf(r, path);\n leaf.text = leaf.text.slice(0, end.offset);\n }\n\n if (Path.equals(path, start.path)) {\n var _leaf = Node.leaf(r, path);\n\n _leaf.text = _leaf.text.slice(start.offset);\n }\n }\n\n if (Editor.isEditor(r)) {\n r.selection = null;\n }\n });\n return newRoot.children;\n },\n\n /**\r\n * Get the descendant node referred to by a specific path. If the path is an\r\n * empty array, it refers to the root node itself.\r\n */\n get(root, path) {\n var node = root;\n\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n\n if (Text.isText(node) || !node.children[p]) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(JSON.stringify(root)));\n }\n\n node = node.children[p];\n }\n\n return node;\n },\n\n /**\r\n * Check if a descendant node exists at a specific path.\r\n */\n has(root, path) {\n var node = root;\n\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n\n if (Text.isText(node) || !node.children[p]) {\n return false;\n }\n\n node = node.children[p];\n }\n\n return true;\n },\n\n /**\r\n * Check if a value implements the `Node` interface.\r\n */\n isNode(value) {\n return Text.isText(value) || Element.isElement(value) || Editor.isEditor(value);\n },\n\n /**\r\n * Check if a value is a list of `Node` objects.\r\n */\n isNodeList(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n\n var cachedResult = IS_NODE_LIST_CACHE.get(value);\n\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n\n var isNodeList = value.every(val => Node.isNode(val));\n IS_NODE_LIST_CACHE.set(value, isNodeList);\n return isNodeList;\n },\n\n /**\r\n * Get the last node entry in a root node from a path.\r\n */\n last(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n var i = n.children.length - 1;\n n = n.children[i];\n p.push(i);\n }\n }\n\n return [n, p];\n },\n\n /**\r\n * Get the node at a specific path, ensuring it's a leaf text node.\r\n */\n leaf(root, path) {\n var node = Node.get(root, path);\n\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(node));\n }\n\n return node;\n },\n\n /**\r\n * Return a generator of the in a branch of the tree, from a specific path.\r\n *\r\n * By default the order is top-down, from lowest to highest node in the tree,\r\n * but you can pass the `reverse: true` option to go bottom-up.\r\n */\n *levels(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n for (var p of Path.levels(path, options)) {\n var n = Node.get(root, p);\n yield [n, p];\n }\n },\n\n /**\r\n * Check if a node matches a set of props.\r\n */\n matches(node, props) {\n return Element.isElement(node) && Element.isElementProps(props) && Element.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n },\n\n /**\r\n * Return a generator of all the node entries of a root node. Each entry is\r\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\r\n * position inside the root node.\r\n */\n *nodes(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = new Set();\n var p = [];\n var n = root;\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break;\n }\n\n if (!visited.has(n)) {\n yield [n, p];\n } // If we're allowed to go downward and we haven't descended yet, do.\n\n\n if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) {\n visited.add(n);\n var nextIndex = reverse ? n.children.length - 1 : 0;\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length];\n }\n\n p = p.concat(nextIndex);\n n = Node.get(root, p);\n continue;\n } // If we're at the root and we can't go down, we're done.\n\n\n if (p.length === 0) {\n break;\n } // If we're going forward...\n\n\n if (!reverse) {\n var newPath = Path.next(p);\n\n if (Node.has(root, newPath)) {\n p = newPath;\n n = Node.get(root, p);\n continue;\n }\n } // If we're going backward...\n\n\n if (reverse && p[p.length - 1] !== 0) {\n var _newPath = Path.previous(p);\n\n p = _newPath;\n n = Node.get(root, p);\n continue;\n } // Otherwise we're going upward...\n\n\n p = Path.parent(p);\n n = Node.get(root, p);\n visited.add(n);\n }\n },\n\n /**\r\n * Get the parent of a node at a specific path.\r\n */\n parent(root, path) {\n var parentPath = Path.parent(path);\n var p = Node.get(root, parentPath);\n\n if (Text.isText(p)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n\n return p;\n },\n\n /**\r\n * Get the concatenated text string of a node's content.\r\n *\r\n * Note that this will not include spaces or line breaks between block nodes.\r\n * It is not a user-facing string, but a string for performing offset-related\r\n * computations for a node.\r\n */\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node.string).join('');\n }\n },\n\n /**\r\n * Return a generator of all leaf text nodes in a root node.\r\n */\n *texts(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }\n\n};\n\nfunction ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Operation = {\n /**\r\n * Check of a value is a `NodeOperation` object.\r\n */\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_node');\n },\n\n /**\r\n * Check of a value is an `Operation` object.\r\n */\n isOperation(value) {\n if (!isPlainObject(value)) {\n return false;\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n\n case 'insert_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n\n case 'merge_node':\n return typeof value.position === 'number' && Path.isPath(value.path) && isPlainObject(value.properties);\n\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath);\n\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n\n case 'remove_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n\n case 'set_node':\n return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n\n case 'set_selection':\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n\n case 'split_node':\n return Path.isPath(value.path) && typeof value.position === 'number' && isPlainObject(value.properties);\n\n default:\n return false;\n }\n },\n\n /**\r\n * Check if a value is a list of `Operation` objects.\r\n */\n isOperationList(value) {\n return Array.isArray(value) && value.every(val => Operation.isOperation(val));\n },\n\n /**\r\n * Check of a value is a `SelectionOperation` object.\r\n */\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_selection');\n },\n\n /**\r\n * Check of a value is a `TextOperation` object.\r\n */\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_text');\n },\n\n /**\r\n * Invert an operation, returning a new operation that will exactly undo the\r\n * original when applied.\r\n */\n inverse(op) {\n switch (op.type) {\n case 'insert_node':\n {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: 'remove_node'\n });\n }\n\n case 'insert_text':\n {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: 'remove_text'\n });\n }\n\n case 'merge_node':\n {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: 'split_node',\n path: Path.previous(op.path)\n });\n }\n\n case 'move_node':\n {\n var {\n newPath,\n path\n } = op; // PERF: in this case the move operation is a no-op anyways.\n\n if (Path.equals(newPath, path)) {\n return op;\n } // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n\n\n if (Path.isSibling(path, newPath)) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n path: newPath,\n newPath: path\n });\n } // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n\n\n var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n\n case 'remove_node':\n {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: 'insert_node'\n });\n }\n\n case 'remove_text':\n {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: 'insert_text'\n });\n }\n\n case 'set_node':\n {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: newProperties,\n newProperties: properties\n });\n }\n\n case 'set_selection':\n {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n\n if (_properties == null) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n\n case 'split_node':\n {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: 'merge_node',\n path: Path.next(op.path)\n });\n }\n }\n }\n\n};\n\nvar Path = {\n /**\r\n * Get a list of ancestor paths for a given path.\r\n *\r\n * The paths are sorted from deepest to shallowest ancestor. However, if the\r\n * `reverse: true` option is passed, they are reversed.\r\n */\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n\n return paths;\n },\n\n /**\r\n * Get the common ancestor path of two paths.\r\n */\n common(path, another) {\n var common = [];\n\n for (var i = 0; i < path.length && i < another.length; i++) {\n var av = path[i];\n var bv = another[i];\n\n if (av !== bv) {\n break;\n }\n\n common.push(av);\n }\n\n return common;\n },\n\n /**\r\n * Compare a path to another, returning an integer indicating whether the path\r\n * was before, at, or after the other.\r\n *\r\n * Note: Two paths of unequal length can still receive a `0` result if one is\r\n * directly above or below the other. If you want exact matching, use\r\n * [[Path.equals]] instead.\r\n */\n compare(path, another) {\n var min = Math.min(path.length, another.length);\n\n for (var i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1;\n if (path[i] > another[i]) return 1;\n }\n\n return 0;\n },\n\n /**\r\n * Check if a path ends after one of the indexes in another.\r\n */\n endsAfter(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av > bv;\n },\n\n /**\r\n * Check if a path ends at one of the indexes in another.\r\n */\n endsAt(path, another) {\n var i = path.length;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n return Path.equals(as, bs);\n },\n\n /**\r\n * Check if a path ends before one of the indexes in another.\r\n */\n endsBefore(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av < bv;\n },\n\n /**\r\n * Check if a path is exactly equal to another.\r\n */\n equals(path, another) {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n },\n\n /**\r\n * Check if the path of previous sibling node exists\r\n */\n hasPrevious(path) {\n return path[path.length - 1] > 0;\n },\n\n /**\r\n * Check if a path is after another.\r\n */\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n\n /**\r\n * Check if a path is an ancestor of another.\r\n */\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is before another.\r\n */\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n\n /**\r\n * Check if a path is a child of another.\r\n */\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is equal to or an ancestor of another.\r\n */\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is a descendant of another.\r\n */\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is the parent of another.\r\n */\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check is a value implements the `Path` interface.\r\n */\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number');\n },\n\n /**\r\n * Check if a path is a sibling of another.\r\n */\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n\n /**\r\n * Get a list of paths at every level down to a path. Note: this is the same\r\n * as `Path.ancestors`, but including the path itself.\r\n *\r\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\r\n * true` option is passed, they are reversed.\r\n */\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n\n for (var i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i));\n }\n\n if (reverse) {\n list.reverse();\n }\n\n return list;\n },\n\n /**\r\n * Given a path, get the path to the next sibling node.\r\n */\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n\n var last = path[path.length - 1];\n return path.slice(0, -1).concat(last + 1);\n },\n\n /**\r\n * Returns whether this operation can affect paths or not. Used as an\r\n * optimization when updating dirty paths during normalization\r\n *\r\n * NOTE: This *must* be kept in sync with the implementation of 'transform'\r\n * below\r\n */\n operationCanTransformPath(operation) {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true;\n\n default:\n return false;\n }\n },\n\n /**\r\n * Given a path, return a new path referring to the parent node above it.\r\n */\n parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n\n return path.slice(0, -1);\n },\n\n /**\r\n * Given a path, get the path to the previous sibling node.\r\n */\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n\n var last = path[path.length - 1];\n\n if (last <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n\n return path.slice(0, -1).concat(last - 1);\n },\n\n /**\r\n * Get a path relative to an ancestor.\r\n */\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n\n return path.slice(ancestor.length);\n },\n\n /**\r\n * Transform a path by an operation.\r\n */\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(path, p => {\n var {\n affinity = 'forward'\n } = options; // PERF: Exit early if the operation is guaranteed not to have an effect.\n\n if (!path || (path === null || path === void 0 ? void 0 : path.length) === 0) {\n return;\n }\n\n if (p === null) {\n return null;\n }\n\n switch (operation.type) {\n case 'insert_node':\n {\n var {\n path: op\n } = operation;\n\n if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {\n p[op.length - 1] += 1;\n }\n\n break;\n }\n\n case 'remove_node':\n {\n var {\n path: _op\n } = operation;\n\n if (Path.equals(_op, p) || Path.isAncestor(_op, p)) {\n return null;\n } else if (Path.endsBefore(_op, p)) {\n p[_op.length - 1] -= 1;\n }\n\n break;\n }\n\n case 'merge_node':\n {\n var {\n path: _op2,\n position\n } = operation;\n\n if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) {\n p[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p)) {\n p[_op2.length - 1] -= 1;\n p[_op2.length] += position;\n }\n\n break;\n }\n\n case 'split_node':\n {\n var {\n path: _op3,\n position: _position\n } = operation;\n\n if (Path.equals(_op3, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1;\n } else if (affinity === 'backward') ; else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p)) {\n p[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) {\n p[_op3.length - 1] += 1;\n p[_op3.length] -= _position;\n }\n\n break;\n }\n\n case 'move_node':\n {\n var {\n path: _op4,\n newPath: onp\n } = operation; // If the old and new path are the same, it's a no-op.\n\n if (Path.equals(_op4, onp)) {\n return;\n }\n\n if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) {\n var copy = onp.slice();\n\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n copy[_op4.length - 1] -= 1;\n }\n\n return copy.concat(p.slice(_op4.length));\n } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n } else {\n p[_op4.length - 1] += 1;\n }\n } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n }\n\n p[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1;\n }\n\n p[_op4.length - 1] -= 1;\n }\n\n break;\n }\n }\n });\n }\n\n};\n\nvar PathRef = {\n /**\r\n * Transform the path ref's current value by an operation.\r\n */\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n\n if (current == null) {\n return;\n }\n\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n\n if (path == null) {\n ref.unref();\n }\n }\n\n};\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Point = {\n /**\r\n * Compare a point to another, returning an integer indicating whether the\r\n * point was before, at, or after the other.\r\n */\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\n\n if (result === 0) {\n if (point.offset < another.offset) return -1;\n if (point.offset > another.offset) return 1;\n return 0;\n }\n\n return result;\n },\n\n /**\r\n * Check if a point is after another.\r\n */\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n\n /**\r\n * Check if a point is before another.\r\n */\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n\n /**\r\n * Check if a point is exactly equal to another.\r\n */\n equals(point, another) {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n\n /**\r\n * Check if a value implements the `Point` interface.\r\n */\n isPoint(value) {\n return isPlainObject(value) && typeof value.offset === 'number' && Path.isPath(value.path);\n },\n\n /**\r\n * Transform a point by an operation.\r\n */\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(point, p => {\n if (p === null) {\n return null;\n }\n\n var {\n affinity = 'forward'\n } = options;\n var {\n path,\n offset\n } = p;\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node':\n {\n p.path = Path.transform(path, op, options);\n break;\n }\n\n case 'insert_text':\n {\n if (Path.equals(op.path, path) && (op.offset < offset || op.offset === offset && affinity === 'forward')) {\n p.offset += op.text.length;\n }\n\n break;\n }\n\n case 'merge_node':\n {\n if (Path.equals(op.path, path)) {\n p.offset += op.position;\n }\n\n p.path = Path.transform(path, op, options);\n break;\n }\n\n case 'remove_text':\n {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length);\n }\n\n break;\n }\n\n case 'remove_node':\n {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n\n p.path = Path.transform(path, op, options);\n break;\n }\n\n case 'split_node':\n {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null;\n } else if (op.position < offset || op.position === offset && affinity === 'forward') {\n p.offset -= op.position;\n p.path = Path.transform(path, op, _objectSpread$6(_objectSpread$6({}, options), {}, {\n affinity: 'forward'\n }));\n }\n } else {\n p.path = Path.transform(path, op, options);\n }\n\n break;\n }\n }\n });\n }\n\n};\n\nvar PointRef = {\n /**\r\n * Transform the point ref's current value by an operation.\r\n */\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n\n if (current == null) {\n return;\n }\n\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n\n if (point == null) {\n ref.unref();\n }\n }\n\n};\n\nvar _excluded$2 = [\"anchor\", \"focus\"];\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Range = {\n /**\r\n * Get the start and end points of a range, in the order in which they appear\r\n * in the document.\r\n */\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n\n /**\r\n * Get the end point of a range.\r\n */\n end(range) {\n var [, end] = Range.edges(range);\n return end;\n },\n\n /**\r\n * Check if a range is exactly equal to another.\r\n */\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n\n /**\r\n * Check if a range includes a path, a point or part of another range.\r\n */\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n\n var [rs, re] = Range.edges(range);\n var [ts, te] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re, te);\n }\n\n var [start, end] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0;\n isBeforeEnd = Point.compare(target, end) <= 0;\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0;\n isBeforeEnd = Path.compare(target, end.path) <= 0;\n }\n\n return isAfterStart && isBeforeEnd;\n },\n\n /**\r\n * Get the intersection of a range with another.\r\n */\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, _excluded$2);\n\n var [s1, e1] = Range.edges(range);\n var [s2, e2] = Range.edges(another);\n var start = Point.isBefore(s1, s2) ? s2 : s1;\n var end = Point.isBefore(e1, e2) ? e1 : e2;\n\n if (Point.isBefore(end, start)) {\n return null;\n } else {\n return _objectSpread$5({\n anchor: start,\n focus: end\n }, rest);\n }\n },\n\n /**\r\n * Check if a range is backward, meaning that its anchor point appears in the\r\n * document _after_ its focus point.\r\n */\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n\n /**\r\n * Check if a range is collapsed, meaning that both its anchor and focus\r\n * points refer to the exact same position in the document.\r\n */\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n\n /**\r\n * Check if a range is expanded.\r\n *\r\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\r\n */\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n\n /**\r\n * Check if a range is forward.\r\n *\r\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\r\n */\n isForward(range) {\n return !Range.isBackward(range);\n },\n\n /**\r\n * Check if a value implements the [[Range]] interface.\r\n */\n isRange(value) {\n return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n\n /**\r\n * Iterate through all of the point entries in a range.\r\n */\n *points(range) {\n yield [range.anchor, 'anchor'];\n yield [range.focus, 'focus'];\n },\n\n /**\r\n * Get the start point of a range.\r\n */\n start(range) {\n var [start] = Range.edges(range);\n return start;\n },\n\n /**\r\n * Transform a range by an operation.\r\n */\n transform(range, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(range, r => {\n if (r === null) {\n return null;\n }\n\n var {\n affinity = 'inward'\n } = options;\n var affinityAnchor;\n var affinityFocus;\n\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n var isCollapsed = Range.isCollapsed(r);\n\n if (Range.isForward(r)) {\n affinityAnchor = 'forward';\n affinityFocus = isCollapsed ? affinityAnchor : 'backward';\n } else {\n affinityAnchor = 'backward';\n affinityFocus = isCollapsed ? affinityAnchor : 'forward';\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward';\n affinityFocus = 'forward';\n } else {\n affinityAnchor = 'forward';\n affinityFocus = 'backward';\n }\n } else {\n affinityAnchor = affinity;\n affinityFocus = affinity;\n }\n\n var anchor = Point.transform(r.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(r.focus, op, {\n affinity: affinityFocus\n });\n\n if (!anchor || !focus) {\n return null;\n }\n\n r.anchor = anchor;\n r.focus = focus;\n });\n }\n\n};\n\nvar RangeRef = {\n /**\r\n * Transform the range ref's current value by an operation.\r\n */\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n\n if (current == null) {\n return;\n }\n\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n\n if (path == null) {\n ref.unref();\n }\n }\n\n};\n\n/*\r\n Custom deep equal comparison for Slate nodes.\r\n\n We don't need general purpose deep equality;\r\n Slate only supports plain values, Arrays, and nested objects.\r\n Complex values nested inside Arrays are not supported.\r\n\n Slate objects are designed to be serialised, so\r\n missing keys are deliberately normalised to undefined.\r\n */\n\nvar isDeepEqual = (node, another) => {\n for (var key in node) {\n var a = node[key];\n var b = another[key];\n\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n } else if (a !== b) {\n return false;\n }\n }\n /*\r\n Deep object equality is only necessary in one direction; in the reverse direction\r\n we are only looking for keys that are missing.\r\n As above, undefined keys are normalised to missing.\r\n */\n\n\n for (var _key in another) {\n if (node[_key] === undefined && another[_key] !== undefined) {\n return false;\n }\n }\n\n return true;\n};\n\nvar _excluded$1 = [\"text\"],\n _excluded2$1 = [\"anchor\", \"focus\"];\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Text = {\n /**\r\n * Check if two text nodes are equal.\r\n *\r\n * When loose is set, the text is not compared. This is\r\n * used to check whether sibling text nodes can be merged.\r\n */\n equals(text, another) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n loose = false\n } = options;\n\n function omitText(obj) {\n var rest = _objectWithoutProperties(obj, _excluded$1);\n\n return rest;\n }\n\n return isDeepEqual(loose ? omitText(text) : text, loose ? omitText(another) : another);\n },\n\n /**\r\n * Check if a value implements the `Text` interface.\r\n */\n isText(value) {\n return isPlainObject(value) && typeof value.text === 'string';\n },\n\n /**\r\n * Check if a value is a list of `Text` objects.\r\n */\n isTextList(value) {\n return Array.isArray(value) && value.every(val => Text.isText(val));\n },\n\n /**\r\n * Check if some props are a partial of Text.\r\n */\n isTextProps(props) {\n return props.text !== undefined;\n },\n\n /**\r\n * Check if an text matches set of properties.\r\n *\r\n * Note: this is for matching custom properties, and it does not ensure that\r\n * the `text` property are two nodes equal.\r\n */\n matches(text, props) {\n for (var key in props) {\n if (key === 'text') {\n continue;\n }\n\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\r\n * Get the leaves for a text node given decorations.\r\n */\n decorations(node, decorations) {\n var leaves = [_objectSpread$4({}, node)];\n\n for (var dec of decorations) {\n var rest = _objectWithoutProperties(dec, _excluded2$1);\n\n var [start, end] = Range.edges(dec);\n var next = [];\n var o = 0;\n\n for (var leaf of leaves) {\n var {\n length\n } = leaf.text;\n var offset = o;\n o += length; // If the range encompases the entire leaf, add the range.\n\n if (start.offset <= offset && end.offset >= o) {\n Object.assign(leaf, rest);\n next.push(leaf);\n continue;\n } // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n\n\n if (start.offset !== end.offset && (start.offset === o || end.offset === offset) || start.offset > o || end.offset < offset || end.offset === offset && offset !== 0) {\n next.push(leaf);\n continue;\n } // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n\n\n var middle = leaf;\n var before = void 0;\n var after = void 0;\n\n if (end.offset < o) {\n var off = end.offset - offset;\n after = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(off)\n });\n middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(0, off)\n });\n }\n\n if (start.offset > offset) {\n var _off = start.offset - offset;\n\n before = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(0, _off)\n });\n middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(_off)\n });\n }\n\n Object.assign(middle, rest);\n\n if (before) {\n next.push(before);\n }\n\n next.push(middle);\n\n if (after) {\n next.push(after);\n }\n }\n\n leaves = next;\n }\n\n return leaves;\n }\n\n};\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar applyToDraft = (editor, selection, op) => {\n switch (op.type) {\n case 'insert_node':\n {\n var {\n path,\n node\n } = op;\n var parent = Node.parent(editor, path);\n var index = path[path.length - 1];\n\n if (index > parent.children.length) {\n throw new Error(\"Cannot apply an \\\"insert_node\\\" operation at path [\".concat(path, \"] because the destination is past the end of the node.\"));\n }\n\n parent.children.splice(index, 0, node);\n\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n\n break;\n }\n\n case 'insert_text':\n {\n var {\n path: _path,\n offset,\n text\n } = op;\n if (text.length === 0) break;\n\n var _node = Node.leaf(editor, _path);\n\n var before = _node.text.slice(0, offset);\n\n var after = _node.text.slice(offset);\n\n _node.text = before + text + after;\n\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n\n break;\n }\n\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n\n var _node2 = Node.get(editor, _path2);\n\n var prevPath = Path.previous(_path2);\n var prev = Node.get(editor, prevPath);\n\n var _parent = Node.parent(editor, _path2);\n\n var _index = _path2[_path2.length - 1];\n\n if (Text.isText(_node2) && Text.isText(prev)) {\n prev.text += _node2.text;\n } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n prev.children.push(..._node2.children);\n } else {\n throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interfaces: \").concat(_node2, \" \").concat(prev));\n }\n\n _parent.children.splice(_index, 1);\n\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n\n break;\n }\n\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n\n var _node3 = Node.get(editor, _path3);\n\n var _parent2 = Node.parent(editor, _path3);\n\n var _index2 = _path3[_path3.length - 1]; // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n\n _parent2.children.splice(_index2, 1);\n\n var truePath = Path.transform(_path3, op);\n var newParent = Node.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node3);\n\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n\n break;\n }\n\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n\n var _parent3 = Node.parent(editor, _path4);\n\n _parent3.children.splice(_index3, 1); // Transform all of the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n\n\n if (selection) {\n for (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n\n var next = void 0;\n\n for (var [n, p] of Node.texts(editor)) {\n if (Path.compare(p, _path4) === -1) {\n _prev = [n, p];\n } else {\n next = [n, p];\n break;\n }\n }\n\n var preferNext = false;\n\n if (_prev && next) {\n if (Path.equals(next[1], _path4)) {\n preferNext = !Path.hasPrevious(next[1]);\n } else {\n preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length;\n }\n }\n\n if (_prev && !preferNext) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n\n break;\n }\n\n case 'remove_text':\n {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n if (_text.length === 0) break;\n\n var _node4 = Node.leaf(editor, _path5);\n\n var _before = _node4.text.slice(0, _offset);\n\n var _after = _node4.text.slice(_offset + _text.length);\n\n _node4.text = _before + _after;\n\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n\n break;\n }\n\n case 'set_node':\n {\n var {\n path: _path6,\n properties,\n newProperties\n } = op;\n\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n\n var _node5 = Node.get(editor, _path6);\n\n for (var _key6 in newProperties) {\n if (_key6 === 'children' || _key6 === 'text') {\n throw new Error(\"Cannot set the \\\"\".concat(_key6, \"\\\" property of nodes!\"));\n }\n\n var value = newProperties[_key6];\n\n if (value == null) {\n delete _node5[_key6];\n } else {\n _node5[_key6] = value;\n }\n } // properties that were previously defined, but are now missing, must be deleted\n\n\n for (var _key7 in properties) {\n if (!newProperties.hasOwnProperty(_key7)) {\n delete _node5[_key7];\n }\n }\n\n break;\n }\n\n case 'set_selection':\n {\n var {\n newProperties: _newProperties\n } = op;\n\n if (_newProperties == null) {\n selection = _newProperties;\n } else {\n if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(JSON.stringify(_newProperties), \" when there is no current selection.\"));\n }\n\n selection = _objectSpread$3({}, _newProperties);\n }\n\n for (var _key8 in _newProperties) {\n var _value = _newProperties[_key8];\n\n if (_value == null) {\n if (_key8 === 'anchor' || _key8 === 'focus') {\n throw new Error(\"Cannot remove the \\\"\".concat(_key8, \"\\\" selection property\"));\n }\n\n delete selection[_key8];\n } else {\n selection[_key8] = _value;\n }\n }\n }\n\n break;\n }\n\n case 'split_node':\n {\n var {\n path: _path7,\n position,\n properties: _properties\n } = op;\n\n if (_path7.length === 0) {\n throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n }\n\n var _node6 = Node.get(editor, _path7);\n\n var _parent4 = Node.parent(editor, _path7);\n\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n\n if (Text.isText(_node6)) {\n var _before2 = _node6.text.slice(0, position);\n\n var _after2 = _node6.text.slice(position);\n\n _node6.text = _before2;\n newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n text: _after2\n });\n } else {\n var _before3 = _node6.children.slice(0, position);\n\n var _after3 = _node6.children.slice(position);\n\n _node6.children = _before3;\n newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n children: _after3\n });\n }\n\n _parent4.children.splice(_index4 + 1, 0, newNode);\n\n if (selection) {\n for (var [_point6, _key9] of Range.points(selection)) {\n selection[_key9] = Point.transform(_point6, op);\n }\n }\n\n break;\n }\n }\n\n return selection;\n};\n\nvar GeneralTransforms = {\n /**\r\n * Transform the editor by an operation.\r\n */\n transform(editor, op) {\n editor.children = createDraft(editor.children);\n var selection = editor.selection && createDraft(editor.selection);\n\n try {\n selection = applyToDraft(editor, selection, op);\n } finally {\n editor.children = finishDraft(editor.children);\n\n if (selection) {\n editor.selection = isDraft(selection) ? finishDraft(selection) : selection;\n } else {\n editor.selection = null;\n }\n }\n }\n\n};\n\nvar _excluded = [\"text\"],\n _excluded2 = [\"children\"];\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar NodeTransforms = {\n /**\r\n * Insert nodes at a specific location in the Editor.\r\n */\n insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at,\n match,\n select\n } = options;\n\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n\n if (nodes.length === 0) {\n return;\n }\n\n var [node] = nodes; // By default, use the selection as the target location. But if there is\n // no selection, insert at the end of the document since that is such a\n // common use case when inserting from a non-selected state.\n\n if (!at) {\n if (editor.selection) {\n at = editor.selection;\n } else if (editor.children.length > 0) {\n at = Editor.end(editor, []);\n } else {\n at = [0];\n }\n\n select = true;\n }\n\n if (select == null) {\n select = false;\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n);\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n);\n } else {\n match = n => Editor.isBlock(editor, n);\n }\n }\n\n var [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids\n });\n\n if (entry) {\n var [, _matchPath] = entry;\n var pathRef = Editor.pathRef(editor, _matchPath);\n var isAtEnd = Editor.isEnd(editor, at, _matchPath);\n Transforms.splitNodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n\n var parentPath = Path.parent(at);\n var index = at[at.length - 1];\n\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n\n for (var _node of nodes) {\n var _path = parentPath.concat(index);\n\n index++;\n editor.apply({\n type: 'insert_node',\n path: _path,\n node: _node\n });\n at = Path.next(at);\n }\n\n at = Path.previous(at);\n\n if (select) {\n var point = Editor.end(editor, at);\n\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n },\n\n /**\r\n * Lift nodes at a specific location upwards in the document tree, splitting\r\n * their parent in two if necessary.\r\n */\n liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (!at) {\n return;\n }\n\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n\n var parentNodeEntry = Editor.node(editor, Path.parent(path));\n var [parent, parentPath] = parentNodeEntry;\n var index = path[path.length - 1];\n var {\n length\n } = parent.children;\n\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index === length - 1) {\n var _toPath = Path.next(parentPath);\n\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n\n var _toPath2 = Path.next(parentPath);\n\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n },\n\n /**\r\n * Merge a node at a location with the previous node of the same depth,\r\n * removing any empty containing nodes after the merge if necessary.\r\n */\n mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n\n match = n => parent.children.includes(n);\n } else {\n match = n => Editor.isBlock(editor, n);\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n\n var [current] = Editor.nodes(editor, {\n at,\n match,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match,\n voids,\n mode\n });\n\n if (!current || !prev) {\n return;\n }\n\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), _ref2 => {\n var [n] = _ref2;\n return n;\n }).slice(commonPath.length).slice(0, -1); // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n\n var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n)\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position; // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n\n if (Text.isText(node) && Text.isText(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded);\n\n position = prevNode.text.length;\n properties = rest;\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded2);\n\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(JSON.stringify(node), \" \").concat(JSON.stringify(prevNode)));\n } // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n\n\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n } // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n\n\n if (emptyRef) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n } // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n\n\n if (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '' && prevPath[prevPath.length - 1] !== 0) {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties\n });\n }\n\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n },\n\n /**\r\n * Move the nodes at a location to a new location.\r\n */\n moveNodes(editor, options) {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, _ref3 => {\n var [, p] = _ref3;\n return Editor.pathRef(editor, p);\n });\n\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n\n if (path.length !== 0) {\n editor.apply({\n type: 'move_node',\n path,\n newPath\n });\n }\n\n if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current);\n }\n }\n\n toRef.unref();\n });\n },\n\n /**\r\n * Remove the nodes at a specific location in the document.\r\n */\n removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n\n var depths = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, _ref4 => {\n var [, p] = _ref4;\n return Editor.pathRef(editor, p);\n });\n\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: 'remove_node',\n path,\n node\n });\n }\n }\n });\n },\n\n /**\r\n * Set new properties on the nodes at a location.\r\n */\n setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection,\n compare\n } = options;\n var {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (split && Range.isRange(at)) {\n if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return;\n }\n\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n var [start, end] = Range.edges(at);\n var splitMode = mode === 'lowest' ? 'lowest' : 'highest';\n var endAtEndOfNode = Editor.isEnd(editor, end, end.path);\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode\n });\n var startAtStartOfNode = Editor.isStart(editor, start, start.path);\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode\n });\n at = rangeRef.unref();\n\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp;\n }\n\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n })) {\n var properties = {};\n var newProperties = {}; // You can't set properties on the editor node.\n\n if (path.length === 0) {\n continue;\n }\n\n var hasChanges = false;\n\n for (var k in props) {\n if (k === 'children' || k === 'text') {\n continue;\n }\n\n if (compare(props[k], node[k])) {\n hasChanges = true; // Omit new properties from the old properties list\n\n if (node.hasOwnProperty(k)) properties[k] = node[k]; // Omit properties that have been removed from the new properties list\n\n if (props[k] != null) newProperties[k] = props[k];\n }\n }\n\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties\n });\n }\n }\n });\n },\n\n /**\r\n * Split the nodes at a specific location.\r\n */\n splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n\n if (match == null) {\n match = n => Editor.isBlock(editor, n);\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\n } // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n\n\n if (Path.isPath(at)) {\n var path = at;\n var point = Editor.point(editor, path);\n var [parent] = Editor.parent(editor, path);\n\n match = n => n === parent;\n\n height = point.path.length - path.length + 1;\n at = point;\n always = true;\n }\n\n if (!at) {\n return;\n }\n\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward'\n });\n var [highest] = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n\n if (!highest) {\n return;\n }\n\n var voidMatch = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n var nudge = 0;\n\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n\n if (!after) {\n var text = {\n text: ''\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n\n at = after;\n always = true;\n }\n\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n\n var afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n\n for (var [node, _path2] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n\n if (_path2.length < highestPath.length || _path2.length === 0 || !voids && Editor.isVoid(editor, node)) {\n break;\n }\n\n var _point = beforeRef.current;\n var isEnd = Editor.isEnd(editor, _point, _path2);\n\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path2)) {\n split = true;\n var properties = Node.extractProps(node);\n editor.apply({\n type: 'split_node',\n path: _path2,\n position,\n properties\n });\n }\n\n position = _path2[_path2.length - 1] + (split || isEnd ? 1 : 0);\n }\n\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n\n Transforms.select(editor, _point2);\n }\n\n beforeRef.unref();\n afterRef.unref();\n });\n },\n\n /**\r\n * Unset properties on the nodes at a location.\r\n */\n unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!Array.isArray(props)) {\n props = [props];\n }\n\n var obj = {};\n\n for (var key of props) {\n obj[key] = null;\n }\n\n Transforms.setNodes(editor, obj, options);\n },\n\n /**\r\n * Unwrap the nodes at a location from a parent node, splitting the parent if\r\n * necessary to ensure that only the content in the range is unwrapped.\r\n */\n unwrapNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref5 => {\n var [, p] = _ref5;\n return Editor.pathRef(editor, p);\n } // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse();\n\n var _loop = function _loop(pathRef) {\n var path = pathRef.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids\n });\n };\n\n for (var pathRef of pathRefs) {\n _loop(pathRef);\n }\n\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n },\n\n /**\r\n * Wrap the nodes at a location in a new container node, splitting the edges\r\n * of the range first to ensure that only the content in the range is wrapped.\r\n */\n wrapNodes(editor, element) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at);\n } else if (editor.isInline(element)) {\n match = n => Editor.isInline(editor, n) || Text.isText(n);\n } else {\n match = n => Editor.isBlock(editor, n);\n }\n }\n\n if (split && Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n Transforms.splitNodes(editor, {\n at: end,\n match,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start,\n match,\n voids\n });\n at = rangeRef.unref();\n\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element) ? n => Editor.isBlock(editor, n) : n => Editor.isEditor(n),\n mode: 'lowest',\n voids\n }));\n\n for (var [, rootPath] of roots) {\n var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n\n if (!a) {\n continue;\n }\n\n var matches = Array.from(Editor.nodes(editor, {\n at: a,\n match,\n mode,\n voids\n }));\n\n if (matches.length > 0) {\n var _ret = function () {\n var [first] = matches;\n var last = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last;\n\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n return \"continue\";\n }\n\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var commonNodeEntry = Editor.node(editor, commonPath);\n var [commonNode] = commonNodeEntry;\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n\n var wrapper = _objectSpread$2(_objectSpread$2({}, element), {}, {\n children: []\n });\n\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: n => Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids\n });\n }();\n\n if (_ret === \"continue\") continue;\n }\n }\n });\n }\n\n};\n\nvar hasSingleChildNest = (editor, node) => {\n if (Element.isElement(node)) {\n var element = node;\n\n if (Editor.isVoid(editor, node)) {\n return true;\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0]);\n } else {\n return false;\n }\n } else if (Editor.isEditor(node)) {\n return false;\n } else {\n return true;\n }\n};\n/**\r\n * Convert a range into a point by deleting it's content.\r\n */\n\n\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\n\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return n => n === node;\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar SelectionTransforms = {\n /**\r\n * Collapse the selection.\r\n */\n collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n edge = 'anchor'\n } = options;\n var {\n selection\n } = editor;\n\n if (!selection) {\n return;\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor);\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus);\n } else if (edge === 'start') {\n var [start] = Range.edges(selection);\n Transforms.select(editor, start);\n } else if (edge === 'end') {\n var [, end] = Range.edges(selection);\n Transforms.select(editor, end);\n }\n },\n\n /**\r\n * Unset the selection.\r\n */\n deselect(editor) {\n var {\n selection\n } = editor;\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null\n });\n }\n },\n\n /**\r\n * Move the selection's point forward or backward.\r\n */\n move(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = 'character',\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n\n if (!selection) {\n return;\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit\n };\n var props = {};\n\n if (edge == null || edge === 'anchor') {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n\n if (point) {\n props.anchor = point;\n }\n }\n\n if (edge == null || edge === 'focus') {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n\n if (_point) {\n props.focus = _point;\n }\n }\n\n Transforms.setSelection(editor, props);\n },\n\n /**\r\n * Set the selection to a new value.\r\n */\n select(editor, target) {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(JSON.stringify(target)));\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target\n });\n },\n\n /**\r\n * Set new properties on one of the selection's points.\r\n */\n setPoint(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection\n } = editor;\n var {\n edge = 'both'\n } = options;\n\n if (!selection) {\n return;\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n\n var {\n anchor,\n focus\n } = selection;\n var point = edge === 'anchor' ? anchor : focus;\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: _objectSpread$1(_objectSpread$1({}, point), props)\n });\n },\n\n /**\r\n * Set new properties on the selection.\r\n */\n setSelection(editor, props) {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n\n if (!selection) {\n return;\n }\n\n for (var k in props) {\n if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) {\n oldProps[k] = selection[k];\n newProps[k] = props[k];\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps\n });\n }\n }\n\n};\n\nvar TextTransforms = {\n /**\r\n * Delete content in the editor.\r\n */\n delete(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n\n if (!at) {\n return;\n }\n\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor;\n }\n\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n\n if (Range.isCollapsed(at)) {\n return;\n }\n\n if (!hanging) {\n var [, _end] = Range.edges(at);\n var endOfDoc = Editor.end(editor, []);\n\n if (!Point.equals(_end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n }\n\n var [start, end] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: start,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: end,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start.path, end.path);\n var startVoid = voids ? null : Editor.void(editor, {\n at: start,\n mode: 'highest'\n });\n var endVoid = voids ? null : Editor.void(editor, {\n at: end,\n mode: 'highest'\n }); // If the start or end points are inside an inline void, nudge them out.\n\n if (startVoid) {\n var before = Editor.before(editor, start);\n\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before;\n }\n }\n\n if (endVoid) {\n var after = Editor.after(editor, end);\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after;\n }\n } // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n\n\n var matches = [];\n var lastPath;\n\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n\n if (!voids && Editor.isVoid(editor, node) || !Path.isCommon(path, start.path) && !Path.isCommon(path, end.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n\n if (!isSingleText && !startVoid) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset\n } = start;\n\n var text = _node.text.slice(offset);\n\n if (text.length > 0) editor.apply({\n type: 'remove_text',\n path: _path,\n offset,\n text\n });\n }\n\n for (var pathRef of pathRefs) {\n var _path2 = pathRef.unref();\n\n Transforms.removeNodes(editor, {\n at: _path2,\n voids\n });\n }\n\n if (!endVoid) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path3\n } = _point2;\n\n var _offset = isSingleText ? start.offset : 0;\n\n var _text = _node2.text.slice(_offset, end.offset);\n\n if (_text.length > 0) editor.apply({\n type: 'remove_text',\n path: _path3,\n offset: _offset,\n text: _text\n });\n }\n\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n\n var point = reverse ? startRef.unref() || endRef.unref() : endRef.unref() || startRef.unref();\n\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n },\n\n /**\r\n * Insert a fragment at a specific location in the editor.\r\n */\n insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n\n if (!fragment.length) {\n return;\n }\n\n if (!at) {\n return;\n } else if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n } // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n\n\n var inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n\n var blockMatch = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var isBlockEmpty = isBlockStart && isBlockEnd;\n var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n var mergeEnd = !isBlockEnd;\n var [, firstPath] = Node.first({\n children: fragment\n }, []);\n var [, lastPath] = Node.last({\n children: fragment\n }, []);\n var matches = [];\n\n var matcher = _ref2 => {\n var [n, p] = _ref2;\n var isRoot = p.length === 0;\n\n if (isRoot) {\n return false;\n }\n\n if (isBlockEmpty) {\n return true;\n }\n\n if (mergeStart && Path.isAncestor(p, firstPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n\n if (mergeEnd && Path.isAncestor(p, lastPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n\n return true;\n };\n\n for (var entry of Node.nodes({\n children: fragment\n }, {\n pass: matcher\n })) {\n if (matcher(entry)) {\n matches.push(entry);\n }\n }\n\n var starts = [];\n var middles = [];\n var ends = [];\n var starting = true;\n var hasBlocks = false;\n\n for (var [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false;\n hasBlocks = true;\n middles.push(node);\n } else if (starting) {\n starts.push(node);\n } else {\n ends.push(node);\n }\n }\n\n var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n var blockPathRef = Editor.pathRef(editor, blockPath);\n Transforms.splitNodes(editor, {\n at,\n match: n => hasBlocks ? Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.insertNodes(editor, starts, {\n at: startRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n\n if (isBlockEmpty && middles.length) {\n Transforms.delete(editor, {\n at: blockPathRef.unref(),\n voids\n });\n }\n\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current,\n match: n => Editor.isBlock(editor, n),\n mode: 'lowest',\n voids\n });\n Transforms.insertNodes(editor, ends, {\n at: endRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n\n if (!options.at) {\n var path;\n\n if (ends.length > 0) {\n path = Path.previous(endRef.current);\n } else if (middles.length > 0) {\n path = Path.previous(middleRef.current);\n } else {\n path = Path.previous(startRef.current);\n }\n\n var _end2 = Editor.end(editor, path);\n\n Transforms.select(editor, _end2);\n }\n\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n },\n\n /**\r\n * Insert a string of text in the Editor.\r\n */\n insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end = Range.end(at);\n\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at,\n voids\n });\n at = pointRef.unref();\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n\n var {\n path,\n offset\n } = at;\n if (text.length > 0) editor.apply({\n type: 'insert_text',\n path,\n offset,\n text\n });\n });\n }\n\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Transforms = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\nexport { Editor, Element, Location, Node, Operation, Path, PathRef, Point, PointRef, Range, RangeRef, Span, Text, Transforms, createEditor };\n//# sourceMappingURL=index.es.js.map\n","'use strict'\n\nmodule.exports = direction\n\nvar RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nvar LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\nvar rtl = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\nvar ltr = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nfunction direction(value) {\n value = String(value || '')\n\n if (rtl.test(value)) {\n return 'rtl'\n }\n\n if (ltr.test(value)) {\n return 'ltr'\n }\n\n return 'neutral'\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","function t(t){return\"object\"==typeof t&&null!=t&&1===t.nodeType}function e(t,e){return(!e||\"hidden\"!==t)&&\"visible\"!==t&&\"clip\"!==t}function n(t,n){if(t.clientHeight<t.scrollHeight||t.clientWidth<t.scrollWidth){var r=getComputedStyle(t,null);return e(r.overflowY,n)||e(r.overflowX,n)||function(t){var e=function(t){if(!t.ownerDocument||!t.ownerDocument.defaultView)return null;try{return t.ownerDocument.defaultView.frameElement}catch(t){return null}}(t);return!!e&&(e.clientHeight<t.scrollHeight||e.clientWidth<t.scrollWidth)}(t)}return!1}function r(t,e,n,r,i,o,l,d){return o<t&&l>e||o>t&&l<e?0:o<=t&&d<=n||l>=e&&d>=n?o-t-r:l>e&&d<n||o<t&&d>n?l-e+i:0}var i=function(e,i){var o=window,l=i.scrollMode,d=i.block,f=i.inline,h=i.boundary,u=i.skipOverflowHiddenElements,s=\"function\"==typeof h?h:function(t){return t!==h};if(!t(e))throw new TypeError(\"Invalid target\");for(var a,c,g=document.scrollingElement||document.documentElement,p=[],m=e;t(m)&&s(m);){if((m=null==(c=(a=m).parentElement)?a.getRootNode().host||null:c)===g){p.push(m);break}null!=m&&m===document.body&&n(m)&&!n(document.documentElement)||null!=m&&n(m,u)&&p.push(m)}for(var w=o.visualViewport?o.visualViewport.width:innerWidth,v=o.visualViewport?o.visualViewport.height:innerHeight,W=window.scrollX||pageXOffset,H=window.scrollY||pageYOffset,b=e.getBoundingClientRect(),y=b.height,E=b.width,M=b.top,V=b.right,x=b.bottom,I=b.left,C=\"start\"===d||\"nearest\"===d?M:\"end\"===d?x:M+y/2,R=\"center\"===f?I+E/2:\"end\"===f?V:I,T=[],k=0;k<p.length;k++){var B=p[k],D=B.getBoundingClientRect(),O=D.height,X=D.width,Y=D.top,L=D.right,S=D.bottom,j=D.left;if(\"if-needed\"===l&&M>=0&&I>=0&&x<=v&&V<=w&&M>=Y&&x<=S&&I>=j&&V<=L)return T;var N=getComputedStyle(B),q=parseInt(N.borderLeftWidth,10),z=parseInt(N.borderTopWidth,10),A=parseInt(N.borderRightWidth,10),F=parseInt(N.borderBottomWidth,10),G=0,J=0,K=\"offsetWidth\"in B?B.offsetWidth-B.clientWidth-q-A:0,P=\"offsetHeight\"in B?B.offsetHeight-B.clientHeight-z-F:0,Q=\"offsetWidth\"in B?0===B.offsetWidth?0:X/B.offsetWidth:0,U=\"offsetHeight\"in B?0===B.offsetHeight?0:O/B.offsetHeight:0;if(g===B)G=\"start\"===d?C:\"end\"===d?C-v:\"nearest\"===d?r(H,H+v,v,z,F,H+C,H+C+y,y):C-v/2,J=\"start\"===f?R:\"center\"===f?R-w/2:\"end\"===f?R-w:r(W,W+w,w,q,A,W+R,W+R+E,E),G=Math.max(0,G+H),J=Math.max(0,J+W);else{G=\"start\"===d?C-Y-z:\"end\"===d?C-S+F+P:\"nearest\"===d?r(Y,S,O,z,F+P,C,C+y,y):C-(Y+O/2)+P/2,J=\"start\"===f?R-j-q:\"center\"===f?R-(j+X/2)+K/2:\"end\"===f?R-L+A+K:r(j,L,X,q,A+K,R,R+E,E);var Z=B.scrollLeft,$=B.scrollTop;C+=$-(G=Math.max(0,Math.min($+G/U,B.scrollHeight-O/U+P))),R+=Z-(J=Math.max(0,Math.min(Z+J/Q,B.scrollWidth-X/Q+K)))}T.push({el:B,top:G,left:J})}return T};export{i as default};\n//# sourceMappingURL=index.mjs.map\n","import compute from 'compute-scroll-into-view';\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\nexport default scrollIntoView;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?') && value.length > 1;\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key' && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","import React, { useLayoutEffect, useEffect, useRef, useState, Fragment, useContext, createContext, useMemo, useCallback, useReducer } from 'react';\nimport { Path, Node, Editor, Text as Text$1, Range, Element as Element$1, Transforms } from 'slate';\nimport getDirection from 'direction';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { isKeyHotkey } from 'is-hotkey';\nimport ReactDOM from 'react-dom';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar IS_IOS = typeof navigator !== 'undefined' && typeof window !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);\nvar IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);\nvar IS_FIREFOX = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nvar IS_SAFARI = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent); // \"modern\" Edge was released at 79.x\n\nvar IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(\\.)/i.test(navigator.userAgent);\nvar IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent); // Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\n\nvar IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(\\.)/i.test(navigator.userAgent); // Firefox did not support `beforeInput` until `v87`.\n\nvar IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])).*/i.test(navigator.userAgent); // qq browser\n\nvar IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent); // UC mobile browser\n\nvar IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent); // Wechat browser\n\nvar IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent); // Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\n\nvar CAN_USE_DOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined'); // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\n\nvar HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY && !IS_EDGE_LEGACY && // globalThis is undefined in older browsers\ntypeof globalThis !== 'undefined' && globalThis.InputEvent && // @ts-ignore The `getTargetRanges` property isn't recognized.\ntypeof globalThis.InputEvent.prototype.getTargetRanges === 'function';\n\n/**\r\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\r\n */\n\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? useLayoutEffect : useEffect;\n\n/**\r\n * Leaf content strings.\r\n */\n\nvar String = props => {\n var {\n isLast,\n leaf,\n parent,\n text\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, text);\n var parentPath = Path.parent(path); // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n\n if (editor.isVoid(parent)) {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n length: Node.string(parent).length\n });\n } // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n\n\n if (leaf.text === '' && parent.children[parent.children.length - 1] === text && !editor.isInline(parent) && Editor.string(editor, parentPath) === '') {\n return /*#__PURE__*/React.createElement(ZeroWidthString, {\n isLineBreak: true\n });\n } // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n\n\n if (leaf.text === '') {\n return /*#__PURE__*/React.createElement(ZeroWidthString, null);\n } // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n\n\n if (isLast && leaf.text.slice(-1) === '\\n') {\n return /*#__PURE__*/React.createElement(TextString, {\n isTrailing: true,\n text: leaf.text\n });\n }\n\n return /*#__PURE__*/React.createElement(TextString, {\n text: leaf.text\n });\n};\n/**\r\n * Leaf strings with text in them.\r\n */\n\n\nvar TextString = props => {\n var {\n text,\n isTrailing = false\n } = props;\n var ref = useRef(null);\n\n var getTextContent = () => {\n return \"\".concat(text !== null && text !== void 0 ? text : '').concat(isTrailing ? '\\n' : '');\n }; // This is the actual text rendering boundary where we interface with the DOM\n // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM <span> content\n // exactly if and only if its current content does not match our current virtual DOM.\n // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n // eg makes native spellcheck opt out from checking the text node.\n // useLayoutEffect: updating our span before browser paint\n\n\n useIsomorphicLayoutEffect(() => {\n // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n var textWithTrailing = getTextContent();\n\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing;\n } // intentionally not specifying dependencies, so that this effect runs on every render\n // as this effectively replaces \"specifying the text in the virtual DOM under the <span> below\" on each render\n\n }); // Render text content immediately if it's the first-time render\n // Ensure that text content is rendered on server-side rendering\n\n if (!ref.current) {\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-string\": true,\n ref: ref\n }, getTextContent());\n } // the span is intentionally same on every render in virtual DOM, actual rendering happens in the layout effect above\n\n\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-string\": true,\n ref: ref\n });\n};\n/**\r\n * Leaf strings without text, render as zero-width strings.\r\n */\n\n\nvar ZeroWidthString = props => {\n var {\n length = 0,\n isLineBreak = false\n } = props;\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-zero-width\": isLineBreak ? 'n' : 'z',\n \"data-slate-length\": length\n }, '\\uFEFF', isLineBreak ? /*#__PURE__*/React.createElement(\"br\", null) : null);\n};\n\n/**\r\n * Two weak maps that allow us rebuild a path given a node. They are populated\r\n * at render time such that after a render occurs we can always backtrack.\r\n */\nvar NODE_TO_INDEX = new WeakMap();\nvar NODE_TO_PARENT = new WeakMap();\n/**\r\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\r\n * are used to resolve DOM event-related logic into Slate actions.\r\n */\n\nvar EDITOR_TO_WINDOW = new WeakMap();\nvar EDITOR_TO_ELEMENT = new WeakMap();\nvar ELEMENT_TO_NODE = new WeakMap();\nvar NODE_TO_ELEMENT = new WeakMap();\nvar NODE_TO_KEY = new WeakMap();\nvar EDITOR_TO_KEY_TO_ELEMENT = new WeakMap();\n/**\r\n * Weak maps for storing editor-related state.\r\n */\n\nvar IS_READ_ONLY = new WeakMap();\nvar IS_FOCUSED = new WeakMap();\nvar IS_COMPOSING = new WeakMap();\nvar IS_ON_COMPOSITION_END = new WeakMap();\n/**\r\n * Weak maps for saving text on composition stage.\r\n */\n\nvar EDITOR_ON_COMPOSITION_TEXT = new WeakMap();\n/**\r\n * Weak map for associating the context `onChange` context with the plugin.\r\n */\n\nvar EDITOR_TO_ON_CHANGE = new WeakMap();\nvar NODE_TO_RESTORE_DOM = new WeakMap();\n/**\r\n * Symbols.\r\n */\n\nvar PLACEHOLDER_SYMBOL = Symbol('placeholder');\n\n/**\r\n * Individual leaves in a text node with unique formatting.\r\n */\n\nvar Leaf = props => {\n var {\n leaf,\n isLast,\n text,\n parent,\n renderPlaceholder,\n renderLeaf = props => /*#__PURE__*/React.createElement(DefaultLeaf, Object.assign({}, props))\n } = props;\n var placeholderRef = useRef(null);\n useEffect(() => {\n var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;\n var editorEl = document.querySelector('[data-slate-editor=\"true\"]');\n\n if (!placeholderEl || !editorEl) {\n return;\n }\n\n editorEl.style.minHeight = \"\".concat(placeholderEl.clientHeight, \"px\");\n return () => {\n editorEl.style.minHeight = 'auto';\n };\n }, [placeholderRef, leaf]);\n var children = /*#__PURE__*/React.createElement(String, {\n isLast: isLast,\n leaf: leaf,\n parent: parent,\n text: text\n });\n\n if (leaf[PLACEHOLDER_SYMBOL]) {\n var placeholderProps = {\n children: leaf.placeholder,\n attributes: {\n 'data-slate-placeholder': true,\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n width: '100%',\n maxWidth: '100%',\n display: 'block',\n opacity: '0.333',\n userSelect: 'none',\n textDecoration: 'none'\n },\n contentEditable: false,\n ref: placeholderRef\n }\n };\n children = /*#__PURE__*/React.createElement(React.Fragment, null, renderPlaceholder(placeholderProps), children);\n } // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n // contenteditable behaviors. (2019/05/08)\n\n\n var attributes = {\n 'data-slate-leaf': true\n };\n return renderLeaf({\n attributes,\n children,\n leaf,\n text\n });\n};\n\nvar MemoizedLeaf = /*#__PURE__*/React.memo(Leaf, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && Text$1.equals(next.leaf, prev.leaf) && next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL];\n});\nvar DefaultLeaf = props => {\n var {\n attributes,\n children\n } = props;\n return /*#__PURE__*/React.createElement(\"span\", Object.assign({}, attributes), children);\n};\n\nvar _excluded$3 = [\"anchor\", \"focus\"],\n _excluded2 = [\"anchor\", \"focus\"];\nvar shallowCompare = (obj1, obj2) => Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every(key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]);\n/**\r\n * Check if a list of decorator ranges are equal to another.\r\n *\r\n * PERF: this requires the two lists to also have the ranges inside them in the\r\n * same order, but this is an okay constraint for us since decorations are\r\n * kept in order, and the odd case where they aren't is okay to re-render for.\r\n */\n\nvar isDecoratorRangeListEqual = (list, another) => {\n if (list.length !== another.length) {\n return false;\n }\n\n for (var i = 0; i < list.length; i++) {\n var range = list[i];\n var other = another[i];\n\n var rangeOwnProps = _objectWithoutProperties(range, _excluded$3);\n\n var otherOwnProps = _objectWithoutProperties(other, _excluded2);\n\n if (!Range.equals(range, other) || range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] || !shallowCompare(rangeOwnProps, otherOwnProps)) {\n return false;\n }\n }\n\n return true;\n};\n\nfunction useContentKey(node) {\n var contentKeyRef = useRef(0);\n var updateAnimationFrameRef = useRef(null);\n var [, setForceRerenderCounter] = useState(0);\n useEffect(() => {\n NODE_TO_RESTORE_DOM.set(node, () => {\n // Update is already queued and node hasn't re-render yet\n if (updateAnimationFrameRef.current) {\n return;\n }\n\n updateAnimationFrameRef.current = requestAnimationFrame(() => {\n setForceRerenderCounter(state => state + 1);\n updateAnimationFrameRef.current = null;\n });\n contentKeyRef.current++;\n });\n return () => {\n NODE_TO_RESTORE_DOM.delete(node);\n };\n }, [node]); // Node was restored => clear scheduled update\n\n if (updateAnimationFrameRef.current) {\n cancelAnimationFrame(updateAnimationFrameRef.current);\n updateAnimationFrameRef.current = null;\n }\n\n return contentKeyRef.current;\n}\n\n/**\r\n * Text.\r\n */\n\nvar Text = props => {\n var {\n decorations,\n isLast,\n parent,\n renderPlaceholder,\n renderLeaf,\n text\n } = props;\n var editor = useSlateStatic();\n var ref = useRef(null);\n var leaves = Text$1.decorations(text, decorations);\n var key = ReactEditor.findKey(editor, text);\n var children = [];\n\n for (var i = 0; i < leaves.length; i++) {\n var leaf = leaves[i];\n children.push( /*#__PURE__*/React.createElement(MemoizedLeaf, {\n isLast: isLast && i === leaves.length - 1,\n key: \"\".concat(key.id, \"-\").concat(i),\n renderPlaceholder: renderPlaceholder,\n leaf: leaf,\n text: text,\n parent: parent,\n renderLeaf: renderLeaf\n }));\n } // Update element-related weak maps with the DOM element ref.\n\n\n useIsomorphicLayoutEffect(() => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n\n if (ref.current) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n NODE_TO_ELEMENT.set(text, ref.current);\n ELEMENT_TO_NODE.set(ref.current, text);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(text);\n }\n });\n var contentKey = IS_ANDROID ? useContentKey(text) : undefined;\n return /*#__PURE__*/React.createElement(\"span\", {\n \"data-slate-node\": \"text\",\n ref: ref,\n key: contentKey\n }, children);\n};\n\nvar MemoizedText = /*#__PURE__*/React.memo(Text, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.text === prev.text && isDecoratorRangeListEqual(next.decorations, prev.decorations);\n});\n\n/**\r\n * Element.\r\n */\n\nvar Element = props => {\n var {\n decorations,\n element,\n renderElement = p => /*#__PURE__*/React.createElement(DefaultElement, Object.assign({}, p)),\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var ref = useRef(null);\n var editor = useSlateStatic();\n var readOnly = useReadOnly();\n var isInline = editor.isInline(element);\n var key = ReactEditor.findKey(editor, element);\n var children = useChildren({\n decorations,\n node: element,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n }); // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n\n var attributes = {\n 'data-slate-node': 'element',\n ref\n };\n\n if (isInline) {\n attributes['data-slate-inline'] = true;\n } // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n\n\n if (!isInline && Editor.hasInlines(editor, element)) {\n var text = Node.string(element);\n var dir = getDirection(text);\n\n if (dir === 'rtl') {\n attributes.dir = dir;\n }\n } // If it's a void node, wrap the children in extra void-specific elements.\n\n\n if (Editor.isVoid(editor, element)) {\n attributes['data-slate-void'] = true;\n\n if (!readOnly && isInline) {\n attributes.contentEditable = false;\n }\n\n var Tag = isInline ? 'span' : 'div';\n var [[_text]] = Node.texts(element);\n children = /*#__PURE__*/React.createElement(Tag, {\n \"data-slate-spacer\": true,\n style: {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n }\n }, /*#__PURE__*/React.createElement(MemoizedText, {\n renderPlaceholder: renderPlaceholder,\n decorations: [],\n isLast: false,\n parent: element,\n text: _text\n }));\n NODE_TO_INDEX.set(_text, 0);\n NODE_TO_PARENT.set(_text, element);\n } // Update element-related weak maps with the DOM element ref.\n\n\n useIsomorphicLayoutEffect(() => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n\n if (ref.current) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n NODE_TO_ELEMENT.set(element, ref.current);\n ELEMENT_TO_NODE.set(ref.current, element);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(element);\n }\n });\n var content = renderElement({\n attributes,\n children,\n element\n });\n\n if (IS_ANDROID) {\n var contentKey = useContentKey(element);\n return /*#__PURE__*/React.createElement(Fragment, {\n key: contentKey\n }, content);\n }\n\n return content;\n};\n\nvar MemoizedElement = /*#__PURE__*/React.memo(Element, (prev, next) => {\n return prev.element === next.element && prev.renderElement === next.renderElement && prev.renderLeaf === next.renderLeaf && isDecoratorRangeListEqual(prev.decorations, next.decorations) && (prev.selection === next.selection || !!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection));\n});\n/**\r\n * The default element renderer.\r\n */\n\nvar DefaultElement = props => {\n var {\n attributes,\n children,\n element\n } = props;\n var editor = useSlateStatic();\n var Tag = editor.isInline(element) ? 'span' : 'div';\n return /*#__PURE__*/React.createElement(Tag, Object.assign({}, attributes, {\n style: {\n position: 'relative'\n }\n }), children);\n};\n\n/**\r\n * A React context for sharing the editor object.\r\n */\n\nvar EditorContext = /*#__PURE__*/createContext(null);\n/**\r\n * Get the current editor object from the React context.\r\n */\n\nvar useSlateStatic = () => {\n var editor = useContext(EditorContext);\n\n if (!editor) {\n throw new Error(\"The `useSlateStatic` hook must be used inside the <Slate> component's context.\");\n }\n\n return editor;\n};\n\n/**\r\n * A React context for sharing the `decorate` prop of the editable.\r\n */\n\nvar DecorateContext = /*#__PURE__*/createContext(() => []);\n/**\r\n * Get the current `decorate` prop of the editable.\r\n */\n\nvar useDecorate = () => {\n return useContext(DecorateContext);\n};\n\n/**\r\n * A React context for sharing the `selected` state of an element.\r\n */\n\nvar SelectedContext = /*#__PURE__*/createContext(false);\n/**\r\n * Get the current `selected` state of an element.\r\n */\n\nvar useSelected = () => {\n return useContext(SelectedContext);\n};\n\n/**\r\n * Children.\r\n */\n\nvar useChildren = props => {\n var {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n useDecorate();\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, node);\n var children = [];\n var isLeafBlock = Element$1.isElement(node) && !editor.isInline(node) && Editor.hasInlines(editor, node);\n\n var _loop = function _loop(i) {\n var p = path.concat(i);\n var n = node.children[i];\n var key = ReactEditor.findKey(editor, n);\n var range = Editor.range(editor, p);\n var sel = selection && Range.intersection(range, selection);\n var ds = decorations.filter(dec => Range.intersection(dec, range));\n\n if (Element$1.isElement(n)) {\n children.push( /*#__PURE__*/React.createElement(SelectedContext.Provider, {\n key: \"provider-\".concat(key.id),\n value: !!sel\n }, /*#__PURE__*/React.createElement(MemoizedElement, {\n decorations: ds,\n element: n,\n key: key.id,\n renderElement: renderElement,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n selection: sel\n })));\n } else {\n children.push( /*#__PURE__*/React.createElement(MemoizedText, {\n decorations: ds,\n key: key.id,\n isLast: isLeafBlock && i === node.children.length - 1,\n parent: node,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n text: n\n }));\n }\n\n NODE_TO_INDEX.set(n, i);\n NODE_TO_PARENT.set(n, node);\n };\n\n for (var i = 0; i < node.children.length; i++) {\n _loop(i);\n }\n\n return children;\n};\n\n/**\r\n * Hotkey mappings for each platform.\r\n */\n\nvar HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n splitBlock: 'shift?+enter',\n undo: 'mod+z'\n};\nvar APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t'\n};\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: ['ctrl+y', 'ctrl+shift+z']\n};\n/**\r\n * Create a platform-aware hotkey checker.\r\n */\n\nvar create = key => {\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n var isGeneric = generic && isKeyHotkey(generic);\n var isApple = apple && isKeyHotkey(apple);\n var isWindows = windows && isKeyHotkey(windows);\n return event => {\n if (isGeneric && isGeneric(event)) return true;\n if (IS_APPLE && isApple && isApple(event)) return true;\n if (!IS_APPLE && isWindows && isWindows(event)) return true;\n return false;\n };\n};\n/**\r\n * Hotkeys.\r\n */\n\n\nvar Hotkeys = {\n isBold: create('bold'),\n isCompose: create('compose'),\n isMoveBackward: create('moveBackward'),\n isMoveForward: create('moveForward'),\n isDeleteBackward: create('deleteBackward'),\n isDeleteForward: create('deleteForward'),\n isDeleteLineBackward: create('deleteLineBackward'),\n isDeleteLineForward: create('deleteLineForward'),\n isDeleteWordBackward: create('deleteWordBackward'),\n isDeleteWordForward: create('deleteWordForward'),\n isExtendBackward: create('extendBackward'),\n isExtendForward: create('extendForward'),\n isExtendLineBackward: create('extendLineBackward'),\n isExtendLineForward: create('extendLineForward'),\n isItalic: create('italic'),\n isMoveLineBackward: create('moveLineBackward'),\n isMoveLineForward: create('moveLineForward'),\n isMoveWordBackward: create('moveWordBackward'),\n isMoveWordForward: create('moveWordForward'),\n isRedo: create('redo'),\n isSplitBlock: create('splitBlock'),\n isTransposeCharacter: create('transposeCharacter'),\n isUndo: create('undo')\n};\n\n/**\r\n * A React context for sharing the `readOnly` state of the editor.\r\n */\n\nvar ReadOnlyContext = /*#__PURE__*/createContext(false);\n/**\r\n * Get the current `readOnly` state of the editor.\r\n */\n\nvar useReadOnly = () => {\n return useContext(ReadOnlyContext);\n};\n\n/**\r\n * A React context for sharing the editor object, in a way that re-renders the\r\n * context whenever changes occur.\r\n */\n\nvar SlateContext = /*#__PURE__*/createContext(null);\n/**\r\n * Get the current editor object from the React context.\r\n */\n\nvar useSlate = () => {\n var context = useContext(SlateContext);\n\n if (!context) {\n throw new Error(\"The `useSlate` hook must be used inside the <Slate> component's context.\");\n }\n\n var [editor] = context;\n return editor;\n};\n\n/**\r\n * Types.\r\n */\n/**\r\n * Returns the host window of a DOM node\r\n */\n\nvar getDefaultView = value => {\n return value && value.ownerDocument && value.ownerDocument.defaultView || null;\n};\n/**\r\n * Check if a DOM node is a comment node.\r\n */\n\nvar isDOMComment = value => {\n return isDOMNode(value) && value.nodeType === 8;\n};\n/**\r\n * Check if a DOM node is an element node.\r\n */\n\nvar isDOMElement = value => {\n return isDOMNode(value) && value.nodeType === 1;\n};\n/**\r\n * Check if a value is a DOM node.\r\n */\n\nvar isDOMNode = value => {\n var window = getDefaultView(value);\n return !!window && value instanceof window.Node;\n};\n/**\r\n * Check if a value is a DOM selection.\r\n */\n\nvar isDOMSelection = value => {\n var window = value && value.anchorNode && getDefaultView(value.anchorNode);\n return !!window && value instanceof window.Selection;\n};\n/**\r\n * Check if a DOM node is an element node.\r\n */\n\nvar isDOMText = value => {\n return isDOMNode(value) && value.nodeType === 3;\n};\n/**\r\n * Checks whether a paste event is a plaintext-only event.\r\n */\n\nvar isPlainTextOnlyPaste = event => {\n return event.clipboardData && event.clipboardData.getData('text/plain') !== '' && event.clipboardData.types.length === 1;\n};\n/**\r\n * Normalize a DOM point so that it always refers to a text node.\r\n */\n\nvar normalizeDOMPoint = domPoint => {\n var [node, offset] = domPoint; // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n\n if (isDOMElement(node) && node.childNodes.length) {\n var isLast = offset === node.childNodes.length;\n var index = isLast ? offset - 1 : offset;\n [node, index] = getEditableChildAndIndex(node, index, isLast ? 'backward' : 'forward'); // If the editable child found is in front of input offset, we instead seek to its end\n\n isLast = index < offset; // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n\n while (isDOMElement(node) && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, isLast ? 'backward' : 'forward');\n } // Determine the new offset inside the text node.\n\n\n offset = isLast && node.textContent != null ? node.textContent.length : 0;\n } // Return the node and offset.\n\n\n return [node, offset];\n};\n/**\r\n * Determines wether the active element is nested within a shadowRoot\r\n */\n\nvar hasShadowRoot = () => {\n return !!(window.document.activeElement && window.document.activeElement.shadowRoot);\n};\n/**\r\n * Get the nearest editable child and index at `index` in a `parent`, preferring\r\n * `direction`.\r\n */\n\nvar getEditableChildAndIndex = (parent, index, direction) => {\n var {\n childNodes\n } = parent;\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false; // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n\n while (isDOMComment(child) || isDOMElement(child) && child.childNodes.length === 0 || isDOMElement(child) && child.getAttribute('contenteditable') === 'false') {\n if (triedForward && triedBackward) {\n break;\n }\n\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n\n child = childNodes[i];\n index = i;\n i += direction === 'forward' ? 1 : -1;\n }\n\n return [child, index];\n};\n/**\r\n * Get the nearest editable child at `index` in a `parent`, preferring\r\n * `direction`.\r\n */\n\nvar getEditableChild = (parent, index, direction) => {\n var [child] = getEditableChildAndIndex(parent, index, direction);\n return child;\n};\n/**\r\n * Get a plaintext representation of the content of a node, accounting for block\r\n * elements which get a newline appended.\r\n *\r\n * The domNode must be attached to the DOM.\r\n */\n\nvar getPlainText = domNode => {\n var text = '';\n\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue;\n }\n\n if (isDOMElement(domNode)) {\n for (var childNode of Array.from(domNode.childNodes)) {\n text += getPlainText(childNode);\n }\n\n var display = getComputedStyle(domNode).getPropertyValue('display');\n\n if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n text += '\\n';\n }\n }\n\n return text;\n};\n/**\r\n * Get x-slate-fragment attribute from data-slate-fragment\r\n */\n\nvar catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nvar getSlateFragmentAttribute = dataTransfer => {\n var htmlData = dataTransfer.getData('text/html');\n var [, fragment] = htmlData.match(catchSlateFragment) || [];\n return fragment;\n};\n/**\r\n * Get the x-slate-fragment attribute that exist in text/html data\r\n * and append it to the DataTransfer object\r\n */\n\nvar getClipboardData = dataTransfer => {\n if (!dataTransfer.getData('application/x-slate-fragment')) {\n var fragment = getSlateFragmentAttribute(dataTransfer);\n\n if (fragment) {\n var clipboardData = new DataTransfer();\n dataTransfer.types.forEach(type => {\n clipboardData.setData(type, dataTransfer.getData(type));\n });\n clipboardData.setData('application/x-slate-fragment', fragment);\n return clipboardData;\n }\n }\n\n return dataTransfer;\n};\n\nvar _excluded$2 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"scrollSelectionIntoView\", \"style\", \"as\"];\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Children = props => /*#__PURE__*/React.createElement(React.Fragment, null, useChildren(props));\n/**\r\n * Editable.\r\n */\n\n\nvar Editable$1 = props => {\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = props => /*#__PURE__*/React.createElement(DefaultPlaceholder, Object.assign({}, props)),\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style = {},\n as: Component = 'div'\n } = props,\n attributes = _objectWithoutProperties(props, _excluded$2);\n\n var editor = useSlate(); // Rerender editor when composition status changed\n\n var [isComposing, setIsComposing] = useState(false);\n var ref = useRef(null);\n var deferredOperations = useRef([]); // Update internal state on each render.\n\n IS_READ_ONLY.set(editor, readOnly); // Keep track of some state for the event handler logic.\n\n var state = useMemo(() => ({\n isComposing: false,\n hasInsertPrefixInCompositon: false,\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null\n }), []); // Whenever the editor updates...\n\n useIsomorphicLayoutEffect(() => {\n // Update element-related weak maps with the DOM element ref.\n var window;\n\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n } // Make sure the DOM selection state is in sync.\n\n\n var {\n selection\n } = editor;\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root.getSelection();\n\n if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n return;\n }\n\n var hasDomSelection = domSelection.type !== 'None'; // If the DOM selection is properly unset, we're done.\n\n if (!selection && !hasDomSelection) {\n return;\n } // verify that the dom selection is in the editor\n\n\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n\n if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n hasDomSelectionInEditor = true;\n } // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n\n\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n // domSelection is not necessarily a valid Slate range\n // (e.g. when clicking on contentEditable:false element)\n suppressThrow: true\n });\n\n if (slateRange && Range.equals(slateRange, selection)) {\n return;\n }\n } // when <Editable/> is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n\n\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n return;\n } // Otherwise the DOM selection is out of sync, so update it.\n\n\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n\n if (newDomRange) {\n if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n\n scrollSelectionIntoView(editor, newDomRange);\n } else {\n domSelection.removeAllRanges();\n }\n\n setTimeout(() => {\n // COMPAT: In Firefox, it's not enough to create a range, you also need\n // to focus the contenteditable element too. (2016/11/16)\n if (newDomRange && IS_FIREFOX) {\n var el = ReactEditor.toDOMNode(editor, editor);\n el.focus();\n }\n\n state.isUpdatingSelection = false;\n });\n }); // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]); // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n\n var onDOMSelectionChange = useCallback(throttle(() => {\n if (!state.isComposing && !state.isUpdatingSelection && !state.isDraggingInternally) {\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = root;\n var el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = root.getSelection();\n\n if (activeElement === el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n\n if (anchorNodeSelectable && focusNodeSelectable) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, range);\n }\n }\n }, 100), [readOnly]);\n var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]); // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n\n var onDOMBeforeInput = useCallback(event => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n var {\n selection\n } = editor;\n var {\n inputType: type\n } = event;\n var data = event.dataTransfer || event.data || undefined; // These two types occur while a user is composing text and can't be\n // cancelled. Let them through and wait for the composition to end.\n\n if (type === 'insertCompositionText' || type === 'deleteCompositionText') {\n return;\n }\n\n var native = false;\n\n if (type === 'insertText' && selection && Range.isCollapsed(selection) && // Only use native character insertion for single characters a-z or space for now.\n // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n // causes duplicate inserts.\n event.data && event.data.length === 1 && /[a-z ]/i.test(event.data) && // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n // When there is an inline element, e.g. a link, and you select\n // right after it (the start of the next node).\n selection.anchor.offset !== 0) {\n native = true; // Skip native if there are marks, as\n // `insertText` will insert a node, not just text.\n\n if (editor.marks) {\n native = false;\n } // Chrome also has issues correctly editing the end of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n // Therefore we don't allow native events to insert text at the end of nodes.\n\n\n var {\n anchor\n } = selection;\n var inline = Editor.above(editor, {\n at: anchor,\n match: n => Editor.isInline(editor, n),\n mode: 'highest'\n });\n\n if (inline) {\n var [, inlinePath] = inline;\n\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n native = false;\n }\n }\n }\n\n if (!native) {\n event.preventDefault();\n } // COMPAT: For the deleting forward/backward input types we don't want\n // to change the selection because it is the range that will be deleted,\n // and those commands determine that for themselves.\n\n\n if (!type.startsWith('delete') || type.startsWith('deleteBy')) {\n var [targetRange] = event.getTargetRanges();\n\n if (targetRange) {\n var range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false\n });\n\n if (!selection || !Range.equals(selection, range)) {\n Transforms.select(editor, range);\n }\n }\n } // COMPAT: If the selection is expanded, even if the command seems like\n // a delete forward/backward command it should delete the selection.\n\n\n if (selection && Range.isExpanded(selection) && type.startsWith('delete')) {\n var direction = type.endsWith('Backward') ? 'backward' : 'forward';\n Editor.deleteFragment(editor, {\n direction\n });\n return;\n }\n\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag':\n {\n Editor.deleteFragment(editor);\n break;\n }\n\n case 'deleteContent':\n case 'deleteContentForward':\n {\n Editor.deleteForward(editor);\n break;\n }\n\n case 'deleteContentBackward':\n {\n Editor.deleteBackward(editor);\n break;\n }\n\n case 'deleteEntireSoftLine':\n {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n break;\n }\n\n case 'deleteHardLineBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'block'\n });\n break;\n }\n\n case 'deleteSoftLineBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n break;\n }\n\n case 'deleteHardLineForward':\n {\n Editor.deleteForward(editor, {\n unit: 'block'\n });\n break;\n }\n\n case 'deleteSoftLineForward':\n {\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n break;\n }\n\n case 'deleteWordBackward':\n {\n Editor.deleteBackward(editor, {\n unit: 'word'\n });\n break;\n }\n\n case 'deleteWordForward':\n {\n Editor.deleteForward(editor, {\n unit: 'word'\n });\n break;\n }\n\n case 'insertLineBreak':\n case 'insertParagraph':\n {\n Editor.insertBreak(editor);\n break;\n }\n\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n var {\n selection: _selection\n } = editor;\n\n if (_selection) {\n if (Range.isExpanded(_selection)) {\n Editor.deleteFragment(editor);\n }\n }\n\n if (type === 'insertFromComposition') {\n // COMPAT: in Safari, `compositionend` is dispatched after the\n // `beforeinput` for \"insertFromComposition\". But if we wait for it\n // then we will abort because we're still composing and the selection\n // won't be updated properly.\n // https://www.w3.org/TR/input-events-2/\n state.isComposing && setIsComposing(false);\n state.isComposing = false;\n } // use a weak comparison instead of 'instanceof' to allow\n // programmatic access of paste events coming from external windows\n // like cypress where cy.window does not work realibly\n\n\n if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {\n ReactEditor.insertData(editor, data);\n } else if (typeof data === 'string') {\n // Only insertText operations use the native functionality, for now.\n // Potentially expand to single character deletes, as well.\n if (native) {\n deferredOperations.current.push(() => Editor.insertText(editor, data));\n } else {\n Editor.insertText(editor, data);\n }\n }\n\n break;\n }\n }\n }\n }, [readOnly, propsOnDOMBeforeInput]); // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n // https://github.com/facebook/react/issues/11211\n\n useIsomorphicLayoutEffect(() => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.addEventListener('beforeinput', onDOMBeforeInput);\n }\n\n return () => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput);\n }\n };\n }, [onDOMBeforeInput]); // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n // fire for any change to the selection inside the editor. (2019/11/04)\n // https://github.com/facebook/react/issues/5785\n\n useIsomorphicLayoutEffect(() => {\n var window = ReactEditor.getWindow(editor);\n window.document.addEventListener('selectionchange', scheduleOnDOMSelectionChange);\n return () => {\n window.document.removeEventListener('selectionchange', scheduleOnDOMSelectionChange);\n };\n }, [scheduleOnDOMSelectionChange]);\n var decorations = [...Node.nodes(editor)].flatMap(_ref => {\n var [n, p] = _ref;\n return decorate([n, p]);\n });\n\n if (placeholder && editor.children.length === 1 && Array.from(Node.texts(editor)).length === 1 && Node.string(editor) === '' && !isComposing) {\n var start = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start,\n focus: start\n });\n }\n\n return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {\n value: decorate\n }, /*#__PURE__*/React.createElement(Component, Object.assign({\n role: readOnly ? undefined : 'textbox'\n }, attributes, {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n // have to use hacks to make these replacement-based features work.\n // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n // mismatch warning app moves to browser. Pass-through consumer props when\n // not CAN_USE_DOM (SSR) and default to falsy value\n spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,\n autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : 'false',\n autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : 'false',\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n // explicitly set this\n contentEditable: !readOnly,\n // in some cases, a decoration needs access to the range / selection to decorate a text node,\n // then you will select the whole text node when you select part the of text\n // this magic zIndex=\"-1\" will fix it\n zindex: -1,\n suppressContentEditableWarning: true,\n ref: ref,\n style: _objectSpread$1({\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, style),\n onBeforeInput: useCallback(event => {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's leaky polyfill instead just for it. It\n // only works for the `insertText` input type.\n if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && hasEditableTarget(editor, event.target)) {\n event.preventDefault();\n\n if (!state.isComposing) {\n var text = event.data;\n Editor.insertText(editor, text);\n }\n }\n }, [readOnly]),\n onInput: useCallback(event => {\n // Flush native operations, as native events will have propogated\n // and we can correctly compare DOM text values in components\n // to stop rendering, so that browser functions like autocorrect\n // and spellcheck work as expected.\n for (var op of deferredOperations.current) {\n op();\n }\n\n deferredOperations.current = [];\n }, []),\n onBlur: useCallback(event => {\n if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n } // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n\n\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n\n if (state.latestElement === root.activeElement) {\n return;\n }\n\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor); // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an <input>\n // element inside a void node).\n\n if (relatedTarget === el) {\n return;\n } // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n\n\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute('data-slate-spacer')) {\n return;\n } // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n\n\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n\n if (Element$1.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n } // COMPAT: Safari doesn't always remove the selection even if the content-\n // editable element no longer has focus. Refer to:\n // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n\n\n if (IS_SAFARI) {\n var domSelection = root.getSelection();\n domSelection === null || domSelection === void 0 ? void 0 : domSelection.removeAllRanges();\n }\n\n IS_FOCUSED.delete(editor);\n }, [readOnly, attributes.onBlur]),\n onClick: useCallback(event => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node); // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n\n if (Editor.hasPath(editor, path)) {\n var lookupNode = Node.get(editor, path);\n\n if (lookupNode === node) {\n var _start = Editor.start(editor, path);\n\n var end = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end\n });\n\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var range = Editor.range(editor, _start);\n Transforms.select(editor, range);\n }\n }\n }\n }\n }, [readOnly, attributes.onClick]),\n onCompositionEnd: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n state.isComposing && setIsComposing(false);\n state.isComposing = false; // COMPAT: In Chrome, `beforeinput` events for compositions\n // aren't correct and never fire the \"insertFromComposition\"\n // type that we need. So instead, insert whenever a composition\n // ends since it will already have been committed to the DOM.\n\n if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {\n Editor.insertText(editor, event.data);\n }\n\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n var leafPath = editor.selection.anchor.path;\n var currentTextNode = Node.leaf(editor, leafPath);\n\n if (state.hasInsertPrefixInCompositon) {\n state.hasInsertPrefixInCompositon = false;\n Editor.withoutNormalizing(editor, () => {\n // remove Unicode BOM prefix added in `onCompositionStart`\n var text = currentTextNode.text.replace(/^\\uFEFF/, '');\n Transforms.delete(editor, {\n distance: currentTextNode.text.length,\n reverse: true\n });\n Editor.insertText(editor, text);\n });\n }\n }\n }\n }, [attributes.onCompositionEnd]),\n onCompositionUpdate: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n }\n }, [attributes.onCompositionUpdate]),\n onCompositionStart: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n var {\n selection,\n marks\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n return;\n }\n\n var inline = Editor.above(editor, {\n match: n => Editor.isInline(editor, n),\n mode: 'highest'\n });\n\n if (inline) {\n var [, inlinePath] = inline;\n\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n var point = Editor.after(editor, inlinePath);\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point\n });\n }\n } // insert new node in advance to ensure composition text will insert\n // along with final input text\n // add Unicode BOM prefix to avoid normalize removing this node\n\n\n if (marks) {\n state.hasInsertPrefixInCompositon = true;\n Transforms.insertNodes(editor, _objectSpread$1({\n text: '\\uFEFF'\n }, marks), {\n select: true\n });\n }\n }\n }\n }, [attributes.onCompositionStart]),\n onCopy: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');\n }\n }, [attributes.onCopy]),\n onCut: useCallback(event => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');\n var {\n selection\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node.parent(editor, selection.anchor.path);\n\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, attributes.onCut]),\n onDragOver: useCallback(event => {\n if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {\n // Only when the target is void, call `preventDefault` to signal\n // that drops are allowed. Editable content is droppable by\n // default, and calling `preventDefault` hides the cursor.\n var node = ReactEditor.toSlateNode(editor, event.target);\n\n if (Editor.isVoid(editor, node)) {\n event.preventDefault();\n }\n }\n }, [attributes.onDragOver]),\n onDragStart: useCallback(event => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n var voidMatch = Editor.isVoid(editor, node) || Editor.void(editor, {\n at: path,\n voids: true\n }); // If starting a drag on a void node, make sure it is selected\n // so that it shows up in the selection's fragment.\n\n if (voidMatch) {\n var range = Editor.range(editor, path);\n Transforms.select(editor, range);\n }\n\n state.isDraggingInternally = true;\n ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag');\n }\n }, [readOnly, attributes.onDragStart]),\n onDrop: useCallback(event => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {\n event.preventDefault(); // Keep a reference to the dragged range before updating selection\n\n var draggedRange = editor.selection; // Find the range where the drop happened\n\n var range = ReactEditor.findEventRange(editor, event);\n var data = event.dataTransfer;\n Transforms.select(editor, range);\n\n if (state.isDraggingInternally) {\n if (draggedRange && !Range.equals(draggedRange, range) && !Editor.void(editor, {\n at: range,\n voids: true\n })) {\n Transforms.delete(editor, {\n at: draggedRange\n });\n }\n }\n\n ReactEditor.insertData(editor, data); // When dragging from another source into the editor, it's possible\n // that the current editor does not have focus.\n\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor);\n }\n }\n\n state.isDraggingInternally = false;\n }, [readOnly, attributes.onDrop]),\n onDragEnd: useCallback(event => {\n if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && hasTarget(editor, event.target)) {\n attributes.onDragEnd(event);\n } // When dropping on a different droppable element than the current editor,\n // `onDrop` is not called. So we need to clean up in `onDragEnd` instead.\n // Note: `onDragEnd` is only called when `onDrop` is not called\n\n\n state.isDraggingInternally = false;\n }, [readOnly, attributes.onDragEnd]),\n onFocus: useCallback(event => {\n if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root.activeElement; // COMPAT: If the editor has nested editable elements, the focus\n // can go to them. In Firefox, this must be prevented because it\n // results in issues with keyboard navigation. (2017/03/30)\n\n if (IS_FIREFOX && event.target !== el) {\n el.focus();\n return;\n }\n\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, attributes.onFocus]),\n onKeyDown: useCallback(event => {\n if (!readOnly && !state.isComposing && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onKeyDown)) {\n var {\n nativeEvent\n } = event;\n var {\n selection\n } = editor;\n var element = editor.children[selection !== null ? selection.focus.path[0] : 0];\n var isRTL = getDirection(Node.string(element)) === 'rtl'; // COMPAT: Since we prevent the default behavior on\n // `beforeinput` events, the browser doesn't think there's ever\n // any history stack to undo or redo, so we have to manage these\n // hotkeys ourselves. (2019/11/06)\n\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault();\n var maybeHistoryEditor = editor;\n\n if (typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo();\n }\n\n return;\n }\n\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault();\n var _maybeHistoryEditor = editor;\n\n if (typeof _maybeHistoryEditor.undo === 'function') {\n _maybeHistoryEditor.undo();\n }\n\n return;\n } // COMPAT: Certain browsers don't handle the selection updates\n // properly. In Chrome, the selection isn't properly extended.\n // And in Firefox, the selection isn't properly collapsed.\n // (2017/10/17)\n\n\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n reverse: true\n });\n return;\n }\n\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line'\n });\n return;\n }\n\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus',\n reverse: true\n });\n return;\n }\n\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus'\n });\n return;\n } // COMPAT: If a void node is selected, or a zero-width text node\n // adjacent to an inline is selected, we need to handle these\n // hotkeys manually because browsers won't be able to skip over\n // the void node with the zero-width space not being an empty\n // string.\n\n\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: !isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: 'start'\n });\n }\n\n return;\n }\n\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: 'end'\n });\n }\n\n return;\n }\n\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: 'focus'\n });\n }\n\n Transforms.move(editor, {\n unit: 'word',\n reverse: !isRTL\n });\n return;\n }\n\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: 'focus'\n });\n }\n\n Transforms.move(editor, {\n unit: 'word',\n reverse: isRTL\n });\n return;\n } // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to guessing at the input intention for hotkeys.\n // COMPAT: In iOS, some of these hotkeys are handled in the\n\n\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n // We don't have a core behavior for these, but they change the\n // DOM if we don't prevent them, so we have to.\n if (Hotkeys.isBold(nativeEvent) || Hotkeys.isItalic(nativeEvent) || Hotkeys.isTransposeCharacter(nativeEvent)) {\n event.preventDefault();\n return;\n }\n\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault();\n Editor.insertBreak(editor);\n return;\n }\n\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor);\n }\n\n return;\n }\n\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor);\n }\n\n return;\n }\n\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: 'line'\n });\n }\n\n return;\n }\n\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor, {\n unit: 'line'\n });\n }\n\n return;\n }\n\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'backward'\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: 'word'\n });\n }\n\n return;\n }\n\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault();\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: 'forward'\n });\n } else {\n Editor.deleteForward(editor, {\n unit: 'word'\n });\n }\n\n return;\n }\n } else {\n if (IS_CHROME || IS_SAFARI) {\n // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n // an event when deleting backwards in a selected void inline node\n if (selection && (Hotkeys.isDeleteBackward(nativeEvent) || Hotkeys.isDeleteForward(nativeEvent)) && Range.isCollapsed(selection)) {\n var currentNode = Node.parent(editor, selection.anchor.path);\n\n if (Element$1.isElement(currentNode) && Editor.isVoid(editor, currentNode) && Editor.isInline(editor, currentNode)) {\n event.preventDefault();\n Editor.deleteBackward(editor, {\n unit: 'block'\n });\n return;\n }\n }\n }\n }\n }\n }, [readOnly, attributes.onKeyDown]),\n onPaste: useCallback(event => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's `onPaste` here instead.\n // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n if (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent)) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }\n }, [readOnly, attributes.onPaste])\n }), /*#__PURE__*/React.createElement(Children, {\n decorations: decorations,\n node: editor,\n renderElement: renderElement,\n renderPlaceholder: renderPlaceholder,\n renderLeaf: renderLeaf,\n selection: editor.selection\n }))));\n};\n/**\r\n * The default placeholder element\r\n */\n\nvar DefaultPlaceholder = _ref2 => {\n var {\n attributes,\n children\n } = _ref2;\n return /*#__PURE__*/React.createElement(\"span\", Object.assign({}, attributes), children);\n};\n/**\r\n * A default memoized decorate function.\r\n */\n\nvar defaultDecorate = () => [];\n/**\r\n * A default implement to scroll dom range into view.\r\n */\n\nvar defaultScrollSelectionIntoView = (editor, domRange) => {\n // This was affecting the selection of multiple blocks and dragging behavior,\n // so enabled only if the selection has been collapsed.\n if (!editor.selection || editor.selection && Range.isCollapsed(editor.selection)) {\n var leafEl = domRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange);\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed'\n });\n delete leafEl.getBoundingClientRect;\n }\n};\n/**\r\n * Check if the target is in the editor.\r\n */\n\nvar hasTarget = (editor, target) => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target);\n};\n/**\r\n * Check if the target is editable and in the editor.\r\n */\n\nvar hasEditableTarget = (editor, target) => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target, {\n editable: true\n });\n};\n/**\r\n * Check if the target is inside void and in an non-readonly editor.\r\n */\n\nvar isTargetInsideNonReadonlyVoid = (editor, target) => {\n if (IS_READ_ONLY.get(editor)) return false;\n var slateNode = hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target);\n return Editor.isVoid(editor, slateNode);\n};\n/**\r\n * Check if an event is overrided by a handler.\r\n */\n\nvar isEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n } // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n\n\n var shouldTreatEventAsHandled = handler(event);\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n\n return event.isDefaultPrevented() || event.isPropagationStopped();\n};\n/**\r\n * Check if a DOM event is overrided by a handler.\r\n */\n\nvar isDOMEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n } // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n\n\n var shouldTreatEventAsHandled = handler(event);\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n\n return event.defaultPrevented;\n};\n\n/**\r\n * Returns the number of characters that are the same at the beginning of the\r\n * String.\r\n *\r\n * @param prev the previous text\r\n * @param next the next text\r\n * @returns the offset of the start of the difference; null if there is no difference\r\n */\n\nfunction getDiffStart(prev, next) {\n var length = Math.min(prev.length, next.length);\n\n for (var i = 0; i < length; i++) {\n if (prev.charAt(i) !== next.charAt(i)) return i;\n }\n\n if (prev.length !== next.length) return length;\n return null;\n}\n/**\r\n * Returns the number of characters that are the same at the end of the String\r\n * up to `max`. Max prevents double-counting characters when there are\r\n * multiple duplicate characters around the diff area.\r\n *\r\n * @param prev the previous text\r\n * @param next the next text\r\n * @param max the max length to test.\r\n * @returns number of characters that are the same at the end of the string\r\n */\n\n\nfunction getDiffEnd(prev, next, max) {\n var prevLength = prev.length;\n var nextLength = next.length;\n var length = Math.min(prevLength, nextLength, max);\n\n for (var i = 0; i < length; i++) {\n var prevChar = prev.charAt(prevLength - i - 1);\n var nextChar = next.charAt(nextLength - i - 1);\n if (prevChar !== nextChar) return i;\n }\n\n if (prev.length !== next.length) return length;\n return null;\n}\n/**\r\n * Takes two strings and returns an object representing two offsets. The\r\n * first, `start` represents the number of characters that are the same at\r\n * the front of the String. The `end` represents the number of characters\r\n * that are the same at the end of the String.\r\n *\r\n * Returns null if they are identical.\r\n *\r\n * @param prev the previous text\r\n * @param next the next text\r\n * @returns the difference text range; null if there are no differences.\r\n */\n\n\nfunction getDiffOffsets(prev, next) {\n if (prev === next) return null;\n var start = getDiffStart(prev, next);\n if (start === null) return null;\n var maxEnd = Math.min(prev.length - start, next.length - start);\n var end = getDiffEnd(prev, next, maxEnd);\n if (end === null) return null;\n return {\n start,\n end\n };\n}\n/**\r\n * Takes a text string and returns a slice from the string at the given text range\r\n *\r\n * @param text the text\r\n * @param offsets the text range\r\n * @returns the text slice at text range\r\n */\n\n\nfunction sliceText(text, offsets) {\n return text.slice(offsets.start, text.length - offsets.end);\n}\n/**\r\n * Takes two strings and returns a smart diff that can be used to describe the\r\n * change in a way that can be used as operations like inserting, removing or\r\n * replacing text.\r\n *\r\n * @param prev the previous text\r\n * @param next the next text\r\n * @returns the text difference\r\n */\n\n\nfunction diffText(prev, next) {\n if (prev === undefined || next === undefined) return null;\n var offsets = getDiffOffsets(prev, next);\n if (offsets == null) return null;\n var insertText = sliceText(next, offsets);\n var removeText = sliceText(prev, offsets);\n return {\n start: offsets.start,\n end: prev.length - offsets.end,\n insertText,\n removeText\n };\n}\nfunction combineInsertedText(insertedText) {\n return insertedText.reduce((acc, _ref) => {\n var {\n text\n } = _ref;\n return \"\".concat(acc).concat(text.insertText);\n }, '');\n}\nfunction getTextInsertion(editor, domNode) {\n var node = ReactEditor.toSlateNode(editor, domNode);\n\n if (!Text$1.isText(node)) {\n return undefined;\n }\n\n var prevText = node.text;\n var nextText = domNode.textContent; // textContent will pad an extra \\n when the textContent ends with an \\n\n\n if (nextText.endsWith('\\n')) {\n nextText = nextText.slice(0, nextText.length - 1);\n } // If the text is no different, there is no diff.\n\n\n if (nextText !== prevText) {\n var textDiff = diffText(prevText, nextText);\n\n if (textDiff !== null) {\n var textPath = ReactEditor.findPath(editor, node);\n return {\n text: textDiff,\n path: textPath\n };\n }\n }\n\n return undefined;\n}\nfunction normalizeTextInsertionRange(editor, range, _ref2) {\n var {\n path,\n text\n } = _ref2;\n var insertionRange = {\n anchor: {\n path,\n offset: text.start\n },\n focus: {\n path,\n offset: text.end\n }\n };\n\n if (!range || !Range.isCollapsed(range)) {\n return insertionRange;\n }\n\n var {\n insertText,\n removeText\n } = text;\n var isSingleCharacterInsertion = insertText.length === 1 || removeText.length === 1;\n /**\r\n * This code handles edge cases that arise from text diffing when the\r\n * inserted or removed character is a single character, and the character\r\n * right before or after the anchor is the same as the one being inserted or\r\n * removed.\r\n *\r\n * Take this example: hello|o\r\n *\r\n * If another `o` is inserted at the selection's anchor in the example above,\r\n * it should be inserted at the anchor, but using text diffing, we actually\r\n * detect that the character was inserted after the second `o`:\r\n *\r\n * helloo[o]|\r\n *\r\n * Instead, in these very specific edge cases, we assume that the character\r\n * needs to be inserted after the anchor rather than where the diff was found:\r\n *\r\n * hello[o]|o\r\n */\n\n if (isSingleCharacterInsertion && Path.equals(range.anchor.path, path)) {\n var [_text] = Array.from(Editor.nodes(editor, {\n at: range,\n match: Text$1.isText\n }));\n\n if (_text) {\n var [node] = _text;\n var {\n anchor\n } = range;\n var characterBeforeAnchor = node.text[anchor.offset - 1];\n var characterAfterAnchor = node.text[anchor.offset];\n\n if (insertText.length === 1 && insertText === characterAfterAnchor) {\n // Assume text should be inserted at the anchor\n return range;\n }\n\n if (removeText.length === 1 && removeText === characterBeforeAnchor) {\n // Assume text should be removed right before the anchor\n return {\n anchor: {\n path,\n offset: anchor.offset - 1\n },\n focus: {\n path,\n offset: anchor.offset\n }\n };\n }\n }\n }\n\n return insertionRange;\n}\n\n/**\r\n * An auto-incrementing identifier for keys.\r\n */\nvar n = 0;\n/**\r\n * A class that keeps track of a key string. We use a full class here because we\r\n * want to be able to use them as keys in `WeakMap` objects.\r\n */\n\nclass Key {\n constructor() {\n this.id = \"\".concat(n++);\n }\n\n}\n\nvar ReactEditor = {\n /**\r\n * Return the host window of the current editor.\r\n */\n getWindow(editor) {\n var window = EDITOR_TO_WINDOW.get(editor);\n\n if (!window) {\n throw new Error('Unable to find a host window element for this editor');\n }\n\n return window;\n },\n\n /**\r\n * Find a key for a Slate node.\r\n */\n findKey(editor, node) {\n var key = NODE_TO_KEY.get(node);\n\n if (!key) {\n key = new Key();\n NODE_TO_KEY.set(node, key);\n }\n\n return key;\n },\n\n /**\r\n * Find the path of Slate node.\r\n */\n findPath(editor, node) {\n var path = [];\n var child = node;\n\n while (true) {\n var parent = NODE_TO_PARENT.get(child);\n\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n\n var i = NODE_TO_INDEX.get(child);\n\n if (i == null) {\n break;\n }\n\n path.unshift(i);\n child = parent;\n }\n\n throw new Error(\"Unable to find the path for Slate node: \".concat(JSON.stringify(node)));\n },\n\n /**\r\n * Find the DOM node that implements DocumentOrShadowRoot for the editor.\r\n */\n findDocumentOrShadowRoot(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = el.getRootNode();\n\n if ((root instanceof Document || root instanceof ShadowRoot) && root.getSelection != null) {\n return root;\n }\n\n return el.ownerDocument;\n },\n\n /**\r\n * Check if the editor is focused.\r\n */\n isFocused(editor) {\n return !!IS_FOCUSED.get(editor);\n },\n\n /**\r\n * Check if the editor is in read-only mode.\r\n */\n isReadOnly(editor) {\n return !!IS_READ_ONLY.get(editor);\n },\n\n /**\r\n * Blur the editor.\r\n */\n blur(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, false);\n\n if (root.activeElement === el) {\n el.blur();\n }\n },\n\n /**\r\n * Focus the editor.\r\n */\n focus(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, true);\n\n if (root.activeElement !== el) {\n el.focus({\n preventScroll: true\n });\n }\n },\n\n /**\r\n * Deselect the editor.\r\n */\n deselect(editor) {\n ReactEditor.toDOMNode(editor, editor);\n var {\n selection\n } = editor;\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root.getSelection();\n\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n\n if (selection) {\n Transforms.deselect(editor);\n }\n },\n\n /**\r\n * Check if a DOM node is within the editor.\r\n */\n hasDOMNode(editor, target) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n editable = false\n } = options;\n var editorEl = ReactEditor.toDOMNode(editor, editor);\n var targetEl; // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n // target is originating from an internal \"restricted\" element (e.g. a\n // stepper arrow on a number input). (2018/05/04)\n // https://github.com/ianstormtaylor/slate/issues/1819\n\n try {\n targetEl = isDOMElement(target) ? target : target.parentElement;\n } catch (err) {\n if (!err.message.includes('Permission denied to access property \"nodeType\"')) {\n throw err;\n }\n }\n\n if (!targetEl) {\n return false;\n }\n\n return targetEl.closest(\"[data-slate-editor]\") === editorEl && (!editable || targetEl.isContentEditable ? true : typeof targetEl.isContentEditable === 'boolean' && // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n targetEl.closest('[contenteditable=\"false\"]') === editorEl || !!targetEl.getAttribute('data-slate-zero-width'));\n },\n\n /**\r\n * Insert data from a `DataTransfer` into the editor.\r\n */\n insertData(editor, data) {\n editor.insertData(data);\n },\n\n /**\r\n * Insert fragment data from a `DataTransfer` into the editor.\r\n */\n insertFragmentData(editor, data) {\n return editor.insertFragmentData(data);\n },\n\n /**\r\n * Insert text data from a `DataTransfer` into the editor.\r\n */\n insertTextData(editor, data) {\n return editor.insertTextData(data);\n },\n\n /**\r\n * Sets data from the currently selected fragment on a `DataTransfer`.\r\n */\n setFragmentData(editor, data, originEvent) {\n editor.setFragmentData(data, originEvent);\n },\n\n /**\r\n * Find the native DOM element from a Slate node.\r\n */\n toDOMNode(editor, node) {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n var domNode = Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.get(ReactEditor.findKey(editor, node));\n\n if (!domNode) {\n throw new Error(\"Cannot resolve a DOM node from Slate node: \".concat(JSON.stringify(node)));\n }\n\n return domNode;\n },\n\n /**\r\n * Find a native DOM selection point from a Slate point.\r\n */\n toDOMPoint(editor, point) {\n var [node] = Editor.node(editor, point.path);\n var el = ReactEditor.toDOMNode(editor, node);\n var domPoint; // If we're inside a void node, force the offset to 0, otherwise the zero\n // width spacing character will result in an incorrect offset of 1\n\n if (Editor.void(editor, {\n at: point\n })) {\n point = {\n path: point.path,\n offset: 0\n };\n } // For each leaf, we need to isolate its content, which means filtering\n // to its direct text and zero-width spans. (We have to filter out any\n // other siblings that may have been rendered alongside them.)\n\n\n var selector = \"[data-slate-string], [data-slate-zero-width]\";\n var texts = Array.from(el.querySelectorAll(selector));\n var start = 0;\n\n for (var text of texts) {\n var domNode = text.childNodes[0];\n\n if (domNode == null || domNode.textContent == null) {\n continue;\n }\n\n var {\n length\n } = domNode.textContent;\n var attr = text.getAttribute('data-slate-length');\n var trueLength = attr == null ? length : parseInt(attr, 10);\n var end = start + trueLength;\n\n if (point.offset <= end) {\n var offset = Math.min(length, Math.max(0, point.offset - start));\n domPoint = [domNode, offset];\n break;\n }\n\n start = end;\n }\n\n if (!domPoint) {\n throw new Error(\"Cannot resolve a DOM point from Slate point: \".concat(JSON.stringify(point)));\n }\n\n return domPoint;\n },\n\n /**\r\n * Find a native DOM range from a Slate `range`.\r\n *\r\n * Notice: the returned range will always be ordinal regardless of the direction of Slate `range` due to DOM API limit.\r\n *\r\n * there is no way to create a reverse DOM Range using Range.setStart/setEnd\r\n * according to https://dom.spec.whatwg.org/#concept-range-bp-set.\r\n */\n toDOMRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n var isBackward = Range.isBackward(range);\n var domAnchor = ReactEditor.toDOMPoint(editor, anchor);\n var domFocus = Range.isCollapsed(range) ? domAnchor : ReactEditor.toDOMPoint(editor, focus);\n var window = ReactEditor.getWindow(editor);\n var domRange = window.document.createRange();\n var [startNode, startOffset] = isBackward ? domFocus : domAnchor;\n var [endNode, endOffset] = isBackward ? domAnchor : domFocus; // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n // adjust the offset accordingly.\n\n var startEl = isDOMElement(startNode) ? startNode : startNode.parentElement;\n var isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width');\n var endEl = isDOMElement(endNode) ? endNode : endNode.parentElement;\n var isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width');\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset);\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset);\n return domRange;\n },\n\n /**\r\n * Find a Slate node from a native DOM `element`.\r\n */\n toSlateNode(editor, domNode) {\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n\n var node = domEl ? ELEMENT_TO_NODE.get(domEl) : null;\n\n if (!node) {\n throw new Error(\"Cannot resolve a Slate node from DOM node: \".concat(domEl));\n }\n\n return node;\n },\n\n /**\r\n * Get the target range from a DOM `event`.\r\n */\n findEventRange(editor, event) {\n if ('nativeEvent' in event) {\n event = event.nativeEvent;\n }\n\n var {\n clientX: x,\n clientY: y,\n target\n } = event;\n\n if (x == null || y == null) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node); // If the drop target is inside a void node, move it into either the\n // next or previous node, depending on which side the `x` and `y`\n // coordinates are closest to.\n\n if (Editor.isVoid(editor, node)) {\n var rect = target.getBoundingClientRect();\n var isPrev = editor.isInline(node) ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n var edge = Editor.point(editor, path, {\n edge: isPrev ? 'start' : 'end'\n });\n var point = isPrev ? Editor.before(editor, edge) : Editor.after(editor, edge);\n\n if (point) {\n var _range = Editor.range(editor, point);\n\n return _range;\n }\n } // Else resolve a range from the caret position where the drop occured.\n\n\n var domRange;\n var {\n document\n } = ReactEditor.getWindow(editor); // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n\n if (document.caretRangeFromPoint) {\n domRange = document.caretRangeFromPoint(x, y);\n } else {\n var position = document.caretPositionFromPoint(x, y);\n\n if (position) {\n domRange = document.createRange();\n domRange.setStart(position.offsetNode, position.offset);\n domRange.setEnd(position.offsetNode, position.offset);\n }\n }\n\n if (!domRange) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n } // Resolve a Slate range from the DOM range.\n\n\n var range = ReactEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false\n });\n return range;\n },\n\n /**\r\n * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\r\n */\n toSlatePoint(editor, domPoint, options) {\n var {\n exactMatch,\n suppressThrow\n } = options;\n var [nearestNode, nearestOffset] = exactMatch ? domPoint : normalizeDOMPoint(domPoint);\n var parentNode = nearestNode.parentNode;\n var textNode = null;\n var offset = 0;\n\n if (parentNode) {\n var _domNode$textContent;\n\n var voidNode = parentNode.closest('[data-slate-void=\"true\"]');\n var leafNode = parentNode.closest('[data-slate-leaf]');\n var domNode = null; // Calculate how far into the text node the `nearestNode` is, so that we\n // can determine what the offset relative to the text node is.\n\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n\n if (textNode) {\n var window = ReactEditor.getWindow(editor);\n var range = window.document.createRange();\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n var contents = range.cloneContents();\n var removals = [...Array.prototype.slice.call(contents.querySelectorAll('[data-slate-zero-width]')), ...Array.prototype.slice.call(contents.querySelectorAll('[contenteditable=false]'))];\n removals.forEach(el => {\n el.parentNode.removeChild(el);\n }); // COMPAT: Edge has a bug where Range.prototype.toString() will\n // convert \\n into \\r\\n. The bug causes a loop when slate-react\n // attempts to reposition its cursor to match the native position. Use\n // textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n\n offset = contents.textContent.length;\n domNode = textNode;\n }\n } else if (voidNode) {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n leafNode = voidNode.querySelector('[data-slate-leaf]'); // COMPAT: In read-only editors the leaf is not rendered.\n\n if (!leafNode) {\n offset = 1;\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n domNode = leafNode;\n offset = domNode.textContent.length;\n domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n offset -= el.textContent.length;\n });\n }\n }\n\n if (domNode && offset === domNode.textContent.length && (parentNode.hasAttribute('data-slate-zero-width') || IS_FIREFOX && (_domNode$textContent = domNode.textContent) !== null && _domNode$textContent !== void 0 && _domNode$textContent.endsWith('\\n\\n'))) {\n offset--;\n }\n }\n\n if (!textNode) {\n if (suppressThrow) {\n return null;\n }\n\n throw new Error(\"Cannot resolve a Slate point from DOM point: \".concat(domPoint));\n } // COMPAT: If someone is clicking from one Slate editor into another,\n // the select event fires twice, once for the old editor's `element`\n // first, and then afterwards for the correct `element`. (2017/03/03)\n\n\n var slateNode = ReactEditor.toSlateNode(editor, textNode);\n var path = ReactEditor.findPath(editor, slateNode);\n return {\n path,\n offset\n };\n },\n\n /**\r\n * Find a Slate range from a DOM range or selection.\r\n */\n toSlateRange(editor, domRange, options) {\n var {\n exactMatch,\n suppressThrow\n } = options;\n var el = isDOMSelection(domRange) ? domRange.anchorNode : domRange.startContainer;\n var anchorNode;\n var anchorOffset;\n var focusNode;\n var focusOffset;\n var isCollapsed;\n\n if (el) {\n if (isDOMSelection(domRange)) {\n anchorNode = domRange.anchorNode;\n anchorOffset = domRange.anchorOffset;\n focusNode = domRange.focusNode;\n focusOffset = domRange.focusOffset; // COMPAT: There's a bug in chrome that always returns `true` for\n // `isCollapsed` for a Selection that comes from a ShadowRoot.\n // (2020/08/08)\n // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n\n if (IS_CHROME && hasShadowRoot()) {\n isCollapsed = domRange.anchorNode === domRange.focusNode && domRange.anchorOffset === domRange.focusOffset;\n } else {\n isCollapsed = domRange.isCollapsed;\n }\n } else {\n anchorNode = domRange.startContainer;\n anchorOffset = domRange.startOffset;\n focusNode = domRange.endContainer;\n focusOffset = domRange.endOffset;\n isCollapsed = domRange.collapsed;\n }\n }\n\n if (anchorNode == null || focusNode == null || anchorOffset == null || focusOffset == null) {\n throw new Error(\"Cannot resolve a Slate range from DOM range: \".concat(domRange));\n }\n\n var anchor = ReactEditor.toSlatePoint(editor, [anchorNode, anchorOffset], {\n exactMatch,\n suppressThrow\n });\n\n if (!anchor) {\n return null;\n }\n\n var focus = isCollapsed ? anchor : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow\n });\n\n if (!focus) {\n return null;\n }\n\n var range = {\n anchor: anchor,\n focus: focus\n }; // if the selection is a hanging range that ends in a void\n // and the DOM focus is an Element\n // (meaning that the selection ends before the element)\n // unhang the range to avoid mistakenly including the void\n\n if (Range.isExpanded(range) && Range.isForward(range) && isDOMElement(focusNode) && Editor.void(editor, {\n at: range.focus,\n mode: 'highest'\n })) {\n range = Editor.unhangRange(editor, range, {\n voids: true\n });\n }\n\n return range;\n },\n\n hasRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n return Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path);\n }\n\n};\n\nfunction gatherMutationData(editor, mutations) {\n var addedNodes = [];\n var removedNodes = [];\n var insertedText = [];\n var characterDataMutations = [];\n mutations.forEach(mutation => {\n switch (mutation.type) {\n case 'childList':\n {\n if (mutation.addedNodes.length) {\n mutation.addedNodes.forEach(addedNode => {\n addedNodes.push(addedNode);\n });\n }\n\n mutation.removedNodes.forEach(removedNode => {\n removedNodes.push(removedNode);\n });\n break;\n }\n\n case 'characterData':\n {\n characterDataMutations.push(mutation); // Changes to text nodes should consider the parent element\n\n var {\n parentNode\n } = mutation.target;\n\n if (!parentNode) {\n return;\n }\n\n var textInsertion = getTextInsertion(editor, parentNode);\n\n if (!textInsertion) {\n return;\n } // If we've already detected a diff at that path, we can return early\n\n\n if (insertedText.some(_ref => {\n var {\n path\n } = _ref;\n return Path.equals(path, textInsertion.path);\n })) {\n return;\n } // Add the text diff to the array of detected text insertions that need to be reconciled\n\n\n insertedText.push(textInsertion);\n }\n }\n });\n return {\n addedNodes,\n removedNodes,\n insertedText,\n characterDataMutations\n };\n}\n/**\r\n * In general, when a line break occurs, there will be more `addedNodes` than `removedNodes`.\r\n *\r\n * This isn't always the case however. In some cases, there will be more `removedNodes` than\r\n * `addedNodes`.\r\n *\r\n * To account for these edge cases, the most reliable strategy to detect line break mutations\r\n * is to check whether a new block was inserted of the same type as the current block.\r\n */\n\nvar isLineBreak = (editor, _ref2) => {\n var {\n addedNodes\n } = _ref2;\n var {\n selection\n } = editor;\n var parentNode = selection ? Node.parent(editor, selection.anchor.path) : null;\n var parentDOMNode = parentNode ? ReactEditor.toDOMNode(editor, parentNode) : null;\n\n if (!parentDOMNode) {\n return false;\n }\n\n return addedNodes.some(addedNode => addedNode instanceof HTMLElement && addedNode.tagName === (parentDOMNode === null || parentDOMNode === void 0 ? void 0 : parentDOMNode.tagName));\n};\n/**\r\n * So long as we check for line break mutations before deletion mutations,\r\n * we can safely assume that a set of mutations was a deletion if there are\r\n * removed nodes.\r\n */\n\nvar isDeletion = (_, _ref3) => {\n var {\n removedNodes\n } = _ref3;\n return removedNodes.length > 0;\n};\n/**\r\n * If the selection was expanded and there are removed nodes,\r\n * the contents of the selection need to be replaced with the diff\r\n */\n\nvar isReplaceExpandedSelection = (_ref4, _ref5) => {\n var {\n selection\n } = _ref4;\n var {\n removedNodes\n } = _ref5;\n return selection ? Range.isExpanded(selection) && removedNodes.length > 0 : false;\n};\n/**\r\n * Plain text insertion\r\n */\n\nvar isTextInsertion = (_, _ref6) => {\n var {\n insertedText\n } = _ref6;\n return insertedText.length > 0;\n};\n/**\r\n * Edge case. Detect mutations that remove leaf nodes and also update character data\r\n */\n\nvar isRemoveLeafNodes = (_, _ref7) => {\n var {\n addedNodes,\n characterDataMutations,\n removedNodes\n } = _ref7;\n return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;\n};\n\n/**\r\n * Based loosely on:\r\n *\r\n * https://github.com/facebook/draft-js/blob/master/src/component/handlers/composition/DOMObserver.js\r\n * https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\r\n *\r\n * The input manager attempts to map observed mutations on the document to a\r\n * set of operations in order to reconcile Slate's internal value with the DOM.\r\n *\r\n * Mutations are processed synchronously as they come in. Only mutations that occur\r\n * during a user input loop are processed, as other mutations can occur within the\r\n * document that were not initiated by user input.\r\n *\r\n * The mutation reconciliation process attempts to match mutations to the following\r\n * patterns:\r\n *\r\n * - Text updates\r\n * - Deletions\r\n * - Line breaks\r\n *\r\n * @param editor\r\n * @param restoreDOM\r\n */\n\n\nclass AndroidInputManager {\n constructor(editor, restoreDOM) {\n this.editor = editor;\n this.restoreDOM = restoreDOM;\n /**\r\n * Handle MutationObserver flush\r\n *\r\n * @param mutations\r\n */\n\n this.flush = mutations => {\n\n try {\n this.reconcileMutations(mutations);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err); // Failed to reconcile mutations, restore DOM to its previous state\n\n this.restoreDOM();\n }\n };\n /**\r\n * Reconcile a batch of mutations\r\n *\r\n * @param mutations\r\n */\n\n\n this.reconcileMutations = mutations => {\n var mutationData = gatherMutationData(this.editor, mutations);\n var {\n insertedText,\n removedNodes\n } = mutationData;\n\n if (isReplaceExpandedSelection(this.editor, mutationData)) {\n var text = combineInsertedText(insertedText);\n this.replaceExpandedSelection(text);\n } else if (isLineBreak(this.editor, mutationData)) {\n this.insertBreak();\n } else if (isRemoveLeafNodes(this.editor, mutationData)) {\n this.removeLeafNodes(removedNodes);\n } else if (isDeletion(this.editor, mutationData)) {\n this.deleteBackward();\n } else if (isTextInsertion(this.editor, mutationData)) {\n this.insertText(insertedText);\n }\n };\n /**\r\n * Apply text diff\r\n */\n\n\n this.insertText = insertedText => {\n var {\n selection\n } = this.editor; // If it is in composing or after `onCompositionend`, set `EDITOR_ON_COMPOSITION_TEXT` and return.\n // Text will be inserted on compositionend event.\n\n if (IS_COMPOSING.get(this.editor) || IS_ON_COMPOSITION_END.get(this.editor)) {\n EDITOR_ON_COMPOSITION_TEXT.set(this.editor, insertedText);\n IS_ON_COMPOSITION_END.set(this.editor, false);\n return;\n } // Insert the batched text diffs\n\n\n insertedText.forEach(insertion => {\n var text = insertion.text.insertText;\n var at = normalizeTextInsertionRange(this.editor, selection, insertion);\n Transforms.setSelection(this.editor, at);\n Editor.insertText(this.editor, text);\n });\n };\n /**\r\n * Handle line breaks\r\n */\n\n\n this.insertBreak = () => {\n var {\n selection\n } = this.editor;\n Editor.insertBreak(this.editor);\n this.restoreDOM();\n\n if (selection) {\n // Compat: Move selection to the newly inserted block if it has not moved\n setTimeout(() => {\n if (this.editor.selection && Range.equals(selection, this.editor.selection)) {\n Transforms.move(this.editor);\n }\n }, 100);\n }\n };\n /**\r\n * Handle expanded selection being deleted or replaced by text\r\n */\n\n\n this.replaceExpandedSelection = text => {\n\n Editor.deleteFragment(this.editor);\n\n if (text.length) {\n // Selection was replaced by text, insert the entire text diff\n Editor.insertText(this.editor, text);\n }\n\n this.restoreDOM();\n };\n /**\r\n * Handle `backspace` that merges blocks\r\n */\n\n\n this.deleteBackward = () => {\n Editor.deleteBackward(this.editor);\n ReactEditor.focus(this.editor);\n this.restoreDOM();\n };\n /**\r\n * Handle mutations that remove specific leaves\r\n */\n\n\n this.removeLeafNodes = nodes => {\n for (var node of nodes) {\n var slateNode = ReactEditor.toSlateNode(this.editor, node);\n\n if (slateNode) {\n var path = ReactEditor.findPath(this.editor, slateNode);\n Transforms.delete(this.editor, {\n at: path\n });\n this.restoreDOM();\n }\n }\n };\n\n this.editor = editor;\n this.restoreDOM = restoreDOM;\n }\n\n}\n\nfunction useMutationObserver(node, callback, options) {\n var [mutationObserver] = useState(() => new MutationObserver(callback));\n useIsomorphicLayoutEffect(() => {\n // Disconnect mutation observer during render phase\n mutationObserver.disconnect();\n });\n useEffect(() => {\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined');\n } // Attach mutation observer after render phase has finished\n\n\n mutationObserver.observe(node.current, options); // Clean up after effect\n\n return mutationObserver.disconnect.bind(mutationObserver);\n });\n}\n\nvar MUTATION_OBSERVER_CONFIG$1 = {\n childList: true,\n characterData: true,\n subtree: true\n};\n\nfunction findClosestKnowSlateNode(domNode) {\n var _domEl;\n\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n\n var slateNode = domEl && ELEMENT_TO_NODE.get(domEl);\n\n if (slateNode) {\n return slateNode;\n } // Unknown dom element with a slate-slate-node attribute => the IME\n // most likely duplicated the node so we have to restore the parent\n\n\n return (_domEl = domEl) !== null && _domEl !== void 0 && _domEl.parentElement ? findClosestKnowSlateNode(domEl.parentElement) : null;\n}\n\nfunction useRestoreDom(node, receivedUserInput) {\n var editor = useSlateStatic();\n var mutatedNodes = useRef(new Set());\n var handleDOMMutation = useCallback(mutations => {\n if (!receivedUserInput.current) {\n return;\n }\n\n mutations.forEach(_ref => {\n var {\n target\n } = _ref;\n var slateNode = findClosestKnowSlateNode(target);\n\n if (!slateNode) {\n return;\n }\n\n return mutatedNodes.current.add(slateNode);\n });\n }, []);\n useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG$1); // Clear mutated nodes on every render\n\n mutatedNodes.current.clear();\n var restore = useCallback(() => {\n var mutated = Array.from(mutatedNodes.current.values()); // Filter out child nodes of nodes that will be restored anyway\n\n var nodesToRestore = mutated.filter(n => !mutated.some(m => Path.isParent(ReactEditor.findPath(editor, m), ReactEditor.findPath(editor, n))));\n nodesToRestore.forEach(n => {\n var _NODE_TO_RESTORE_DOM$;\n\n (_NODE_TO_RESTORE_DOM$ = NODE_TO_RESTORE_DOM.get(n)) === null || _NODE_TO_RESTORE_DOM$ === void 0 ? void 0 : _NODE_TO_RESTORE_DOM$();\n });\n mutatedNodes.current.clear();\n }, []);\n return restore;\n}\n\nfunction useTrackUserInput() {\n var editor = useSlateStatic();\n var receivedUserInput = useRef(false);\n var animationFrameRef = useRef(null);\n var onUserInput = useCallback(() => {\n if (receivedUserInput.current === false) {\n var window = ReactEditor.getWindow(editor);\n receivedUserInput.current = true;\n\n if (animationFrameRef.current) {\n window.cancelAnimationFrame(animationFrameRef.current);\n }\n\n animationFrameRef.current = window.requestAnimationFrame(() => {\n receivedUserInput.current = false;\n animationFrameRef.current = null;\n });\n }\n }, []);\n useEffect(() => {\n // Reset user input tracking on every render\n if (receivedUserInput.current) {\n receivedUserInput.current = false;\n }\n });\n return {\n receivedUserInput,\n onUserInput\n };\n}\n\nvar MUTATION_OBSERVER_CONFIG = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true\n};\nfunction useAndroidInputManager(node) {\n var editor = useSlateStatic();\n var {\n receivedUserInput,\n onUserInput\n } = useTrackUserInput();\n var restoreDom = useRestoreDom(node, receivedUserInput);\n var inputManager = useMemo(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);\n var timeoutId = useRef(null);\n var isReconciling = useRef(false);\n var flush = useCallback(mutations => {\n if (!receivedUserInput.current) {\n return;\n }\n\n isReconciling.current = true;\n inputManager.flush(mutations);\n\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n }\n\n timeoutId.current = setTimeout(() => {\n isReconciling.current = false;\n timeoutId.current = null;\n }, 250);\n }, []);\n useMutationObserver(node, flush, MUTATION_OBSERVER_CONFIG);\n return {\n isReconciling,\n onUserInput\n };\n}\n\nvar _excluded$1 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"style\", \"as\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * Editable.\r\n */\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\n\nvar RESOLVE_DELAY = 20;\nvar AndroidEditable = props => {\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = props => /*#__PURE__*/React.createElement(DefaultPlaceholder, Object.assign({}, props)),\n style = {},\n as: Component = 'div'\n } = props,\n attributes = _objectWithoutProperties(props, _excluded$1);\n\n var editor = useSlate(); // Rerender editor when composition status changed\n\n var [isComposing, setIsComposing] = useState(false);\n var ref = useRef(null);\n var inputManager = useAndroidInputManager(ref); // Update internal state on each render.\n\n IS_READ_ONLY.set(editor, readOnly); // Keep track of some state for the event handler logic.\n\n var state = useMemo(() => ({\n isComposing: false,\n isUpdatingSelection: false,\n latestElement: null\n }), []);\n var contentKey = useContentKey(editor); // Whenever the editor updates...\n\n useIsomorphicLayoutEffect(() => {\n // Update element-related weak maps with the DOM element ref.\n var window;\n\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n\n try {\n // Make sure the DOM selection state is in sync.\n var {\n selection\n } = editor;\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root.getSelection();\n\n if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n return;\n }\n\n var hasDomSelection = domSelection.type !== 'None'; // If the DOM selection is properly unset, we're done.\n\n if (!selection && !hasDomSelection) {\n return;\n } // verify that the dom selection is in the editor\n\n\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n\n if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n hasDomSelectionInEditor = true;\n } // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n\n\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n suppressThrow: true\n });\n\n if (slateRange && Range.equals(slateRange, selection)) {\n return;\n }\n } // when <Editable/> is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n\n\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n return;\n } // Otherwise the DOM selection is out of sync, so update it.\n\n\n var el = ReactEditor.toDOMNode(editor, editor);\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n\n if (newDomRange) {\n if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n\n var leafEl = newDomRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = newDomRange.getBoundingClientRect.bind(newDomRange);\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed',\n boundary: el\n }); // @ts-ignore\n\n delete leafEl.getBoundingClientRect;\n } else {\n domSelection.removeAllRanges();\n }\n\n setTimeout(() => {\n state.isUpdatingSelection = false;\n });\n } catch (_unused) {\n // Failed to update selection, likely due to reconciliation error\n state.isUpdatingSelection = false;\n }\n }); // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]); // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n\n var onDOMSelectionChange = useCallback(throttle(() => {\n try {\n if (!state.isComposing && !state.isUpdatingSelection && !inputManager.isReconciling.current) {\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = root;\n var el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = root.getSelection();\n\n if (activeElement === el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n\n if (anchorNodeSelectable && focusNodeSelectable) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, range);\n } else {\n Transforms.deselect(editor);\n }\n }\n } catch (_unused2) {// Failed to update selection, likely due to reconciliation error\n }\n }, 100), [readOnly]);\n var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]); // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n\n var onDOMBeforeInput = useCallback(event => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush();\n inputManager.onUserInput();\n }\n }, [readOnly, propsOnDOMBeforeInput]); // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n\n useIsomorphicLayoutEffect(() => {\n var node = ref.current; // @ts-ignore The `beforeinput` event isn't recognized.\n\n node === null || node === void 0 ? void 0 : node.addEventListener('beforeinput', onDOMBeforeInput); // @ts-ignore The `beforeinput` event isn't recognized.\n\n return () => node === null || node === void 0 ? void 0 : node.removeEventListener('beforeinput', onDOMBeforeInput);\n }, [contentKey, propsOnDOMBeforeInput]); // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n // fire for any change to the selection inside the editor. (2019/11/04)\n // https://github.com/facebook/react/issues/5785\n\n useIsomorphicLayoutEffect(() => {\n var window = ReactEditor.getWindow(editor);\n window.document.addEventListener('selectionchange', scheduleOnDOMSelectionChange);\n return () => {\n window.document.removeEventListener('selectionchange', scheduleOnDOMSelectionChange);\n };\n }, [scheduleOnDOMSelectionChange]);\n var decorations = decorate([editor, []]);\n\n if (placeholder && editor.children.length === 1 && Array.from(Node.texts(editor)).length === 1 && Node.string(editor) === '' && !isComposing) {\n var start = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start,\n focus: start\n });\n }\n\n return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {\n value: decorate\n }, /*#__PURE__*/React.createElement(Component, Object.assign({\n key: contentKey,\n role: readOnly ? undefined : 'textbox'\n }, attributes, {\n spellCheck: attributes.spellCheck,\n autoCorrect: attributes.autoCorrect,\n autoCapitalize: attributes.autoCapitalize,\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n contentEditable: readOnly ? undefined : true,\n suppressContentEditableWarning: true,\n ref: ref,\n style: _objectSpread({\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, style),\n onCopy: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');\n }\n }, [attributes.onCopy]),\n onCut: useCallback(event => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');\n var {\n selection\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node.parent(editor, selection.anchor.path);\n\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, attributes.onCut]),\n onFocus: useCallback(event => {\n if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root.activeElement;\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, attributes.onFocus]),\n onBlur: useCallback(event => {\n if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n } // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n\n\n var root = ReactEditor.findDocumentOrShadowRoot(editor);\n\n if (state.latestElement === root.activeElement) {\n return;\n }\n\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor); // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an <input>\n // element inside a void node).\n\n if (relatedTarget === el) {\n return;\n } // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n\n\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute('data-slate-spacer')) {\n return;\n } // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n\n\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n\n if (Element$1.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n\n IS_FOCUSED.delete(editor);\n }, [readOnly, attributes.onBlur]),\n onClick: useCallback(event => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node); // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n\n if (Editor.hasPath(editor, path)) {\n var lookupNode = Node.get(editor, path);\n\n if (lookupNode === node) {\n var _start = Editor.start(editor, path);\n\n var end = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end\n });\n\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var range = Editor.range(editor, _start);\n Transforms.select(editor, range);\n }\n }\n }\n }\n }, [readOnly, attributes.onClick]),\n onCompositionEnd: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n scheduleOnDOMSelectionChange.flush();\n setTimeout(() => {\n state.isComposing && setIsComposing(false);\n state.isComposing = false;\n IS_COMPOSING.set(editor, false);\n IS_ON_COMPOSITION_END.set(editor, true);\n var insertedText = EDITOR_ON_COMPOSITION_TEXT.get(editor) || []; // `insertedText` is set in `MutationObserver` constructor.\n // If open phone keyboard association function, `CompositionEvent` will be triggered.\n\n if (!insertedText.length) {\n return;\n }\n\n EDITOR_ON_COMPOSITION_TEXT.set(editor, []);\n var {\n selection\n } = editor;\n insertedText.forEach(insertion => {\n var text = insertion.text.insertText;\n var at = normalizeTextInsertionRange(editor, selection, insertion);\n Transforms.setSelection(editor, at);\n Editor.insertText(editor, text);\n });\n }, RESOLVE_DELAY);\n }\n }, [attributes.onCompositionEnd]),\n onCompositionUpdate: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n IS_COMPOSING.set(editor, true);\n }\n }, [attributes.onCompositionUpdate]),\n onCompositionStart: useCallback(event => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n IS_COMPOSING.set(editor, true);\n }\n }, [attributes.onCompositionStart]),\n onPaste: useCallback(event => {\n // this will make application/x-slate-fragment exist when onPaste attributes is passed\n event.clipboardData = getClipboardData(event.clipboardData); // This unfortunately needs to be handled with paste events instead.\n\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste) && !readOnly) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }, [readOnly, attributes.onPaste])\n }), useChildren({\n decorations,\n node: editor,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: editor.selection\n }))));\n};\n\n/**\r\n * A React context for sharing the `focused` state of the editor.\r\n */\n\nvar FocusedContext = /*#__PURE__*/createContext(false);\n/**\r\n * Get the current `focused` state of the editor.\r\n */\n\nvar useFocused = () => {\n return useContext(FocusedContext);\n};\n\nfunction isError(error) {\n return error instanceof Error;\n}\n/**\r\n * A React context for sharing the editor selector context in a way to control rerenders\r\n */\n\n\nvar SlateSelectorContext = /*#__PURE__*/createContext({});\n\nvar refEquality = (a, b) => a === b;\n/**\r\n * use redux style selectors to prevent rerendering on every keystroke.\r\n * Bear in mind rerendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\r\n *\r\n * Example:\r\n * ```\r\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection));\r\n * ```\r\n */\n\n\nfunction useSlateSelector(selector) {\n var equalityFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : refEquality;\n var [, forceRender] = useReducer(s => s + 1, 0);\n var context = useContext(SlateSelectorContext);\n\n if (!context) {\n throw new Error(\"The `useSlateSelector` hook must be used inside the <Slate> component's context.\");\n }\n\n var {\n getSlate,\n addEventListener\n } = context;\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef(() => null);\n var latestSelectedState = useRef(null);\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(getSlate());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current && isError(err)) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\".concat(latestSubscriptionCallbackError.current.stack, \"\\n\\n\");\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(() => {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(getSlate());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n var unsubscribe = addEventListener(checkForUpdates);\n checkForUpdates();\n return () => unsubscribe();\n }, // don't rerender on equalityFn change since we want to be able to define it inline\n [addEventListener, getSlate]);\n return selectedState;\n}\n/**\r\n * Create selector context with editor updating on every editor change\r\n */\n\nfunction getSelectorContext(editor) {\n var eventListeners = useRef([]).current;\n var slateRef = useRef({\n editor\n }).current;\n var onChange = useCallback(editor => {\n slateRef.editor = editor;\n eventListeners.forEach(listener => listener(editor));\n }, []);\n var selectorContext = useMemo(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: callback => {\n eventListeners.push(callback);\n return () => {\n eventListeners.splice(eventListeners.indexOf(callback), 1);\n };\n }\n };\n }, [eventListeners, slateRef]);\n return {\n selectorContext,\n onChange\n };\n}\n\nvar _excluded = [\"editor\", \"children\", \"onChange\", \"value\"];\n/**\r\n * A wrapper around the provider to handle `onChange` events, because the editor\r\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\r\n */\n\nvar Slate = props => {\n var {\n editor,\n children,\n onChange,\n value\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n\n var unmountRef = useRef(false);\n var [context, setContext] = React.useState(() => {\n if (!Node.isNodeList(value)) {\n throw new Error(\"[Slate] value is invalid! Expected a list of elements\" + \"but got: \".concat(JSON.stringify(value)));\n }\n\n if (!Editor.isEditor(editor)) {\n throw new Error(\"[Slate] editor is invalid! you passed:\" + \"\".concat(JSON.stringify(editor)));\n }\n\n editor.children = value;\n Object.assign(editor, rest);\n return [editor];\n });\n var {\n selectorContext,\n onChange: handleSelectorChange\n } = getSelectorContext(editor);\n var onContextChange = useCallback(() => {\n onChange(editor.children);\n setContext([editor]);\n handleSelectorChange(editor);\n }, [onChange]);\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\n useEffect(() => {\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {});\n unmountRef.current = true;\n };\n }, []);\n var [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));\n useEffect(() => {\n setIsFocused(ReactEditor.isFocused(editor));\n });\n useIsomorphicLayoutEffect(() => {\n var fn = () => setIsFocused(ReactEditor.isFocused(editor));\n\n document.addEventListener('focus', fn, true);\n return () => document.removeEventListener('focus', fn, true);\n }, []);\n useIsomorphicLayoutEffect(() => {\n var fn = () => setIsFocused(ReactEditor.isFocused(editor));\n\n document.addEventListener('blur', fn, true);\n return () => {\n document.removeEventListener('focus', fn, true);\n document.removeEventListener('blur', fn, true);\n };\n }, []);\n return /*#__PURE__*/React.createElement(SlateSelectorContext.Provider, {\n value: selectorContext\n }, /*#__PURE__*/React.createElement(SlateContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(EditorContext.Provider, {\n value: editor\n }, /*#__PURE__*/React.createElement(FocusedContext.Provider, {\n value: isFocused\n }, children))));\n};\n\n/**\r\n * Get the current editor object from the React context.\r\n * @deprecated Use useSlateStatic instead.\r\n */\n\nvar useEditor = () => {\n var editor = useContext(EditorContext);\n\n if (!editor) {\n throw new Error(\"The `useEditor` hook must be used inside the <Slate> component's context.\");\n }\n\n return editor;\n};\n\n/**\r\n * Utilities for single-line deletion\r\n */\n\nvar doRectsIntersect = (rect, compareRect) => {\n var middle = (compareRect.top + compareRect.bottom) / 2;\n return rect.top <= middle && rect.bottom >= middle;\n};\n\nvar areRangesSameLine = (editor, range1, range2) => {\n var rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect();\n var rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect();\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1);\n};\n/**\r\n * A helper utility that returns the end portion of a `Range`\r\n * which is located on a single line.\r\n *\r\n * @param {Editor} editor The editor object to compare against\r\n * @param {Range} parentRange The parent range to compare against\r\n * @returns {Range} A valid portion of the parentRange which is one a single line\r\n */\n\n\nvar findCurrentLineRange = (editor, parentRange) => {\n var parentRangeBoundary = Editor.range(editor, Range.end(parentRange));\n var positions = Array.from(Editor.positions(editor, {\n at: parentRange\n }));\n var left = 0;\n var right = positions.length;\n var middle = Math.floor(right / 2);\n\n if (areRangesSameLine(editor, Editor.range(editor, positions[left]), parentRangeBoundary)) {\n return Editor.range(editor, positions[left], parentRangeBoundary);\n }\n\n if (positions.length < 2) {\n return Editor.range(editor, positions[positions.length - 1], parentRangeBoundary);\n }\n\n while (middle !== positions.length && middle !== left) {\n if (areRangesSameLine(editor, Editor.range(editor, positions[middle]), parentRangeBoundary)) {\n right = middle;\n } else {\n left = middle;\n }\n\n middle = Math.floor((left + right) / 2);\n }\n\n return Editor.range(editor, positions[right], parentRangeBoundary);\n};\n\n/**\r\n * `withReact` adds React and DOM specific behaviors to the editor.\r\n *\r\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\r\n * this plugin.\r\n *\r\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\r\n */\n\nvar withReact = editor => {\n var e = editor;\n var {\n apply,\n onChange,\n deleteBackward\n } = e; // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n // avoid collisions between editors in the DOM that share the same value.\n\n EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap());\n\n e.deleteBackward = unit => {\n if (unit !== 'line') {\n return deleteBackward(unit);\n }\n\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n var parentBlockEntry = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: editor.selection\n });\n\n if (parentBlockEntry) {\n var [, parentBlockPath] = parentBlockEntry;\n var parentElementRange = Editor.range(editor, parentBlockPath, editor.selection.anchor);\n var currentLineRange = findCurrentLineRange(e, parentElementRange);\n\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(editor, {\n at: currentLineRange\n });\n }\n }\n }\n };\n\n e.apply = op => {\n var matches = [];\n\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n for (var [node, path] of Editor.levels(e, {\n at: op.path\n })) {\n var key = ReactEditor.findKey(e, node);\n matches.push([path, key]);\n }\n\n break;\n }\n\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n {\n for (var [_node, _path] of Editor.levels(e, {\n at: Path.parent(op.path)\n })) {\n var _key = ReactEditor.findKey(e, _node);\n\n matches.push([_path, _key]);\n }\n\n break;\n }\n\n case 'move_node':\n {\n for (var [_node2, _path2] of Editor.levels(e, {\n at: Path.common(Path.parent(op.path), Path.parent(op.newPath))\n })) {\n var _key2 = ReactEditor.findKey(e, _node2);\n\n matches.push([_path2, _key2]);\n }\n\n break;\n }\n }\n\n apply(op);\n\n for (var [_path3, _key3] of matches) {\n var [_node3] = Editor.node(e, _path3);\n NODE_TO_KEY.set(_node3, _key3);\n }\n };\n\n e.setFragmentData = data => {\n var {\n selection\n } = e;\n\n if (!selection) {\n return;\n }\n\n var [start, end] = Range.edges(selection);\n var startVoid = Editor.void(e, {\n at: start.path\n });\n var endVoid = Editor.void(e, {\n at: end.path\n });\n\n if (Range.isCollapsed(selection) && !startVoid) {\n return;\n } // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n\n\n var domRange = ReactEditor.toDOMRange(e, selection);\n var contents = domRange.cloneContents();\n var attach = contents.childNodes[0]; // Make sure attach is non-empty, since empty nodes will not get copied.\n\n contents.childNodes.forEach(node => {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node;\n }\n }); // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n\n if (endVoid) {\n var [voidNode] = endVoid;\n var r = domRange.cloneRange();\n var domNode = ReactEditor.toDOMNode(e, voidNode);\n r.setEndAfter(domNode);\n contents = r.cloneContents();\n } // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n\n\n if (startVoid) {\n attach = contents.querySelector('[data-slate-spacer]');\n } // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n\n\n Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(zw => {\n var isNewline = zw.getAttribute('data-slate-zero-width') === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n }); // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n\n if (isDOMText(attach)) {\n var span = attach.ownerDocument.createElement('span'); // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n\n span.style.whiteSpace = 'pre';\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n\n var fragment = e.getFragment();\n var string = JSON.stringify(fragment);\n var encoded = window.btoa(encodeURIComponent(string));\n attach.setAttribute('data-slate-fragment', encoded);\n data.setData('application/x-slate-fragment', encoded); // Add the content to a <div> so that we can get its inner HTML.\n\n var div = contents.ownerDocument.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n contents.ownerDocument.body.appendChild(div);\n data.setData('text/html', div.innerHTML);\n data.setData('text/plain', getPlainText(div));\n contents.ownerDocument.body.removeChild(div);\n return data;\n };\n\n e.insertData = data => {\n if (!e.insertFragmentData(data)) {\n e.insertTextData(data);\n }\n };\n\n e.insertFragmentData = data => {\n /**\r\n * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\r\n */\n var fragment = data.getData('application/x-slate-fragment') || getSlateFragmentAttribute(data);\n\n if (fragment) {\n var decoded = decodeURIComponent(window.atob(fragment));\n var parsed = JSON.parse(decoded);\n e.insertFragment(parsed);\n return true;\n }\n\n return false;\n };\n\n e.insertTextData = data => {\n var text = data.getData('text/plain');\n\n if (text) {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var split = false;\n\n for (var line of lines) {\n if (split) {\n Transforms.splitNodes(e, {\n always: true\n });\n }\n\n e.insertText(line);\n split = true;\n }\n\n return true;\n }\n\n return false;\n };\n\n e.onChange = () => {\n // COMPAT: React doesn't batch `setState` hook calls, which means that the\n // children and selection can get out of sync for one render pass. So we\n // have to use this unstable API to ensure it batches them. (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n ReactDOM.unstable_batchedUpdates(() => {\n var onContextChange = EDITOR_TO_ON_CHANGE.get(e);\n\n if (onContextChange) {\n onContextChange();\n }\n\n onChange();\n });\n };\n\n return e;\n};\n\n// Components\nvar Editable = IS_ANDROID ? AndroidEditable : Editable$1;\n\nexport { AndroidEditable, Editable$1 as DefaultEditable, DefaultElement, DefaultLeaf, DefaultPlaceholder, Editable, ReactEditor, Slate, useEditor, useFocused, useReadOnly, useSelected, useSlate, useSlateSelector, useSlateStatic, withReact };\n//# sourceMappingURL=index.es.js.map\n","import { isPlainObject } from 'is-plain-object';\nimport { Operation, Editor, Transforms, Path } from 'slate';\n\n// eslint-disable-next-line no-redeclare\nvar History = {\n /**\n * Check if a value is a `History` object.\n */\n isHistory(value) {\n return isPlainObject(value) && Array.isArray(value.redos) && Array.isArray(value.undos) && (value.redos.length === 0 || Operation.isOperationList(value.redos[0].operations)) && (value.undos.length === 0 || Operation.isOperationList(value.undos[0].operations));\n }\n};\n\n/**\n * Weakmaps for attaching state to the editor.\n */\nvar HISTORY = new WeakMap();\nvar SAVING = new WeakMap();\nvar MERGING = new WeakMap();\nvar SPLITTING_ONCE = new WeakMap();\n// eslint-disable-next-line no-redeclare\nvar HistoryEditor = {\n /**\n * Check if a value is a `HistoryEditor` object.\n */\n isHistoryEditor(value) {\n return History.isHistory(value.history) && Editor.isEditor(value);\n },\n /**\n * Get the merge flag's current value.\n */\n isMerging(editor) {\n return MERGING.get(editor);\n },\n /**\n * Get the splitting once flag's current value.\n */\n isSplittingOnce(editor) {\n return SPLITTING_ONCE.get(editor);\n },\n setSplittingOnce(editor, value) {\n SPLITTING_ONCE.set(editor, value);\n },\n /**\n * Get the saving flag's current value.\n */\n isSaving(editor) {\n return SAVING.get(editor);\n },\n /**\n * Redo to the previous saved state.\n */\n redo(editor) {\n editor.redo();\n },\n /**\n * Undo to the previous saved state.\n */\n undo(editor) {\n editor.undo();\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, These operations will\n * be merged into the previous history.\n */\n withMerging(editor, fn) {\n var prev = HistoryEditor.isMerging(editor);\n MERGING.set(editor, true);\n fn();\n MERGING.set(editor, prev);\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, ensuring that the first\n * operation starts a new batch in the history. Subsequent operations will be\n * merged as usual.\n */\n withNewBatch(editor, fn) {\n var prev = HistoryEditor.isMerging(editor);\n MERGING.set(editor, true);\n SPLITTING_ONCE.set(editor, true);\n fn();\n MERGING.set(editor, prev);\n SPLITTING_ONCE.delete(editor);\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n */\n withoutMerging(editor, fn) {\n var prev = HistoryEditor.isMerging(editor);\n MERGING.set(editor, false);\n fn();\n MERGING.set(editor, prev);\n },\n /**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n */\n withoutSaving(editor, fn) {\n var prev = HistoryEditor.isSaving(editor);\n SAVING.set(editor, false);\n try {\n fn();\n } finally {\n SAVING.set(editor, prev);\n }\n }\n};\n\n/**\n * The `withHistory` plugin keeps track of the operation history of a Slate\n * editor as operations are applied to it, using undo and redo stacks.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\nvar withHistory = editor => {\n var e = editor;\n var {\n apply\n } = e;\n e.history = {\n undos: [],\n redos: []\n };\n e.redo = () => {\n var {\n history\n } = e;\n var {\n redos\n } = history;\n if (redos.length > 0) {\n var batch = redos[redos.length - 1];\n if (batch.selectionBefore) {\n Transforms.setSelection(e, batch.selectionBefore);\n }\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n for (var op of batch.operations) {\n e.apply(op);\n }\n });\n });\n history.redos.pop();\n e.writeHistory('undos', batch);\n }\n };\n e.undo = () => {\n var {\n history\n } = e;\n var {\n undos\n } = history;\n if (undos.length > 0) {\n var batch = undos[undos.length - 1];\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n var inverseOps = batch.operations.map(Operation.inverse).reverse();\n for (var op of inverseOps) {\n e.apply(op);\n }\n if (batch.selectionBefore) {\n Transforms.setSelection(e, batch.selectionBefore);\n }\n });\n });\n e.writeHistory('redos', batch);\n history.undos.pop();\n }\n };\n e.apply = op => {\n var {\n operations,\n history\n } = e;\n var {\n undos\n } = history;\n var lastBatch = undos[undos.length - 1];\n var lastOp = lastBatch && lastBatch.operations[lastBatch.operations.length - 1];\n var save = HistoryEditor.isSaving(e);\n var merge = HistoryEditor.isMerging(e);\n if (save == null) {\n save = shouldSave(op);\n }\n if (save) {\n if (merge == null) {\n if (lastBatch == null) {\n merge = false;\n } else if (operations.length !== 0) {\n merge = true;\n } else {\n merge = shouldMerge(op, lastOp);\n }\n }\n if (HistoryEditor.isSplittingOnce(e)) {\n merge = false;\n HistoryEditor.setSplittingOnce(e, undefined);\n }\n if (lastBatch && merge) {\n lastBatch.operations.push(op);\n } else {\n var batch = {\n operations: [op],\n selectionBefore: e.selection\n };\n e.writeHistory('undos', batch);\n }\n while (undos.length > 100) {\n undos.shift();\n }\n history.redos = [];\n }\n apply(op);\n };\n e.writeHistory = (stack, batch) => {\n e.history[stack].push(batch);\n };\n return e;\n};\n/**\n * Check whether to merge an operation into the previous operation.\n */\nvar shouldMerge = (op, prev) => {\n if (prev && op.type === 'insert_text' && prev.type === 'insert_text' && op.offset === prev.offset + prev.text.length && Path.equals(op.path, prev.path)) {\n return true;\n }\n if (prev && op.type === 'remove_text' && prev.type === 'remove_text' && op.offset + op.text.length === prev.offset && Path.equals(op.path, prev.path)) {\n return true;\n }\n return false;\n};\n/**\n * Check whether an operation needs to be saved to the history.\n */\nvar shouldSave = (op, prev) => {\n if (op.type === 'set_selection') {\n return false;\n }\n return true;\n};\n\nexport { HISTORY, History, HistoryEditor, MERGING, SAVING, SPLITTING_ONCE, withHistory };\n//# sourceMappingURL=index.es.js.map\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/**\n * Constants for the rich text editor component\n *\n * This file consolidates all the configuration constants used by the rich text editor.\n * Previously split across multiple files, now consolidated for better maintainability.\n */\n\n// Keyboard shortcuts for formatting\nexport const HOTKEYS = {\n \"mod+b\": \"bold\",\n \"mod+i\": \"italic\",\n \"mod+u\": \"underline\",\n \"mod+`\": \"code\",\n} as const;\n\n// Default configuration values\nexport const EDITOR_DEFAULTS = {\n placeholder: \"Start typing...\",\n isDisabled: false,\n isReadOnly: false,\n autoFocus: false,\n} as const;\n\n// HTML to Slate element mapping for serialization\nexport const BLOCK_TAGS = {\n blockquote: \"block-quote\",\n p: \"paragraph\",\n pre: \"code\",\n h1: \"heading-one\",\n h2: \"heading-two\",\n h3: \"heading-three\",\n h4: \"heading-four\",\n h5: \"heading-five\",\n ul: \"bulleted-list\",\n ol: \"numbered-list\",\n li: \"list-item\",\n a: \"link\",\n} as const;\n\nexport const MARK_TAGS = {\n strong: \"bold\",\n b: \"bold\",\n em: \"italic\",\n i: \"italic\",\n u: \"underline\",\n code: \"code\",\n sup: \"superscript\",\n sub: \"subscript\",\n del: \"strikethrough\",\n s: \"strikethrough\",\n} as const;\n\n// Formatting options for the \"More Options\" menu\nexport const FORMATTING_OPTIONS = {\n STRIKETHROUGH: \"strikethrough\",\n CODE: \"code\",\n SUPERSCRIPT: \"superscript\",\n SUBSCRIPT: \"subscript\",\n} as const;\n\nexport const BASIC_FORMATTING = [\n FORMATTING_OPTIONS.STRIKETHROUGH,\n FORMATTING_OPTIONS.CODE,\n] as const;\n\nexport const SCRIPT_FORMATTING = [\n FORMATTING_OPTIONS.SUPERSCRIPT,\n FORMATTING_OPTIONS.SUBSCRIPT,\n] as const;\n\n// Mutual exclusion groups - superscript and subscript cannot both be active\nexport const MUTUALLY_EXCLUSIVE_GROUPS = {\n script: [FORMATTING_OPTIONS.SUPERSCRIPT, FORMATTING_OPTIONS.SUBSCRIPT],\n} as const;\n\n// Type definitions\nexport type HotkeyType = typeof HOTKEYS;\nexport type HotkeyKey = keyof HotkeyType;\nexport type HotkeyValue = HotkeyType[HotkeyKey];\nexport type BlockTagKey = keyof typeof BLOCK_TAGS;\nexport type MarkTagKey = keyof typeof MARK_TAGS;\nexport type BlockTagValue = (typeof BLOCK_TAGS)[BlockTagKey];\nexport type MarkTagValue = (typeof MARK_TAGS)[MarkTagKey];\nexport type FormattingType =\n (typeof FORMATTING_OPTIONS)[keyof typeof FORMATTING_OPTIONS];\nexport type BasicFormattingType = (typeof BASIC_FORMATTING)[number];\nexport type ScriptFormattingType = (typeof SCRIPT_FORMATTING)[number];\n","/**\n * Text style definitions for rich text editor block formatting\n *\n * Used by:\n * - components/rich-text-toolbar.tsx: Renders text style dropdown menu with these options\n * - hooks/useToolbarState.ts: Manages current text style state and selection logic\n * - utils/text-style-utils.ts: Helper functions for text style operations\n * - utils/validation-utils.ts: Validates if block types are supported\n *\n * Purpose:\n * - Centralizes all available text styles and their visual properties\n * - Maps block type IDs to user-friendly labels and Chakra UI styling props\n * - Ensures consistent styling across the editor and UI controls\n */\nexport type TextStyleDefinition = {\n id: string;\n label: string;\n props: {\n textStyle: string;\n fontWeight: string;\n };\n};\n\nexport const textStyles: TextStyleDefinition[] = [\n {\n id: \"paragraph\",\n label: \"Paragraph\",\n props: {\n textStyle: \"md\",\n fontWeight: \"500\",\n },\n },\n {\n id: \"heading-one\",\n label: \"Heading 1\",\n props: {\n textStyle: \"2xl\",\n fontWeight: \"500\",\n },\n },\n {\n id: \"heading-two\",\n label: \"Heading 2\",\n props: {\n textStyle: \"xl\",\n fontWeight: \"500\",\n },\n },\n {\n id: \"heading-three\",\n label: \"Heading 3\",\n props: {\n textStyle: \"lg\",\n fontWeight: \"500\",\n },\n },\n {\n id: \"heading-four\",\n label: \"Heading 4\",\n props: {\n textStyle: \"md\",\n fontWeight: \"500\",\n },\n },\n {\n id: \"heading-five\",\n label: \"Heading 5\",\n props: {\n textStyle: \"xs\",\n fontWeight: \"500\",\n },\n },\n {\n id: \"block-quote\",\n label: \"Quote\",\n props: {\n textStyle: \"md\",\n fontWeight: \"400\",\n },\n },\n];\n\n/**\n * Available block types for text style detection\n *\n * Used by:\n * - hooks/useToolbarState.ts: Detects currently active block type in editor\n * - Excludes \"paragraph\" as it's the default/fallback type\n */\nexport const blockTypes = [\n \"heading-one\",\n \"heading-two\",\n \"heading-three\",\n \"heading-four\",\n \"heading-five\",\n \"block-quote\",\n] as const;\n\nexport type BlockType = (typeof blockTypes)[number] | \"paragraph\";\n","import escapeHtml from \"escape-html\";\nimport {\n Text,\n Element as SlateElement,\n type Descendant,\n type Node as SlateNode,\n} from \"slate\";\nimport { BLOCK_TAGS, MARK_TAGS } from \"../constants\";\nimport type { CustomElement, CustomText } from \"./types\";\nimport { validSlateStateAdapter } from \"./slate-helpers\";\n\n// Soft line break placeholder character\nconst SOFT_BREAK_PLACEHOLDER = \"\\u200B\\n\";\n\n// Default empty state for the editor\nexport const createEmptyValue = (): Descendant[] => [\n {\n type: \"paragraph\",\n children: [{ text: \"\" }],\n } as CustomElement,\n];\n\n// Serialize Slate value to HTML\nexport const toHTML = (value: Descendant[]): string => {\n return value.map(serializeNode).join(\"\");\n};\n\nconst serializeNode = (node: SlateNode): string => {\n if (Text.isText(node)) {\n const textNode = node as CustomText;\n let string = escapeHtml(textNode.text);\n\n // Apply text formatting\n if (textNode.bold) {\n string = `<strong>${string}</strong>`;\n }\n if (textNode.code) {\n string = `<code>${string}</code>`;\n }\n if (textNode.italic) {\n string = `<em>${string}</em>`;\n }\n if (textNode.underline) {\n string = `<u>${string}</u>`;\n }\n if (textNode.superscript) {\n string = `<sup>${string}</sup>`;\n }\n if (textNode.subscript) {\n string = `<sub>${string}</sub>`;\n }\n if (textNode.strikethrough) {\n string = `<del>${string}</del>`;\n }\n\n // Replace soft line breaks with <br> tags\n string = string.replace(new RegExp(SOFT_BREAK_PLACEHOLDER, \"g\"), \"<br>\");\n\n return string;\n }\n\n const children = node.children.map(serializeNode).join(\"\");\n const element = node as CustomElement;\n\n switch (element.type) {\n case \"block-quote\":\n return `<blockquote>${children}</blockquote>`;\n case \"paragraph\":\n return `<p>${children}</p>`;\n case \"code\":\n return `<pre><code>${children}</code></pre>`;\n case \"bulleted-list\":\n return `<ul>${children}</ul>`;\n case \"numbered-list\":\n return `<ol>${children}</ol>`;\n case \"list-item\":\n return `<li>${children}</li>`;\n case \"heading-one\":\n return `<h1>${children}</h1>`;\n case \"heading-two\":\n return `<h2>${children}</h2>`;\n case \"heading-three\":\n return `<h3>${children}</h3>`;\n case \"heading-four\":\n return `<h4>${children}</h4>`;\n case \"heading-five\":\n return `<h5>${children}</h5>`;\n case \"link\": {\n let hrefAttr = \"\";\n if (element.url) {\n // Sanitize href to prevent XSS\n const sanitizedUrl = sanitizeUrl(element.url);\n hrefAttr = ` href=\"${escapeHtml(sanitizedUrl)}\"`;\n }\n\n let otherAttrsString = \"\";\n if (\n element.htmlAttributes &&\n typeof element.htmlAttributes === \"object\"\n ) {\n for (const [key, value] of Object.entries(element.htmlAttributes)) {\n // Filter out event handlers to prevent XSS\n if (!key.toLowerCase().startsWith(\"on\")) {\n otherAttrsString += ` ${escapeHtml(key)}=\"${escapeHtml(String(value))}\"`;\n }\n }\n }\n\n return `<a${hrefAttr}${otherAttrsString}>${children}</a>`;\n }\n default:\n return children;\n }\n};\n\n// Parse HTML string to Slate value\nexport const fromHTML = (html: string): Descendant[] => {\n if (!html || html.trim() === \"\") {\n return createEmptyValue();\n }\n\n try {\n // Simple HTML parsing - for now just handle basic cases\n if (\n html.includes(\"<p>\") ||\n html.includes(\"<h\") ||\n html.includes(\"<div>\") ||\n html.includes(\"<blockquote>\") ||\n html.includes(\"<ul>\") ||\n html.includes(\"<ol>\")\n ) {\n const document = new DOMParser().parseFromString(html, \"text/html\");\n const body = document.body;\n\n const nodes = Array.from(body.childNodes)\n .map(deserializeNode)\n .filter(Boolean) as Descendant[];\n\n // Use validSlateStateAdapter to ensure all nodes are valid Slate elements\n return validSlateStateAdapter(nodes);\n } else {\n // Simple text content\n return [\n {\n type: \"paragraph\",\n children: [{ text: html }],\n } as CustomElement,\n ];\n }\n } catch (error) {\n console.warn(\"Failed to parse HTML:\", error);\n return createEmptyValue();\n }\n};\n\nconst deserializeNode = (node: Node): Descendant | string | null => {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent || \"\";\n // Replace <br> tags with soft line breaks\n return text.replace(/<br\\s*\\/?>/gi, SOFT_BREAK_PLACEHOLDER);\n }\n\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n\n const element = node as Element;\n const tagName = element.tagName.toLowerCase();\n const children = Array.from(element.childNodes)\n .map(deserializeNode)\n .filter(Boolean);\n\n // Handle block elements\n if (tagName in BLOCK_TAGS) {\n const type = BLOCK_TAGS[tagName as keyof typeof BLOCK_TAGS];\n const slateElement: CustomElement = { type, children: [] };\n\n // Special handling for links\n if (type === \"link\") {\n const href = element.getAttribute(\"href\");\n if (href) {\n slateElement.url = href;\n }\n\n // Store other attributes\n const attrs: Record<string, string> = {};\n Array.from(element.attributes).forEach((attr) => {\n if (attr.name !== \"href\" && !attr.name.toLowerCase().startsWith(\"on\")) {\n attrs[attr.name] = attr.value;\n }\n });\n if (Object.keys(attrs).length > 0) {\n slateElement.htmlAttributes = attrs;\n }\n }\n\n // Process children\n slateElement.children = processChildren(children);\n return slateElement;\n }\n\n // Handle inline/mark elements - simplified without jsx\n if (tagName in MARK_TAGS) {\n const markType = MARK_TAGS[tagName as keyof typeof MARK_TAGS];\n const textContent = extractTextFromChildren(children);\n return { text: textContent, [markType]: true } as CustomText;\n }\n\n // Handle spans and other inline elements\n if (tagName === \"span\") {\n const textContent = extractTextFromChildren(children);\n return { text: textContent } as CustomText;\n }\n\n // For unknown elements, just return their text content\n const textContent = extractTextFromChildren(children);\n return { text: textContent } as CustomText;\n};\n\nconst processChildren = (\n children: (Descendant | string | null)[]\n): (CustomText | CustomElement)[] => {\n const processed: (CustomText | CustomElement)[] = [];\n\n for (const child of children) {\n if (typeof child === \"string\") {\n if (child.trim()) {\n processed.push({ text: child });\n }\n } else if (child && Text.isText(child)) {\n processed.push(child as CustomText);\n } else if (child && SlateElement.isElement(child)) {\n // Keep block elements (like li) as elements\n processed.push(child as CustomElement);\n }\n }\n\n // For list containers, ensure we have valid children\n // For other containers, ensure we always have at least one text node\n if (processed.length === 0) {\n processed.push({ text: \"\" });\n }\n\n return processed;\n};\n\nconst extractTextContent = (element: SlateElement): string => {\n return element.children\n .map((child) => {\n if (Text.isText(child)) {\n return child.text;\n } else if (SlateElement.isElement(child)) {\n return extractTextContent(child);\n }\n return \"\";\n })\n .join(\"\");\n};\n\nconst extractTextFromChildren = (\n children: (Descendant | string | null)[]\n): string => {\n return children\n .filter(Boolean)\n .map((child) => {\n if (typeof child === \"string\") {\n return child;\n } else if (child && typeof child === \"object\" && \"text\" in child) {\n return child.text;\n } else if (child && typeof child === \"object\" && \"children\" in child) {\n return extractTextContent(child as SlateElement);\n }\n return String(child || \"\");\n })\n .join(\"\");\n};\n\nconst sanitizeUrl = (url: string): string => {\n const trimmed = String(url).trim().toLowerCase();\n if (\n trimmed.startsWith(\"javascript:\") ||\n trimmed.startsWith(\"data:\") ||\n trimmed.startsWith(\"vbscript:\")\n ) {\n return \"#\";\n }\n return String(url);\n};\n","import { type ReactElement } from \"react\";\nimport {\n Editor,\n Transforms,\n Element as SlateElement,\n Range,\n Text,\n type Editor as SlateEditor,\n} from \"slate\";\nimport {\n ReactEditor,\n type RenderElementProps,\n type RenderLeafProps,\n} from \"slate-react\";\nimport type { CustomElement, CustomText, ElementFormat } from \"./types\";\nimport { fromHTML, createEmptyValue } from \"./html-serialization\";\nimport type { Descendant } from \"slate\";\n\n// Validate and normalize Slate state\nexport const validSlateStateAdapter = (value: unknown): Descendant[] => {\n if (!Array.isArray(value)) {\n return createEmptyValue();\n }\n\n if (value.length === 0) {\n return createEmptyValue();\n }\n\n return value.map((node) => {\n if (!SlateElement.isElement(node)) {\n return {\n type: \"paragraph\",\n children: [{ text: String(node) }],\n } as CustomElement;\n }\n\n if (!node.children || node.children.length === 0) {\n return { ...node, children: [{ text: \"\" }] } as CustomElement;\n }\n\n return node as CustomElement;\n });\n};\n\n// Simple URL validation function\nconst isUrl = (text: string): boolean => {\n try {\n const url = new URL(text);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n};\n\nconst LIST_TYPES = [\"bulleted-list\", \"numbered-list\"];\n\n// Define valid mark formats that can be checked\nconst VALID_MARK_FORMATS = [\n \"bold\",\n \"code\",\n \"italic\",\n \"underline\",\n \"superscript\",\n \"subscript\",\n \"strikethrough\",\n] as const;\n\ntype ValidMarkFormat = (typeof VALID_MARK_FORMATS)[number];\n\n// Type guard to check if a format is a valid mark format\nconst isValidMarkFormat = (format: string): format is ValidMarkFormat => {\n return VALID_MARK_FORMATS.includes(format as ValidMarkFormat);\n};\n\n// Type-safe function to check if a mark is active on a text node\nconst hasMarkFormat = (textNode: CustomText, format: string): boolean => {\n if (!isValidMarkFormat(format)) {\n return false;\n }\n return textNode[format] === true;\n};\n\n// Check if a mark is currently active\nexport const isMarkActive = (editor: SlateEditor, format: string): boolean => {\n const { selection } = editor;\n\n // For collapsed selection (cursor position), use the standard approach\n if (!selection || Range.isCollapsed(selection)) {\n const marks = Editor.marks(editor);\n if (marks && isValidMarkFormat(format)) {\n return (marks as CustomText)[format] === true;\n }\n\n // If no selection/marks (e.g., programmatically set content), check first text node\n if (!selection && editor.children.length > 0) {\n const firstNode = editor.children[0] as CustomElement;\n if (firstNode.children && firstNode.children.length > 0) {\n const firstText = firstNode.children[0];\n if (Text.isText(firstText) && isValidMarkFormat(format)) {\n return (firstText as CustomText)[format] === true;\n }\n }\n }\n\n return false;\n }\n\n // For text selection, check if any selected text has the mark\n // This provides better mixed formatting detection\n try {\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: selection,\n match: (n) => Text.isText(n),\n })\n );\n\n if (textNodes.length === 0) {\n const marks = Editor.marks(editor);\n if (!marks || !isValidMarkFormat(format)) {\n return false;\n }\n return (marks as CustomText)[format] === true;\n }\n\n // Show as active only if all selected text has this mark\n // Prioritizes unformatted text - if any text is unformatted, button shows inactive\n return textNodes.every(([node]) => {\n const textNode = node as CustomText;\n return hasMarkFormat(textNode, format);\n });\n } catch {\n // Fallback to original approach if node traversal fails\n const marks = Editor.marks(editor);\n if (!marks || !isValidMarkFormat(format)) {\n return false;\n }\n return (marks as CustomText)[format] === true;\n }\n};\n\n// Check if a block type is currently active\nexport const isBlockActive = (\n editor: SlateEditor,\n format: ElementFormat\n): boolean => {\n const { selection } = editor;\n\n // If there's a selection, use it to determine active block\n if (selection) {\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n (n as CustomElement).type === format,\n })\n );\n return !!match;\n }\n\n // If no selection, check the first block in the editor\n // This handles cases where content is set programmatically without focus\n if (editor.children.length > 0) {\n const firstNode = editor.children[0] as CustomElement;\n return firstNode.type === format;\n }\n\n return false;\n};\n\n// Toggle a text mark (bold, italic, etc.)\nexport const toggleMark = (editor: SlateEditor, format: string): void => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\n// Toggle a block type (heading, list, etc.)\nexport const toggleBlock = (\n editor: SlateEditor,\n format: ElementFormat\n): void => {\n const isActive = isBlockActive(editor, format);\n const isList = LIST_TYPES.includes(format);\n\n Transforms.unwrapNodes(editor, {\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n LIST_TYPES.includes((n as CustomElement).type),\n split: true,\n });\n\n let newProperties: Partial<CustomElement>;\n if (isActive) {\n newProperties = { type: \"paragraph\" };\n } else if (isList) {\n newProperties = { type: \"list-item\" };\n } else {\n newProperties = { type: format };\n }\n\n Transforms.setNodes<CustomElement>(editor, newProperties);\n\n if (!isActive && isList) {\n const block: CustomElement = { type: format, children: [] };\n Transforms.wrapNodes(editor, block);\n }\n};\n\n// Focus the editor\nexport const focusEditor = (editor: SlateEditor): void => {\n ReactEditor.focus(editor);\n};\n\n// Reset the editor to a specific value\nexport const resetEditor = (editor: SlateEditor, value: string): void => {\n const newValue = fromHTML(value);\n\n // Clear current content\n Transforms.delete(editor, {\n at: {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n },\n });\n\n // Insert new content\n Transforms.insertNodes(editor, newValue);\n\n // Focus at the start\n Transforms.select(editor, Editor.start(editor, []));\n};\n\n// Link plugin\nexport const withLinks = (editor: SlateEditor): SlateEditor => {\n const { insertData, insertText, isInline } = editor;\n\n editor.isInline = (element: CustomElement) => {\n return element.type === \"link\" ? true : isInline(element);\n };\n\n editor.insertText = (text: string) => {\n if (text && isUrl(text)) {\n wrapLink(editor, text);\n } else {\n insertText(text);\n }\n };\n\n editor.insertData = (data: DataTransfer) => {\n const text = data.getData(\"text/plain\");\n\n if (text && isUrl(text)) {\n wrapLink(editor, text);\n } else {\n insertData(data);\n }\n };\n\n return editor;\n};\n\nconst unwrapLink = (editor: SlateEditor): void => {\n Transforms.unwrapNodes(editor, {\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n (n as CustomElement).type === \"link\",\n });\n};\n\nconst wrapLink = (editor: SlateEditor, url: string): void => {\n if (isBlockActive(editor, \"link\")) {\n unwrapLink(editor);\n }\n\n const { selection } = editor;\n const isCollapsed = selection && Range.isCollapsed(selection);\n const link: CustomElement = {\n type: \"link\",\n url,\n children: isCollapsed ? [{ text: url }] : [],\n };\n\n if (isCollapsed) {\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, link, { split: true });\n Transforms.collapse(editor, { edge: \"end\" });\n }\n};\n\n// Render element component\nexport const Element = ({\n attributes,\n children,\n element,\n}: RenderElementProps): ReactElement => {\n const customElement = element as CustomElement;\n const style = { textAlign: customElement.align } as React.CSSProperties;\n\n switch (customElement.type) {\n case \"block-quote\":\n return (\n <blockquote style={style} {...attributes}>\n {children}\n </blockquote>\n );\n case \"bulleted-list\":\n return (\n <ul style={style} {...attributes}>\n {children}\n </ul>\n );\n case \"heading-one\":\n return (\n <h1 style={style} {...attributes}>\n {children}\n </h1>\n );\n case \"heading-two\":\n return (\n <h2 style={style} {...attributes}>\n {children}\n </h2>\n );\n case \"heading-three\":\n return (\n <h3 style={style} {...attributes}>\n {children}\n </h3>\n );\n case \"heading-four\":\n return (\n <h4 style={style} {...attributes}>\n {children}\n </h4>\n );\n case \"heading-five\":\n return (\n <h5 style={style} {...attributes}>\n {children}\n </h5>\n );\n case \"list-item\":\n return (\n <li style={style} {...attributes}>\n {children}\n </li>\n );\n case \"numbered-list\":\n return (\n <ol style={style} {...attributes}>\n {children}\n </ol>\n );\n case \"link\":\n return (\n <a\n {...attributes}\n href={customElement.url}\n rel=\"noopener noreferrer\"\n style={style}\n >\n {children}\n </a>\n );\n default:\n return (\n <p style={style} {...attributes}>\n {children}\n </p>\n );\n }\n};\n\n// Render leaf component\nexport const Leaf = ({\n attributes,\n children,\n leaf,\n}: RenderLeafProps): ReactElement => {\n const customLeaf = leaf as CustomText;\n if (customLeaf.bold) {\n children = <strong>{children}</strong>;\n }\n\n if (customLeaf.code) {\n children = <code>{children}</code>;\n }\n\n if (customLeaf.italic) {\n children = <em>{children}</em>;\n }\n\n if (customLeaf.underline) {\n children = <u>{children}</u>;\n }\n\n if (customLeaf.strikethrough) {\n children = <del>{children}</del>;\n }\n\n if (customLeaf.superscript) {\n children = <sup>{children}</sup>;\n }\n\n if (customLeaf.subscript) {\n children = <sub>{children}</sub>;\n }\n\n return <span {...attributes}>{children}</span>;\n};\n\n// Soft line break handling\nexport const Softbreaker = {\n placeholderCharacter: \"\\u200B\\n\",\n serialize: (string: string): string =>\n string.replace(new RegExp(Softbreaker.placeholderCharacter, \"g\"), \"<br>\"),\n deserialize: (string: string): string =>\n string.replace(/<br\\s*\\/?>/gi, Softbreaker.placeholderCharacter),\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?') && value.length > 1;\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (value.length > 1 && !modifier && !ALIASES[value] && !CODES[name]) {\n throw new TypeError('Unknown modifier: \"' + value + '\"');\n }\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key' && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","/**\n * Hook for handling keyboard shortcuts in the rich text editor\n *\n * Used by:\n * - components/rich-text-editor.tsx: Attaches keyboard event handler to the editor\n *\n * Purpose:\n * - Centralizes all keyboard shortcut logic for the editor\n * - Handles formatting shortcuts (Cmd+B, Cmd+I, etc.)\n * - Manages undo/redo keyboard combinations\n * - Processes soft line breaks (Shift+Enter)\n * - Extracted from rich-text-editor.tsx to improve organization and testability\n *\n * @param editor - The Slate editor instance for applying changes\n * @returns Object containing the keyboard event handler\n */\nimport { useCallback } from \"react\";\nimport { Editor } from \"slate\";\nimport isHotkey from \"is-hotkey\";\nimport { HOTKEYS } from \"../constants\";\nimport { toggleMark } from \"../utils/slate-helpers\";\nimport { Softbreaker } from \"../utils/slate-helpers\";\n\nexport type UseKeyboardShortcutsProps = {\n editor: Editor;\n};\n\nexport const useKeyboardShortcuts = ({ editor }: UseKeyboardShortcutsProps) => {\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n // Handle undo/redo shortcuts\n if ((event.metaKey || event.ctrlKey) && event.key === \"z\") {\n event.preventDefault();\n if (event.shiftKey) {\n editor.redo();\n } else {\n editor.undo();\n }\n return;\n }\n\n // Handle formatting shortcuts\n for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event)) {\n event.preventDefault();\n const mark = HOTKEYS[hotkey as keyof typeof HOTKEYS];\n toggleMark(editor, mark);\n return;\n }\n }\n\n // Handle soft line breaks (Shift+Enter)\n if (event.shiftKey && event.key === \"Enter\") {\n event.preventDefault();\n editor.insertText(Softbreaker.placeholderCharacter);\n return;\n }\n },\n [editor]\n );\n\n return { handleKeyDown };\n};\n","import {\n useMemo,\n useCallback,\n useImperativeHandle,\n useRef,\n type FocusEventHandler,\n type ReactNode,\n} from \"react\";\nimport { useObjectRef } from \"react-aria\";\nimport { mergeRefs } from \"@chakra-ui/react\";\nimport { createEditor, type Descendant } from \"slate\";\nimport { Slate, Editable, withReact } from \"slate-react\";\nimport { withHistory } from \"slate-history\";\nimport {\n RichTextInputEditableSlot,\n RichTextInputToolbarSlot,\n} from \"../rich-text-input.slots\";\nimport {\n Element,\n Leaf,\n withLinks,\n focusEditor,\n resetEditor,\n} from \"../utils/slate-helpers\";\nimport { createEmptyValue } from \"../utils/html-serialization\";\nimport { useKeyboardShortcuts } from \"../hooks/use-keyboard-shortcuts\";\nimport { EDITOR_DEFAULTS } from \"../constants\";\n\nexport type RichTextEditorProps = {\n value?: Descendant[];\n onChange: (value: Descendant[]) => void;\n onFocus?: FocusEventHandler<HTMLDivElement>;\n onBlur?: FocusEventHandler<HTMLDivElement>;\n placeholder?: string;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n autoFocus?: boolean;\n toolbar?: ReactNode;\n /**\n * React ref to be forwarded to the editor\n */\n ref?: React.Ref<RichTextEditorRef>;\n};\n\nexport type RichTextEditorRef = {\n focus: () => void;\n resetValue: (html: string) => void;\n};\n\nexport const RichTextEditor = function RichTextEditor({\n ref: forwardedRef,\n value,\n onChange,\n onFocus,\n onBlur,\n placeholder = EDITOR_DEFAULTS.placeholder,\n isDisabled = EDITOR_DEFAULTS.isDisabled,\n isReadOnly = EDITOR_DEFAULTS.isReadOnly,\n autoFocus = EDITOR_DEFAULTS.autoFocus,\n toolbar,\n //...props\n}: RichTextEditorProps) {\n const localRef = useRef<RichTextEditorRef>(null);\n const ref = useObjectRef(mergeRefs(localRef, forwardedRef));\n\n // Create editor with plugins\n const editor = useMemo(() => {\n const baseEditor = createEditor();\n return withLinks(withHistory(withReact(baseEditor)));\n }, []);\n\n // Handle keyboard shortcuts using hook\n const { handleKeyDown } = useKeyboardShortcuts({ editor });\n\n // Handle focus\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (onFocus) {\n onFocus(event);\n }\n },\n [onFocus]\n );\n\n // Handle blur\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (onBlur) {\n onBlur(event);\n }\n },\n [onBlur]\n );\n\n // Expose methods through ref\n useImperativeHandle(\n ref,\n () => ({\n focus: () => focusEditor(editor),\n resetValue: (html: string) => resetEditor(editor, html),\n }),\n [editor]\n );\n\n // Render element\n const renderElement = useCallback(\n (props: Parameters<typeof Element>[0]) => <Element {...props} />,\n []\n );\n\n // Render leaf\n const renderLeaf = useCallback(\n (props: Parameters<typeof Leaf>[0]) => <Leaf {...props} />,\n []\n );\n\n // Ensure we always have a valid value\n const defaultValue = createEmptyValue();\n const safeInitialValue =\n Array.isArray(value) && value.length > 0 ? value : defaultValue;\n\n return (\n <Slate editor={editor} value={safeInitialValue} onChange={onChange}>\n {toolbar && (\n <RichTextInputToolbarSlot>{toolbar}</RichTextInputToolbarSlot>\n )}\n <RichTextInputEditableSlot asChild>\n <Editable\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n placeholder={placeholder}\n autoFocus={autoFocus}\n readOnly={isReadOnly || isDisabled}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-label=\"Rich text editor\"\n role=\"textbox\"\n aria-multiline=\"true\"\n />\n </RichTextInputEditableSlot>\n </Slate>\n );\n};\n\nRichTextEditor.displayName = \"RichTextEditor\";\n","import { useCallback } from \"react\";\nimport { Editor, Transforms } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\n\n/**\n * Hook that provides a helper function to preserve selection when toolbar actions are executed.\n * This prevents losing text selection when interacting with toolbar buttons and menus.\n *\n * TODO: This works for toggle buttons, but not for menus.\n *\n * @param editor - The Slate editor instance\n * @returns A function that wraps actions to preserve selection and focus\n */\nexport const usePreservedSelection = (editor: Editor) => {\n return useCallback(\n (action: () => void) => {\n return () => {\n // Save the current selection\n const { selection } = editor;\n\n // Execute the action\n action();\n\n // Restore selection if it was lost\n if (selection && !editor.selection) {\n Transforms.select(editor, selection);\n }\n\n // Ensure editor stays focused\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor);\n }\n };\n },\n [editor]\n );\n};\n","/**\n * Hook for managing rich text toolbar state and interactions\n *\n * Used by:\n * - components/rich-text-toolbar.tsx: Manages all toolbar state and event handlers\n *\n * Purpose:\n * - Centralizes complex toolbar state management logic\n * - Handles text style changes, list toggling, format detection\n * - Manages undo/redo button states\n * - Extracted from rich-text-toolbar.tsx to improve organization and testability\n * - Provides clean separation between UI and business logic\n *\n * @param withPreservedSelection - Function for preserving editor selection during operations\n * @returns Object containing all toolbar state and event handlers\n */\nimport { useMemo, useCallback } from \"react\";\nimport { Editor } from \"slate\";\nimport { useSlate } from \"slate-react\";\nimport type { Key } from \"react-aria\";\nimport { textStyles, blockTypes, type BlockType } from \"../constants\";\nimport {\n isMarkActive,\n isBlockActive,\n toggleBlock,\n} from \"../utils/slate-helpers\";\nimport type { CustomElement } from \"../utils/types\";\n\nexport type UseToolbarStateProps = {\n withPreservedSelection: (fn: () => void) => () => void;\n};\n\nexport const useToolbarState = ({\n withPreservedSelection,\n}: UseToolbarStateProps) => {\n const editor = useSlate();\n\n // Get current block type - using useSlate() means this automatically updates\n const currentTextStyle = useMemo(() => {\n return (\n blockTypes.find((type) =>\n isBlockActive(editor, type as CustomElement[\"type\"])\n ) || \"paragraph\"\n );\n }, [editor.selection, editor.children]);\n\n const selectedTextStyle = textStyles.find((v) => v.id === currentTextStyle);\n const selectedTextStyleLabel = selectedTextStyle?.label || \"\";\n\n // Handle text style changes\n const handleTextStyleChange = useCallback(\n (styleId: string) => {\n withPreservedSelection(() => {\n toggleBlock(editor, styleId as BlockType);\n })();\n },\n [editor, withPreservedSelection]\n );\n\n // Handle list formatting\n const handleListToggle = useCallback(\n (selectedKeys: Set<Key>) => {\n withPreservedSelection(() => {\n const selected = Array.from(selectedKeys)[0] as BlockType | undefined;\n const currentlyActive = isBlockActive(editor, \"bulleted-list\")\n ? \"bulleted-list\"\n : isBlockActive(editor, \"numbered-list\")\n ? \"numbered-list\"\n : null;\n\n if (selected) {\n toggleBlock(editor, selected);\n } else if (currentlyActive) {\n toggleBlock(editor, currentlyActive);\n }\n })();\n },\n [editor, withPreservedSelection]\n );\n\n // Get currently selected formatting keys - simplified deps\n const selectedFormatKeys = useMemo(() => {\n const keys: string[] = [];\n if (isMarkActive(editor, \"bold\")) keys.push(\"bold\");\n if (isMarkActive(editor, \"italic\")) keys.push(\"italic\");\n if (isMarkActive(editor, \"underline\")) keys.push(\"underline\");\n return new Set(keys);\n }, [editor.selection, editor.children, Editor.marks(editor)]);\n\n // Get currently selected list formatting key\n const selectedListKeys = useMemo(() => {\n const keys: string[] = [];\n if (isBlockActive(editor, \"bulleted-list\")) keys.push(\"bulleted-list\");\n if (isBlockActive(editor, \"numbered-list\")) keys.push(\"numbered-list\");\n return new Set(keys);\n }, [editor.selection, editor.children]);\n\n // Check history state for undo/redo buttons\n const hasUndos = useMemo(() => {\n return editor.history && editor.history.undos.length > 0;\n }, [editor.selection, editor.children]);\n\n const hasRedos = useMemo(() => {\n return editor.history && editor.history.redos.length > 0;\n }, [editor.selection, editor.children]);\n\n return {\n currentTextStyle,\n selectedTextStyle,\n selectedTextStyleLabel,\n handleTextStyleChange,\n handleListToggle,\n selectedFormatKeys,\n selectedListKeys,\n hasUndos,\n hasRedos,\n };\n};\n","/**\n * Hook for managing formatting menu state with mutual exclusion logic\n *\n * Used by:\n * - components/formatting-menu.tsx: Manages complex formatting state and interactions\n *\n * Purpose:\n * - Handles mutual exclusion between superscript and subscript formatting\n * - Manages state for all formatting options in the \"More Options\" menu\n * - Processes complex selection changes with custom logic\n * - Extracted from formatting-menu.tsx to improve organization and testability\n * - Separates complex business logic from UI rendering\n *\n * @param withPreservedSelection - Function for preserving editor selection during operations\n * @returns Object containing formatting state and selection change handler\n */\nimport { useMemo, useCallback } from \"react\";\nimport { Editor } from \"slate\";\nimport { useSlate } from \"slate-react\";\nimport type { Key } from \"react-aria\";\nimport { BASIC_FORMATTING, SCRIPT_FORMATTING } from \"../constants\";\nimport { isMarkActive, toggleMark } from \"../utils/slate-helpers\";\n\nexport type UseFormattingStateProps = {\n withPreservedSelection: (fn: () => void) => () => void;\n};\n\nexport const useFormattingState = ({\n withPreservedSelection,\n}: UseFormattingStateProps) => {\n const editor = useSlate();\n\n // Get currently selected formatting keys (strikethrough and code)\n const selectedKeys = useMemo(() => {\n const keys: string[] = [];\n BASIC_FORMATTING.forEach((format) => {\n if (isMarkActive(editor, format)) keys.push(format);\n });\n return new Set(keys);\n }, [editor.selection, editor.children, Editor.marks(editor)]);\n\n // Get currently selected script formatting key (superscript or subscript - mutually exclusive)\n const selectedScriptKeys = useMemo(() => {\n const keys: string[] = [];\n SCRIPT_FORMATTING.forEach((format) => {\n if (isMarkActive(editor, format)) keys.push(format);\n });\n return new Set(keys);\n }, [editor.selection, editor.children, Editor.marks(editor)]);\n\n // Combine all selected keys for display purposes\n const allSelectedKeys = useMemo(() => {\n return new Set([\n ...Array.from(selectedKeys),\n ...Array.from(selectedScriptKeys),\n ]);\n }, [selectedKeys, selectedScriptKeys]);\n\n // Handle all selection changes with custom logic for mutual exclusion\n const handleAllSelectionChange = useCallback(\n (keys: \"all\" | Set<Key>) => {\n if (keys === \"all\") return;\n\n const keyArray = Array.from(keys) as string[];\n const currentKeys = Array.from(allSelectedKeys);\n\n // Find newly selected keys (toggle on)\n const newlySelected = keyArray.filter(\n (key) => !currentKeys.includes(key)\n );\n // Find newly deselected keys (toggle off)\n const newlyDeselected = currentKeys.filter(\n (key) => !keyArray.includes(key)\n );\n\n // Handle changes for each key\n [...newlySelected, ...newlyDeselected].forEach((key) => {\n if (key === \"superscript\" || key === \"subscript\") {\n // Handle script formatting with mutual exclusion\n withPreservedSelection(() => {\n const currentlyActive = isMarkActive(editor, \"superscript\")\n ? \"superscript\"\n : isMarkActive(editor, \"subscript\")\n ? \"subscript\"\n : null;\n\n if (newlySelected.includes(key)) {\n // If selecting a script format, deactivate the other one first\n if (currentlyActive && currentlyActive !== key) {\n toggleMark(editor, currentlyActive);\n }\n toggleMark(editor, key);\n } else {\n // Deselecting\n toggleMark(editor, key);\n }\n })();\n } else {\n // Handle regular formatting (strikethrough, code)\n withPreservedSelection(() => toggleMark(editor, key))();\n }\n });\n },\n [editor, allSelectedKeys, withPreservedSelection]\n );\n\n return {\n selectedKeys,\n selectedScriptKeys,\n allSelectedKeys,\n handleAllSelectionChange,\n };\n};\n","import { useSlate } from \"slate-react\";\nimport { Menu, IconButton, Text, Box, Tooltip } from \"@/components\";\nimport {\n MoreHoriz,\n FormatStrikethrough,\n Code,\n} from \"@commercetools/nimbus-icons\";\nimport { usePreservedSelection } from \"../hooks/use-preserved-selection\";\nimport { useFormattingState } from \"../hooks/use-formatting-state\";\n\nexport type FormattingMenuProps = {\n isDisabled?: boolean;\n};\n\nexport const FormattingMenu = ({ isDisabled = false }: FormattingMenuProps) => {\n const editor = useSlate();\n const withPreservedSelection = usePreservedSelection(editor);\n\n // Use the formatting state hook for all state management\n const { allSelectedKeys, handleAllSelectionChange } = useFormattingState({\n withPreservedSelection,\n });\n\n return (\n <Menu.Root\n selectionMode=\"multiple\"\n selectedKeys={allSelectedKeys}\n onSelectionChange={handleAllSelectionChange}\n >\n <Tooltip.Root delay={0} closeDelay={0}>\n <Menu.Trigger asChild>\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"More formatting options\"\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n >\n <MoreHoriz />\n </IconButton>\n </Menu.Trigger>\n <Tooltip.Content placement=\"top\">More styles</Tooltip.Content>\n </Tooltip.Root>\n <Menu.Content>\n <Menu.Item id=\"strikethrough\">\n <Box slot=\"label\" display=\"flex\" alignItems=\"center\" gap=\"200\">\n <FormatStrikethrough />\n <Text textStyle=\"sm\">Strikethrough</Text>\n </Box>\n </Menu.Item>\n <Menu.Item id=\"code\">\n <Box slot=\"label\" display=\"flex\" alignItems=\"center\" gap=\"200\">\n <Code />\n <Text textStyle=\"sm\">Code</Text>\n </Box>\n </Menu.Item>\n <Menu.Item id=\"superscript\">\n <Box slot=\"label\" display=\"flex\" alignItems=\"center\" gap=\"200\">\n <Text>X²</Text>\n <Text textStyle=\"sm\">Superscript</Text>\n </Box>\n </Menu.Item>\n <Menu.Item id=\"subscript\">\n <Box slot=\"label\" display=\"flex\" alignItems=\"center\" gap=\"200\">\n <Text>X₂</Text>\n <Text textStyle=\"sm\">Subscript</Text>\n </Box>\n </Menu.Item>\n </Menu.Content>\n </Menu.Root>\n );\n};\n","import { useSlate } from \"slate-react\";\nimport {\n Toolbar,\n Menu,\n VisuallyHidden,\n Separator,\n ToggleButtonGroup,\n IconToggleButton,\n IconButton,\n Text,\n Box,\n Tooltip,\n} from \"@/components\";\nimport { Group } from \"@/components/group\";\nimport {\n FormatBold,\n FormatItalic,\n FormatUnderlined,\n FormatListBulleted,\n FormatListNumbered,\n KeyboardArrowDown,\n Undo,\n Redo,\n} from \"@commercetools/nimbus-icons\";\nimport { toggleMark } from \"../utils/slate-helpers\";\nimport { usePreservedSelection } from \"../hooks/use-preserved-selection\";\nimport { useToolbarState } from \"../hooks/use-toolbar-state\";\nimport { textStyles } from \"../constants\";\nimport { FormattingMenu } from \"./formatting-menu\";\n\nexport type RichTextToolbarProps = {\n isDisabled?: boolean;\n};\n\nexport const RichTextToolbar = ({\n isDisabled = false,\n}: RichTextToolbarProps) => {\n const editor = useSlate();\n const withPreservedSelection = usePreservedSelection(editor);\n\n // Use the toolbar state hook for all state management\n const {\n currentTextStyle,\n selectedTextStyleLabel,\n handleTextStyleChange,\n handleListToggle,\n selectedFormatKeys,\n selectedListKeys,\n hasUndos,\n hasRedos,\n } = useToolbarState({ withPreservedSelection });\n\n return (\n <Toolbar\n orientation=\"horizontal\"\n aria-label=\"Text formatting\"\n width=\"full\"\n overflow=\"hidden\"\n size=\"xs\"\n >\n {/* Text Style Menu */}\n <Group>\n <Menu.Root\n onAction={(styleId) => handleTextStyleChange(String(styleId))}\n >\n <Tooltip.Root delay={0} closeDelay={0}>\n {/* Menu trigger styles mimic the Select component */}\n <Menu.Trigger\n height=\"800\"\n width=\"4000\"\n bg=\"primary.1\"\n borderRadius=\"200\"\n _hover={{ bg: \"primary.2\" }}\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n aria-label=\"Text style menu\"\n >\n <Box display=\"flex\" alignItems=\"center\" gap=\"200\" px=\"200\">\n <Box display=\"flex\" alignItems=\"center\" gap=\"200\" flexGrow=\"1\">\n <Text my=\"auto\" textStyle=\"sm\" fontWeight=\"500\">\n {selectedTextStyleLabel}\n </Text>\n </Box>\n <KeyboardArrowDown />\n </Box>\n </Menu.Trigger>\n <Tooltip.Content placement=\"top\">Text style</Tooltip.Content>\n </Tooltip.Root>\n <Menu.Content>\n {textStyles.map((style) => (\n <Menu.Item\n key={style.id}\n id={style.id}\n {...(currentTextStyle === style.id && {\n \"data-state\": \"checked\",\n })}\n >\n <Text {...style.props}>{style.label}</Text>\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Group>\n\n <Separator orientation=\"vertical\" />\n\n {/* Text Formatting Toggles */}\n <ToggleButtonGroup.Root\n selectionMode=\"multiple\"\n selectedKeys={selectedFormatKeys}\n isDisabled={isDisabled}\n >\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconToggleButton\n id=\"bold\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Bold\"\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n onPress={withPreservedSelection(() => toggleMark(editor, \"bold\"))}\n >\n <FormatBold />\n <VisuallyHidden>Bold</VisuallyHidden>\n </IconToggleButton>\n <Tooltip.Content placement=\"top\">Bold</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconToggleButton\n id=\"italic\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Italic\"\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n onPress={withPreservedSelection(() => toggleMark(editor, \"italic\"))}\n >\n <FormatItalic />\n <VisuallyHidden>Italic</VisuallyHidden>\n </IconToggleButton>\n <Tooltip.Content placement=\"top\">Italic</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconToggleButton\n id=\"underline\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Underline\"\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n onPress={withPreservedSelection(() =>\n toggleMark(editor, \"underline\")\n )}\n >\n <FormatUnderlined />\n <VisuallyHidden>Underline</VisuallyHidden>\n </IconToggleButton>\n <Tooltip.Content placement=\"top\">Underline</Tooltip.Content>\n </Tooltip.Root>\n </ToggleButtonGroup.Root>\n\n {/* Formatting Menu for additional options */}\n <FormattingMenu isDisabled={isDisabled} />\n\n <Separator orientation=\"vertical\" />\n\n {/* Lists & Indentation */}\n <ToggleButtonGroup.Root\n selectionMode=\"single\"\n selectedKeys={selectedListKeys}\n onSelectionChange={handleListToggle}\n aria-label=\"List formatting\"\n isDisabled={isDisabled}\n >\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconToggleButton\n id=\"bulleted-list\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Bulleted List\"\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n >\n <FormatListBulleted />\n </IconToggleButton>\n <Tooltip.Content placement=\"top\">Bulleted list</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconToggleButton\n id=\"numbered-list\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Numbered List\"\n isDisabled={isDisabled}\n onMouseDown={(event) => event.preventDefault()}\n >\n <FormatListNumbered />\n </IconToggleButton>\n <Tooltip.Content placement=\"top\">Numbered list</Tooltip.Content>\n </Tooltip.Root>\n </ToggleButtonGroup.Root>\n\n {/* Spacer to push undo/redo buttons to the right */}\n <Box flexGrow=\"1\" />\n\n <Group>\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Undo\"\n isDisabled={!hasUndos || isDisabled}\n onPress={withPreservedSelection(() => editor.undo())}\n onMouseDown={(event) => event.preventDefault()}\n >\n <Undo />\n <VisuallyHidden>Undo</VisuallyHidden>\n </IconButton>\n <Tooltip.Content placement=\"top\">Undo</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n aria-label=\"Redo\"\n isDisabled={!hasRedos || isDisabled}\n onPress={withPreservedSelection(() => editor.redo())}\n onMouseDown={(event) => event.preventDefault()}\n >\n <Redo />\n <VisuallyHidden>Redo</VisuallyHidden>\n </IconButton>\n <Tooltip.Content placement=\"top\">Redo</Tooltip.Content>\n </Tooltip.Root>\n </Group>\n </Toolbar>\n );\n};\n\nRichTextToolbar.displayName = \"RichTextToolbar\";\n","import { useState, useCallback, useRef, useEffect } from \"react\";\nimport { useSlotRecipe } from \"@chakra-ui/react\";\nimport { extractStyleProps } from \"@/utils/extractStyleProps\";\nimport { RichTextInputRootSlot } from \"./rich-text-input.slots\";\nimport {\n RichTextEditor,\n type RichTextEditorRef,\n} from \"./components/rich-text-editor\";\nimport { RichTextToolbar } from \"./components/rich-text-toolbar\";\nimport type { RichTextInputProps } from \"./rich-text-input.types\";\nimport {\n toHTML,\n fromHTML,\n createEmptyValue,\n validSlateStateAdapter,\n} from \"./utils\";\nimport { richTextInputRecipe } from \"./rich-text-input.recipe\";\n\n/**\n RichTextInput - A rich text input component with formatting capabilities.\n */\nexport const RichTextInput = (props: RichTextInputProps) => {\n const {\n ref: forwardedRef,\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n placeholder = \"\",\n isDisabled = false,\n isReadOnly = false,\n isInvalid = false,\n autoFocus = false,\n ...restProps\n } = props;\n\n const recipe = useSlotRecipe({ recipe: richTextInputRecipe });\n const [recipeProps, remainingProps] = recipe.splitVariantProps({\n // Only semantic variants go here (none currently defined)\n ...restProps,\n });\n const [styleProps, functionalProps] = extractStyleProps(remainingProps);\n\n // Data attributes for state-based styling\n const dataAttributes = {\n \"data-disabled\": isDisabled ? \"true\" : undefined,\n \"data-invalid\": isInvalid ? \"true\" : undefined,\n \"data-readonly\": isReadOnly ? \"true\" : undefined,\n };\n\n // Internal state management\n const [internalValue, setInternalValue] = useState(() => {\n const initialHtml = value ?? defaultValue ?? \"\";\n try {\n return initialHtml ? fromHTML(initialHtml) : createEmptyValue();\n } catch (error) {\n console.warn(\"Failed to parse initial HTML, using empty value:\", error);\n return createEmptyValue();\n }\n });\n\n const [serializedValue, setSerializedValue] = useState(() => {\n return value ?? defaultValue ?? \"\";\n });\n\n const editorRef = useRef<RichTextEditorRef>(null);\n\n // Handle controlled value changes\n useEffect(() => {\n if (value !== undefined && value !== serializedValue) {\n const newSlateValue = value ? fromHTML(value) : createEmptyValue();\n setInternalValue(newSlateValue);\n setSerializedValue(value);\n }\n }, [value, serializedValue]);\n\n const handleChange = useCallback(\n (slateValue: ReturnType<typeof createEmptyValue>) => {\n const newHtml = toHTML(slateValue);\n const hasSerializedValueChanged = newHtml !== serializedValue;\n\n setInternalValue(slateValue);\n setSerializedValue(newHtml);\n\n // Only call onChange if the serialized HTML actually changed\n if (hasSerializedValueChanged && onChange) {\n onChange(newHtml);\n }\n },\n [serializedValue, onChange]\n );\n\n const currentValue = internalValue;\n\n // Safety check: ensure we always have a valid Slate value\n const safeValue = validSlateStateAdapter(currentValue);\n\n return (\n <RichTextInputRootSlot\n role=\"group\"\n {...recipeProps}\n {...styleProps}\n {...functionalProps}\n {...dataAttributes}\n ref={forwardedRef}\n >\n <RichTextEditor\n ref={editorRef}\n value={safeValue}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n autoFocus={autoFocus}\n toolbar={\n !isReadOnly ? <RichTextToolbar isDisabled={isDisabled} /> : null\n }\n />\n </RichTextInputRootSlot>\n );\n};\n\nRichTextInput.displayName = \"RichTextInput\";\n"],"names":["withProvider","withContext","createSlotRecipeContext","RichTextInputRootSlot","RichTextInputToolbarSlot","RichTextInputEditableSlot","isObject","o","isPlainObject","ctor","prot","n","e","i","Y","r","Q","t","Z","L","s","v","nn","u","a","f","c","X","q","p","l","rn","d","y","h","b","tn","_","U","j","g","O","S","w","P","M","x","H","A","z","I","k","E","N","en","on","R","D","G","W","B","un","an","fn","ln","dn","_defineProperty","obj","key","value","DIRTY_PATHS","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","ownKeys$9","object","enumerableOnly","keys","symbols","sym","_objectSpread$9","target","source","createEditor","editor","op","ref","Editor","PathRef","_ref","PointRef","_ref2","RangeRef","oldDirtyPaths","oldDirtyPathKeys","dirtyPaths","dirtyPathKeys","add","path","Path","newPath","newDirtyPaths","getDirtyPaths","_path","Transforms","selection","Range","Text","marks","unit","direction","Node","fragment","node","text","entry","Element","child","shouldHaveInlines","currentNode","_child","prev","isLast","isInlineOrText","newChild","_newChild","_path2","levels","descendants","_ref3","_path3","ancestors","previousPath","_path4","oldAncestors","newAncestors","ancestor","_ancestor","_p","newParent","newIndex","resultPath","_path5","_ancestors","_path6","_levels","nextPath","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","getCharacterDistance","str","isRTL","isLTR","codepoints","codepointsIteratorRTL","left","CodepointType","right","distance","gb11","gb12Or13","char","code","type","getCodepointType","intersects","endsWithEmojiZWJ","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","getWordDistance","dist","started","charDist","remaining","splitByCharacterDistance","isWordCharacter","at","nextChar","nextRemaining","end","char1","isLowSurrogate","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","NonBoundaryPairs","endingEmojiZWJ","endingRIs","match","numRIs","isElement","val","props","elementVal","elementKey","element","_excluded$4","_excluded2$3","ownKeys$8","_objectSpread$8","IS_EDITOR_CACHE","options","voids","mode","reverse","anchor","focus","range","cachedIsEditor","isEditor","Operation","point","Point","children","first","isNormalizing","start","_node","_rest","block","prevNode","prevPath","blockPath","rest","pointAfterLocation","to","span","parent","next","universal","from","Span","last","nodeEntries","matches","hit","isLower","emit","force","getDirtyPathKeys","popDirtyPath","allPaths","allPathKeys","dirtyPath","max","m","_dirtyPath","_entry","parentPath","depth","edge","firstPath","lastPath","affinity","current","pathRefs","refs","pointRefs","isNewBlock","blockText","leafTextRemaining","leafTextOffset","isFirst","calcDistance","pointBeforeLocation","previous","rangeRefs","endBlock","before","skip","_excluded$3","_excluded2$2","IS_NODE_LIST_CACHE","root","index","childPath","another","properties","newRoot","produce","leaf","_leaf","cachedResult","isNodeList","pass","visited","nextIndex","_newPath","ownKeys$7","_objectSpread$7","inversePath","inverseNewPath","newProperties","_properties","_newProperties","paths","common","av","bv","min","as","bs","al","bl","list","operation","_op","_op2","position","_op3","_position","_op4","onp","copy","ownKeys$6","_objectSpread$6","result","offset","_excluded$2","ownKeys$5","_objectSpread$5","rs","re","ts","te","isAfterStart","isBeforeEnd","s1","e1","s2","e2","affinityAnchor","affinityFocus","isCollapsed","isDeepEqual","_key","_excluded$1","_excluded2$1","ownKeys$4","_objectSpread$4","loose","omitText","decorations","leaves","dec","length","middle","after","off","_off","ownKeys$3","_objectSpread$3","applyToDraft","_point","_node2","_parent","_index","_point2","_key2","_node3","_parent2","_index2","truePath","_point3","_key3","_index3","_parent3","_point4","_key4","_prev","preferNext","_offset","_text","_node4","_before","_after","_point5","_key5","_node5","_key6","_key7","_key8","_value","_path7","_node6","_parent4","_index4","newNode","_before2","_after2","_before3","_after3","_point6","_key9","GeneralTransforms","createDraft","finishDraft","isDraft","_excluded","_excluded2","ownKeys$2","_objectSpread$2","NodeTransforms","nodes","hanging","select","pointRef","_matchPath","pathRef","isAtEnd","matchPath","parentNodeEntry","toPath","_toPath","splitPath","_toPath2","commonPath","isPreviousSibling","emptyAncestor","hasSingleChildNest","emptyRef","toRef","targets","depths","_ref4","compare","split","rangeRef","splitMode","endAtEndOfNode","startAtStartOfNode","prop","nodeProp","hasChanges","height","always","deleteRange","beforeRef","highest","voidMatch","nudge","voidNode","voidPath","afterPath","siblingHeight","afterRef","highestPath","lowestPath","isEnd","_ref5","_loop","roots","rootPath","_ret","commonNodeEntry","commonNode","wrapperPath","wrapper","ownKeys$1","_objectSpread$1","SelectionTransforms","opts","oldProps","newProps","TextTransforms","furthestVoid","_end","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startVoid","endVoid","startRef","endRef","inlineElementMatch","_inlinePath","blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","isRoot","starts","middles","ends","starting","hasBlocks","inlineMatch","inlinePath","isInlineStart","isInlineEnd","middleRef","blockPathRef","_end2","ownKeys","_objectSpread","direction_1","RTL","LTR","rtl","ltr","isObject_1","freeGlobal","global","_freeGlobal","require$$0","freeSelf","_root","now","now_1","reWhitespace","trimmedEndIndex","string","_trimmedEndIndex","reTrimStart","baseTrim","_baseTrim","Symbol","_Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","_getRawTag","objectToString","_objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObjectLike","isObjectLike_1","symbolTag","isSymbol","isSymbol_1","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","other","isBinary","toNumber_1","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","debounce_1","throttle","throttle_1","V","C","T","F","J","K","$","isOptionsObject","defaultBehavior","actions","behavior","canSmoothScroll","el","top","getOptions","scrollIntoView","isTargetAttached","compute","computeOptions","lib","IS_MAC","MODIFIERS","ALIASES","CODES","isHotkey","hotkey","event","array","parseHotkey","check","compareHotkey","ret","isCodeHotkey","isKeyHotkey","byKey","values","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","optional","name","toKeyName","modifier","toKeyCode","err","expected","actual","IS_IOS","IS_APPLE","IS_ANDROID","IS_FIREFOX","IS_SAFARI","IS_EDGE_LEGACY","IS_CHROME","IS_CHROME_LEGACY","IS_FIREFOX_LEGACY","IS_QQBROWSER","IS_UC_MOBILE","IS_WECHATBROWSER","CAN_USE_DOM","HAS_BEFORE_INPUT_SUPPORT","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","String","useSlateStatic","ReactEditor","React","ZeroWidthString","TextString","isTrailing","useRef","getTextContent","textWithTrailing","isLineBreak","NODE_TO_INDEX","NODE_TO_PARENT","EDITOR_TO_WINDOW","EDITOR_TO_ELEMENT","ELEMENT_TO_NODE","NODE_TO_ELEMENT","NODE_TO_KEY","EDITOR_TO_KEY_TO_ELEMENT","IS_READ_ONLY","IS_FOCUSED","IS_COMPOSING","IS_ON_COMPOSITION_END","EDITOR_ON_COMPOSITION_TEXT","EDITOR_TO_ON_CHANGE","NODE_TO_RESTORE_DOM","PLACEHOLDER_SYMBOL","Leaf","renderPlaceholder","renderLeaf","DefaultLeaf","placeholderRef","placeholderEl","editorEl","placeholderProps","attributes","MemoizedLeaf","Text$1","shallowCompare","obj1","obj2","isDecoratorRangeListEqual","rangeOwnProps","otherOwnProps","useContentKey","contentKeyRef","updateAnimationFrameRef","setForceRerenderCounter","useState","state","KEY_TO_ELEMENT","contentKey","MemoizedText","renderElement","DefaultElement","readOnly","useReadOnly","isInline","useChildren","dir","getDirection","Tag","content","Fragment","MemoizedElement","EditorContext","createContext","useContext","DecorateContext","useDecorate","SelectedContext","isLeafBlock","Element$1","sel","ds","HOTKEYS","APPLE_HOTKEYS","WINDOWS_HOTKEYS","create","generic","apple","windows","isGeneric","isApple","isWindows","Hotkeys","ReadOnlyContext","SlateContext","useSlate","context","getDefaultView","isDOMComment","isDOMNode","isDOMElement","window","isDOMSelection","isDOMText","isPlainTextOnlyPaste","normalizeDOMPoint","domPoint","getEditableChildAndIndex","getEditableChild","hasShadowRoot","childNodes","triedForward","triedBackward","getPlainText","domNode","childNode","display","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","getClipboardData","clipboardData","Children","Editable$1","autoFocus","decorate","defaultDecorate","propsOnDOMBeforeInput","placeholder","DefaultPlaceholder","scrollSelectionIntoView","defaultScrollSelectionIntoView","style","Component","isComposing","setIsComposing","deferredOperations","useMemo","domSelection","hasDomSelection","editorElement","hasDomSelectionInEditor","slateRange","newDomRange","onDOMSelectionChange","useCallback","activeElement","anchorNode","focusNode","anchorNodeSelectable","hasEditableTarget","isTargetInsideNonReadonlyVoid","focusNodeSelectable","scheduleOnDOMSelectionChange","onDOMBeforeInput","isDOMEventHandled","data","native","inline","targetRange","_selection","isEventHandled","relatedTarget","hasTarget","lookupNode","_start","leafPath","currentTextNode","draggedRange","nativeEvent","maybeHistoryEditor","_maybeHistoryEditor","domRange","leafEl","slateNode","handler","shouldTreatEventAsHandled","getDiffStart","getDiffEnd","prevLength","nextLength","prevChar","getDiffOffsets","maxEnd","sliceText","offsets","diffText","insertText","removeText","combineInsertedText","insertedText","acc","getTextInsertion","prevText","nextText","textDiff","textPath","normalizeTextInsertionRange","insertionRange","isSingleCharacterInsertion","characterBeforeAnchor","characterAfterAnchor","Key","editable","targetEl","originEvent","selector","texts","attr","trueLength","isBackward","domAnchor","domFocus","startNode","startOffset","endNode","endOffset","startEl","isStartAtZeroWidth","endEl","isEndAtZeroWidth","domEl","rect","isPrev","_range","document","exactMatch","suppressThrow","nearestNode","nearestOffset","parentNode","textNode","_domNode$textContent","leafNode","contents","removals","anchorOffset","focusOffset","gatherMutationData","mutations","addedNodes","removedNodes","characterDataMutations","mutation","addedNode","removedNode","textInsertion","parentDOMNode","isDeletion","isReplaceExpandedSelection","isTextInsertion","_ref6","isRemoveLeafNodes","_ref7","AndroidInputManager","restoreDOM","mutationData","insertion","useMutationObserver","callback","mutationObserver","MUTATION_OBSERVER_CONFIG$1","findClosestKnowSlateNode","_domEl","useRestoreDom","receivedUserInput","mutatedNodes","handleDOMMutation","restore","mutated","nodesToRestore","_NODE_TO_RESTORE_DOM$","useTrackUserInput","animationFrameRef","onUserInput","MUTATION_OBSERVER_CONFIG","useAndroidInputManager","restoreDom","inputManager","timeoutId","isReconciling","RESOLVE_DELAY","AndroidEditable","FocusedContext","SlateSelectorContext","getSelectorContext","eventListeners","slateRef","onChange","listener","selectorContext","Slate","unmountRef","setContext","handleSelectorChange","onContextChange","isFocused","setIsFocused","doRectsIntersect","compareRect","areRangesSameLine","range1","range2","rect1","rect2","findCurrentLineRange","parentRange","parentRangeBoundary","positions","withReact","apply","deleteBackward","parentBlockEntry","parentBlockPath","parentElementRange","currentLineRange","attach","zw","isNewline","encoded","div","decoded","parsed","lines","line","ReactDOM","Editable","History","SAVING","MERGING","SPLITTING_ONCE","HistoryEditor","withHistory","history","redos","batch","undos","inverseOps","operations","lastBatch","lastOp","save","merge","shouldSave","shouldMerge","stack","matchHtmlRegExp","escapeHtml_1","escapeHtml","escape","html","lastIndex","EDITOR_DEFAULTS","BLOCK_TAGS","MARK_TAGS","FORMATTING_OPTIONS","BASIC_FORMATTING","SCRIPT_FORMATTING","textStyles","blockTypes","SOFT_BREAK_PLACEHOLDER","createEmptyValue","toHTML","serializeNode","hrefAttr","sanitizedUrl","sanitizeUrl","otherAttrsString","fromHTML","body","deserializeNode","validSlateStateAdapter","error","tagName","slateElement","href","attrs","processChildren","markType","extractTextFromChildren","textContent","processed","SlateElement","extractTextContent","url","trimmed","isUrl","LIST_TYPES","VALID_MARK_FORMATS","isValidMarkFormat","format","hasMarkFormat","isMarkActive","firstNode","firstText","textNodes","isBlockActive","toggleMark","toggleBlock","isActive","isList","focusEditor","resetEditor","newValue","withLinks","insertData","wrapLink","unwrapLink","link","customElement","jsx","customLeaf","Softbreaker","useKeyboardShortcuts","mark","RichTextEditor","forwardedRef","onFocus","onBlur","isDisabled","isReadOnly","toolbar","localRef","useObjectRef","mergeRefs","baseEditor","handleKeyDown","handleFocus","handleBlur","useImperativeHandle","defaultValue","safeInitialValue","jsxs","usePreservedSelection","action","useToolbarState","withPreservedSelection","currentTextStyle","selectedTextStyle","selectedTextStyleLabel","handleTextStyleChange","styleId","handleListToggle","selectedKeys","selected","currentlyActive","selectedFormatKeys","selectedListKeys","hasUndos","hasRedos","useFormattingState","selectedScriptKeys","allSelectedKeys","handleAllSelectionChange","keyArray","currentKeys","newlySelected","newlyDeselected","FormattingMenu","Menu","Tooltip","IconButton","MoreHoriz","Box","FormatStrikethrough","Code","RichTextToolbar","Toolbar","Group","KeyboardArrowDown","Separator","ToggleButtonGroup","IconToggleButton","FormatBold","VisuallyHidden","FormatItalic","FormatUnderlined","FormatListBulleted","FormatListNumbered","Undo","Redo","RichTextInput","isInvalid","restProps","recipe","useSlotRecipe","richTextInputRecipe","recipeProps","remainingProps","styleProps","functionalProps","extractStyleProps","dataAttributes","internalValue","setInternalValue","initialHtml","serializedValue","setSerializedValue","editorRef","newSlateValue","handleChange","slateValue","newHtml","hasSerializedValueChanged","safeValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,EAAE,cAAAA,IAAc,aAAAC,GAAA,IAAgB,gBAAAC,GAAwB;AAAA,EAC5D,KAAK;AACP,CAAC,GAGYC,KAGT,gBAAAH,GAAyD,OAAO,MAAM,GAG7DI,KAA2B,gBAAAH,GAGtC,OAAO,SAAS,GAGLI,KAA4B,gBAAAJ,GAGvC,OAAO,UAAU;AC5BnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAASK,GAASC,GAAG;AACnB,SAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,MAAM;AAC/C;AAEA,SAASC,GAAcD,GAAG;AACxB,MAAIE,GAAKC;AAET,SAAIJ,GAASC,CAAC,MAAM,KAAc,MAGlCE,IAAOF,EAAE,aACLE,MAAS,SAAkB,MAG/BC,IAAOD,EAAK,WACR,EAAAH,GAASI,CAAI,MAAM,MAGnBA,EAAK,eAAe,eAAe,MAAM;AAM/C;AC/BA,SAASC,GAAEA,GAAE;AAAC,WAAQ,IAAE,UAAU,QAAO,IAAE,MAAM,IAAE,IAAE,IAAE,IAAE,CAAC,GAAEC,IAAE,GAAEA,IAAE,GAAEA,IAAI,GAAEA,IAAE,CAAC,IAAE,UAAUA,CAAC;AAAE,MAAkB,QAAQ,IAAI,aAA3B,cAAoC;AAAC,QAAIC,IAAEC,GAAEH,CAAC,GAAEJ,IAAEM,IAAc,OAAOA,KAAnB,aAAqBA,EAAE,MAAM,MAAK,CAAC,IAAEA,IAAE,uBAAqBF;AAAE,UAAM,MAAM,aAAWJ,CAAC;AAAA,EAAC;AAAC,QAAM,MAAM,gCAA8BI,KAAG,EAAE,SAAO,MAAI,EAAE,IAAK,SAASA,GAAE;AAAC,WAAM,MAAIA,IAAE;AAAA,EAAG,CAAC,EAAG,KAAK,GAAG,IAAE,MAAI,kDAAkD;AAAC;AAAC,SAASI,GAAEJ,GAAE;AAAC,SAAM,CAAC,CAACA,KAAG,CAAC,CAACA,EAAEK,EAAC;AAAC;AAAC,SAASC,GAAEN,GAAE;AAAC,MAAI;AAAE,SAAM,CAAC,CAACA,MAAI,SAASA,GAAE;AAAC,QAAG,CAACA,KAAa,OAAOA,KAAjB,SAAmB,QAAM;AAAG,QAAII,IAAE,OAAO,eAAeJ,CAAC;AAAE,QAAUI,MAAP,KAAS,QAAM;AAAG,QAAIE,IAAE,OAAO,eAAe,KAAKF,GAAE,aAAa,KAAGA,EAAE;AAAY,WAAOE,MAAI,UAAoB,OAAOA,KAAnB,cAAsB,SAAS,SAAS,KAAKA,CAAC,MAAIC;AAAA,EAAC,EAAEP,CAAC,KAAG,MAAM,QAAQA,CAAC,KAAG,CAAC,CAACA,EAAEQ,EAAC,KAAG,CAAC,EAAE,GAAQ,IAAER,EAAE,iBAAZ,QAAmC,MAAT,WAAkB,EAAEQ,EAAC,MAAIC,GAAET,CAAC,KAAGU,GAAEV,CAAC;AAAE;AAA2C,SAASE,GAAEF,GAAE,GAAE,GAAE;AAAC,EAAS,MAAT,WAAa,IAAE,KAAQJ,GAAEI,CAAC,MAAP,KAAU,IAAE,OAAO,OAAKW,IAAIX,CAAC,EAAE,QAAS,SAASC,GAAE;AAAC,SAAa,OAAOA,KAAjB,YAAoB,EAAEA,GAAED,EAAEC,CAAC,GAAED,CAAC;AAAA,EAAC,CAAC,IAAGA,EAAE,QAAS,SAASM,GAAEL,GAAE;AAAC,WAAO,EAAEA,GAAEK,GAAEN,CAAC;AAAA,EAAC,CAAC;AAAE;AAAC,SAASJ,GAAEI,GAAE;AAAC,MAAI,IAAEA,EAAEK,EAAC;AAAE,SAAO,IAAE,EAAE,IAAE,IAAE,EAAE,IAAE,IAAE,EAAE,IAAE,MAAM,QAAQL,CAAC,IAAE,IAAES,GAAET,CAAC,IAAE,IAAEU,GAAEV,CAAC,IAAE,IAAE;AAAC;AAAC,SAASY,GAAEZ,GAAE,GAAE;AAAC,SAAWJ,GAAEI,CAAC,MAAP,IAASA,EAAE,IAAI,CAAC,IAAE,OAAO,UAAU,eAAe,KAAKA,GAAE,CAAC;AAAC;AAAC,SAASa,GAAEb,GAAE,GAAE;AAAC,SAAWJ,GAAEI,CAAC,MAAP,IAASA,EAAE,IAAI,CAAC,IAAEA,EAAE,CAAC;AAAC;AAAC,SAASc,GAAEd,GAAE,GAAE,GAAE;AAAC,MAAIC,IAAEL,GAAEI,CAAC;AAAE,EAAIC,MAAJ,IAAMD,EAAE,IAAI,GAAE,CAAC,IAAMC,MAAJ,IAAMD,EAAE,IAAI,CAAC,IAAEA,EAAE,CAAC,IAAE;AAAC;AAAC,SAASe,GAAEf,GAAE,GAAE;AAAC,SAAOA,MAAI,IAAMA,MAAJ,KAAO,IAAEA,KAAG,IAAE,IAAEA,KAAGA,KAAG,KAAG;AAAC;AAAC,SAASS,GAAET,GAAE;AAAC,SAAOgB,MAAGhB,aAAa;AAAG;AAAC,SAASU,GAAEV,GAAE;AAAC,SAAOiB,MAAGjB,aAAa;AAAG;AAAC,SAASkB,GAAElB,GAAE;AAAC,SAAOA,EAAE,KAAGA,EAAE;AAAC;AAAC,SAASmB,GAAEnB,GAAE;AAAC,MAAG,MAAM,QAAQA,CAAC,EAAE,QAAO,MAAM,UAAU,MAAM,KAAKA,CAAC;AAAE,MAAI,IAAEoB,GAAGpB,CAAC;AAAE,SAAO,EAAEK,EAAC;AAAE,WAAQ,IAAEM,GAAG,CAAC,GAAEV,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,QAAIC,IAAE,EAAED,CAAC,GAAEL,IAAE,EAAEM,CAAC;AAAE,IAAKN,EAAE,aAAP,OAAkBA,EAAE,WAAS,IAAGA,EAAE,eAAa,MAAKA,EAAE,OAAKA,EAAE,SAAO,EAAEM,CAAC,IAAE,EAAC,cAAa,IAAG,UAAS,IAAG,YAAWN,EAAE,YAAW,OAAMI,EAAEE,CAAC,EAAC;AAAA,EAAE;AAAC,SAAO,OAAO,OAAO,OAAO,eAAeF,CAAC,GAAE,CAAC;AAAC;AAAC,SAASqB,GAAErB,GAAEC,GAAE;AAAC,SAAgBA,MAAT,WAAaA,IAAE,KAAIqB,GAAEtB,CAAC,KAAGI,GAAEJ,CAAC,KAAG,CAACM,GAAEN,CAAC,MAAIJ,GAAEI,CAAC,IAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,QAAMA,EAAE,SAAOuB,KAAG,OAAO,OAAOvB,CAAC,GAAEC,KAAGC,GAAEF,GAAG,SAASA,GAAEI,GAAE;AAAC,WAAOiB,GAAEjB,GAAE,EAAE;AAAA,EAAC,GAAG,EAAE,IAAGJ;AAAC;AAAC,SAASuB,KAAG;AAACvB,EAAAA,GAAE,CAAC;AAAC;AAAC,SAASsB,GAAEtB,GAAE;AAAC,SAAaA,KAAN,QAAmB,OAAOA,KAAjB,YAAoB,OAAO,SAASA,CAAC;AAAC;AAAC,SAASwB,GAAEpB,GAAE;AAAC,MAAIE,IAAEmB,GAAGrB,CAAC;AAAE,SAAOE,KAAGN,GAAE,IAAGI,CAAC,GAAEE;AAAC;AAAkC,SAASoB,KAAG;AAAC,SAAqB,QAAQ,IAAI,aAA3B,gBAAqCC,MAAG3B,GAAE,CAAC,GAAE2B;AAAC;AAAC,SAASC,GAAE5B,GAAE,GAAE;AAAC,QAAIwB,GAAE,SAAS,GAAExB,EAAE,IAAE,CAAA,GAAGA,EAAE,IAAE,CAAA,GAAGA,EAAE,IAAE;AAAE;AAAC,SAAS6B,GAAE7B,GAAE;AAAC,EAAA8B,GAAE9B,CAAC,GAAEA,EAAE,EAAE,QAAQ+B,EAAC,GAAE/B,EAAE,IAAE;AAAI;AAAC,SAAS8B,GAAE9B,GAAE;AAAC,EAAAA,MAAI2B,OAAIA,KAAE3B,EAAE;AAAE;AAAC,SAASgC,GAAEhC,GAAE;AAAC,SAAO2B,KAAE,EAAC,GAAE,CAAA,GAAG,GAAEA,IAAE,GAAE3B,GAAE,GAAE,IAAG,GAAE,EAAC;AAAC;AAAC,SAAS+B,GAAE/B,GAAE;AAAC,MAAI,IAAEA,EAAEK,EAAC;AAAE,EAAI,EAAE,MAAN,KAAa,EAAE,MAAN,IAAQ,EAAE,EAAC,IAAG,EAAE,IAAE;AAAE;AAAC,SAAS4B,GAAE7B,GAAEH,GAAE;AAAC,EAAAA,EAAE,IAAEA,EAAE,EAAE;AAAO,MAAIC,IAAED,EAAE,EAAE,CAAC,GAAEL,IAAWQ,MAAT,UAAYA,MAAIF;AAAE,SAAOD,EAAE,EAAE,KAAGuB,GAAE,KAAK,EAAE,EAAEvB,GAAEG,GAAER,CAAC,GAAEA,KAAGM,EAAEG,EAAC,EAAE,MAAIwB,GAAE5B,CAAC,GAAED,GAAE,CAAC,IAAGM,GAAEF,CAAC,MAAIA,IAAE8B,GAAEjC,GAAEG,CAAC,GAAEH,EAAE,KAAGkC,GAAElC,GAAEG,CAAC,IAAGH,EAAE,KAAGuB,GAAE,SAAS,EAAE,EAAEtB,EAAEG,EAAC,EAAE,GAAED,GAAEH,EAAE,GAAEA,EAAE,CAAC,KAAGG,IAAE8B,GAAEjC,GAAEC,GAAE,CAAA,CAAE,GAAE2B,GAAE5B,CAAC,GAAEA,EAAE,KAAGA,EAAE,EAAEA,EAAE,GAAEA,EAAE,CAAC,GAAEG,MAAIgC,KAAEhC,IAAE;AAAM;AAAC,SAAS8B,GAAElC,GAAE,GAAE,GAAE;AAAC,MAAGsB,GAAE,CAAC,EAAE,QAAO;AAAE,MAAIrB,IAAE,EAAEI,EAAC;AAAE,MAAG,CAACJ,EAAE,QAAOC,GAAE,GAAG,SAASA,GAAEN,GAAE;AAAC,WAAOyC,GAAErC,GAAEC,GAAE,GAAEC,GAAEN,GAAE,CAAC;AAAA,EAAC,GAAG,EAAE,GAAE;AAAE,MAAGK,EAAE,MAAID,EAAE,QAAO;AAAE,MAAG,CAACC,EAAE,EAAE,QAAOkC,GAAEnC,GAAEC,EAAE,GAAE,EAAE,GAAEA,EAAE;AAAE,MAAG,CAACA,EAAE,GAAE;AAAC,IAAAA,EAAE,IAAE,IAAGA,EAAE,EAAE;AAAI,QAAIL,IAAMK,EAAE,MAAN,KAAaA,EAAE,MAAN,IAAQA,EAAE,IAAEkB,GAAElB,EAAE,CAAC,IAAEA,EAAE,GAAEW,IAAEhB,GAAEiB,IAAE;AAAG,IAAIZ,EAAE,MAAN,MAAUW,IAAE,IAAI,IAAIhB,CAAC,GAAEA,EAAE,MAAK,GAAGiB,IAAE,KAAIX,GAAEU,GAAG,SAASR,GAAEF,GAAE;AAAC,aAAOmC,GAAErC,GAAEC,GAAEL,GAAEQ,GAAEF,GAAE,GAAEW,CAAC;AAAA,IAAC,CAAC,GAAGsB,GAAEnC,GAAEJ,GAAE,EAAE,GAAE,KAAGI,EAAE,KAAGwB,GAAE,SAAS,EAAE,EAAEvB,GAAE,GAAED,EAAE,GAAEA,EAAE,CAAC;AAAA,EAAC;AAAC,SAAOC,EAAE;AAAC;AAAC,SAASoC,GAAE,GAAEnC,GAAEN,GAAEiB,GAAEE,GAAEN,GAAEC,GAAE;AAAC,MAAkB,QAAQ,IAAI,aAA3B,gBAAqCK,MAAInB,KAAGI,GAAE,CAAC,GAAEI,GAAEW,CAAC,GAAE;AAAC,QAAIG,IAAEgB,GAAE,GAAEnB,GAAEN,KAAGP,KAAOA,EAAE,MAAN,KAAS,CAACU,GAAEV,EAAE,GAAEW,CAAC,IAAEJ,EAAE,OAAOI,CAAC,IAAE,MAAM;AAAE,QAAGC,GAAElB,GAAEiB,GAAEK,CAAC,GAAE,CAACd,GAAEc,CAAC,EAAE;AAAO,MAAE,IAAE;AAAA,EAAE,MAAM,CAAAR,KAAGd,EAAE,IAAImB,CAAC;AAAE,MAAGT,GAAES,CAAC,KAAG,CAACO,GAAEP,CAAC,GAAE;AAAC,QAAG,CAAC,EAAE,EAAE,KAAG,EAAE,IAAE,EAAE;AAAO,IAAAmB,GAAE,GAAEnB,CAAC,GAAEb,KAAGA,EAAE,EAAE,KAAGiC,GAAE,GAAEpB,CAAC;AAAA,EAAC;AAAC;AAAC,SAASoB,GAAEnC,GAAE,GAAE,GAAE;AAAC,EAAS,MAAT,WAAa,IAAE,KAAI,CAACA,EAAE,KAAGA,EAAE,EAAE,KAAGA,EAAE,KAAGqB,GAAE,GAAE,CAAC;AAAC;AAAC,SAASiB,GAAEtC,GAAE,GAAE;AAAC,MAAI,IAAEA,EAAEK,EAAC;AAAE,UAAO,IAAEa,GAAE,CAAC,IAAElB,GAAG,CAAC;AAAC;AAAC,SAASuC,GAAEvC,GAAE,GAAE;AAAC,MAAG,KAAKA,EAAE,UAAQ,IAAE,OAAO,eAAeA,CAAC,GAAE,KAAG;AAAC,QAAIC,IAAE,OAAO,yBAAyB,GAAE,CAAC;AAAE,QAAGA,EAAE,QAAOA;AAAE,QAAE,OAAO,eAAe,CAAC;AAAA,EAAC;AAAC;AAAC,SAASuC,GAAExC,GAAE;AAAC,EAAAA,EAAE,MAAIA,EAAE,IAAE,IAAGA,EAAE,KAAGwC,GAAExC,EAAE,CAAC;AAAE;AAAC,SAASyC,GAAEzC,GAAE;AAAC,EAAAA,EAAE,MAAIA,EAAE,IAAEmB,GAAEnB,EAAE,CAAC;AAAE;AAAC,SAAS0C,GAAE1C,GAAE,GAAE,GAAE;AAAC,MAAIC,IAAEQ,GAAE,CAAC,IAAEe,GAAE,QAAQ,EAAE,EAAE,GAAE,CAAC,IAAEd,GAAE,CAAC,IAAEc,GAAE,QAAQ,EAAE,EAAE,GAAE,CAAC,IAAExB,EAAE,IAAE,SAASA,GAAEI,GAAE;AAAC,QAAIE,IAAE,MAAM,QAAQN,CAAC,GAAEC,IAAE,EAAC,GAAEK,IAAE,IAAE,GAAE,GAAEF,IAAEA,EAAE,IAAEsB,GAAC,GAAG,GAAE,IAAG,GAAE,IAAG,GAAE,CAAA,GAAG,GAAEtB,GAAE,GAAEJ,GAAE,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,GAAE,GAAEE,IAAED,GAAEL,IAAE+C;AAAG,IAAArC,MAAIJ,IAAE,CAACD,CAAC,GAAEL,IAAEgD;AAAI,QAAIhC,IAAE,MAAM,UAAUV,GAAEN,CAAC,GAAEiB,IAAED,EAAE,QAAOE,IAAEF,EAAE;AAAM,WAAOX,EAAE,IAAEa,GAAEb,EAAE,IAAEY,GAAEC;AAAA,EAAC,EAAE,GAAE,CAAC,IAAEU,GAAE,KAAK,EAAE,EAAE,GAAE,CAAC;AAAE,UAAO,IAAE,EAAE,IAAEE,GAAC,GAAI,EAAE,KAAKzB,CAAC,GAAEA;AAAC;AAAC,SAAS4C,GAAE,GAAE;AAAC,SAAOzC,GAAE,CAAC,KAAGJ,GAAE,IAAG,CAAC,GAAE,SAASA,EAAEI,GAAE;AAAC,QAAG,CAACE,GAAEF,CAAC,EAAE,QAAOA;AAAE,QAAIH,GAAE,IAAEG,EAAEC,EAAC,GAAEU,IAAEnB,GAAEQ,CAAC;AAAE,QAAG,GAAE;AAAC,UAAG,CAAC,EAAE,MAAI,EAAE,IAAE,KAAG,CAACoB,GAAE,KAAK,EAAE,EAAE,CAAC,GAAG,QAAO,EAAE;AAAE,QAAE,IAAE,IAAGvB,IAAE6C,GAAE1C,GAAEW,CAAC,GAAE,EAAE,IAAE;AAAA,IAAE,MAAM,CAAAd,IAAE6C,GAAE1C,GAAEW,CAAC;AAAE,WAAOb,GAAED,GAAG,SAASG,GAAEE,GAAE;AAAC,WAAGO,GAAE,EAAE,GAAET,CAAC,MAAIE,KAAGQ,GAAEb,GAAEG,GAAEJ,EAAEM,CAAC,CAAC;AAAA,IAAC,CAAC,GAAOS,MAAJ,IAAM,IAAI,IAAId,CAAC,IAAEA;AAAA,EAAC,EAAE,CAAC;AAAC;AAAC,SAAS6C,GAAE9C,GAAE,GAAE;AAAC,UAAO,GAAC;AAAA,IAAE,KAAK;AAAE,aAAO,IAAI,IAAIA,CAAC;AAAA,IAAE,KAAK;AAAE,aAAO,MAAM,KAAKA,CAAC;AAAA,EAAC;AAAC,SAAOmB,GAAEnB,CAAC;AAAC;AAA+tO,IAAC+C,IAAEpB,IAAEqB,KAAe,OAAO,SAApB,OAAsC,OAAO,uBAAO,GAAG,KAA3B,UAA6BhC,KAAe,OAAO,MAApB,KAAwBC,KAAe,OAAO,MAApB,KAAwBgC,KAAe,OAAO,QAApB,OAAoC,MAAM,cAAf,UAAuC,OAAO,UAApB,KAA4Bb,KAAEY,KAAE,uBAAO,IAAI,eAAe,MAAID,KAAE,CAAA,GAAI,eAAe,IAAE,IAAGA,KAAGvC,KAAEwC,KAAE,uBAAO,IAAI,iBAAiB,IAAE,sBAAqB3C,KAAE2C,KAAE,uBAAO,IAAI,aAAa,IAAE,kBAA6E7C,KAAE,EAAC,GAAE,iBAAgB,GAAE,gDAA+C,GAAE,yDAAwD,GAAE,SAASH,GAAE;AAAC,SAAM,yHAAuHA;AAAC,GAAE,GAAE,qHAAoH,GAAE,qCAAoC,GAAE,gEAA+D,GAAE,mEAAkE,GAAE,4FAA2F,GAAE,6EAA4E,IAAG,wCAAuC,IAAG,4DAA2D,IAAG,4DAA2D,IAAG,8CAA6C,IAAG,uEAAsE,IAAG,SAASA,GAAE;AAAC,SAAM,+CAA6CA;AAAC,GAAE,IAAG,uCAAsC,IAAG,SAASA,GAAE;AAAC,SAAM,kCAAgCA;AAAC,GAAE,IAAG,SAASA,GAAE;AAAC,SAAM,qBAAmBA,IAAE,oFAAkFA,IAAE;AAAyC,GAAE,IAAG,6EAA4E,IAAG,SAASA,GAAE;AAAC,SAAM,wJAAsJA,IAAE;AAAG,GAAE,IAAG,SAASA,GAAE;AAAC,SAAM,qCAAmCA;AAAC,GAAE,IAAG,SAASA,GAAE;AAAC,SAAM,sCAAoCA;AAAC,GAAE,IAAG,wFAAuF,GAAEO,KAAE,KAAG,OAAO,UAAU,aAAYI,KAAgB,OAAO,UAApB,OAA6B,QAAQ,UAAQ,QAAQ,UAAiB,OAAO,0BAAhB,SAAsC,SAASX,GAAE;AAAC,SAAO,OAAO,oBAAoBA,CAAC,EAAE,OAAO,OAAO,sBAAsBA,CAAC,CAAC;AAAC,IAAE,OAAO,qBAAoBoB,KAAG,OAAO,6BAA2B,SAASpB,GAAE;AAAC,MAAI,IAAE,CAAA;AAAG,SAAOW,GAAGX,CAAC,EAAE,QAAS,SAAS,GAAE;AAAC,MAAE,CAAC,IAAE,OAAO,yBAAyBA,GAAE,CAAC;AAAA,EAAC,CAAC,GAAG;AAAC,GAAEyB,KAAG,CAAA,GAAGkB,KAAG,EAAC,KAAI,SAAS3C,GAAE,GAAE;AAAC,MAAG,MAAIK,GAAE,QAAOL;AAAE,MAAIC,IAAEiB,GAAElB,CAAC;AAAE,MAAG,CAACY,GAAEX,GAAE,CAAC,EAAE,QAAO,SAASD,GAAEI,GAAEE,GAAE;AAAC,QAAIL,GAAEC,IAAEqC,GAAEnC,GAAEE,CAAC;AAAE,WAAOJ,IAAE,WAAUA,IAAEA,EAAE,SAAcD,IAAEC,EAAE,SAAZ,QAA2BD,MAAT,SAAW,SAAOA,EAAE,KAAKD,EAAE,CAAC,IAAE;AAAA,EAAM,EAAEA,GAAEC,GAAE,CAAC;AAAE,MAAIC,IAAED,EAAE,CAAC;AAAE,SAAOD,EAAE,KAAG,CAACM,GAAEJ,CAAC,IAAEA,IAAEA,MAAIoC,GAAEtC,EAAE,GAAE,CAAC,KAAGyC,GAAEzC,CAAC,GAAEA,EAAE,EAAE,CAAC,IAAE0C,GAAE1C,EAAE,EAAE,GAAEE,GAAEF,CAAC,KAAGE;AAAC,GAAE,KAAI,SAASF,GAAE,GAAE;AAAC,SAAO,KAAKkB,GAAElB,CAAC;AAAC,GAAE,SAAQ,SAASA,GAAE;AAAC,SAAO,QAAQ,QAAQkB,GAAElB,CAAC,CAAC;AAAC,GAAE,KAAI,SAASA,GAAE,GAAE,GAAE;AAAC,MAAIC,IAAEsC,GAAErB,GAAElB,CAAC,GAAE,CAAC;AAAE,MAAkBC,GAAE,IAAI,QAAOA,EAAE,IAAI,KAAKD,EAAE,GAAE,CAAC,GAAE;AAAG,MAAG,CAACA,EAAE,GAAE;AAAC,QAAIE,IAAEoC,GAAEpB,GAAElB,CAAC,GAAE,CAAC,GAAEJ,IAAiBM,IAAEG,EAAC;AAAE,QAAGT,KAAGA,EAAE,MAAI,EAAE,QAAOI,EAAE,EAAE,CAAC,IAAE,GAAEA,EAAE,EAAE,CAAC,IAAE,IAAG;AAAG,QAAGe,GAAE,GAAEb,CAAC,MAAa,MAAT,UAAYU,GAAEZ,EAAE,GAAE,CAAC,GAAG,QAAM;AAAG,IAAAyC,GAAEzC,CAAC,GAAEwC,GAAExC,CAAC;AAAA,EAAC;AAAC,SAAOA,EAAE,EAAE,CAAC,MAAI,MAAa,MAAT,UAAY,KAAKA,EAAE,MAAI,OAAO,MAAM,CAAC,KAAG,OAAO,MAAMA,EAAE,EAAE,CAAC,CAAC,MAAIA,EAAE,EAAE,CAAC,IAAE,GAAEA,EAAE,EAAE,CAAC,IAAE,KAAI;AAAE,GAAE,gBAAe,SAASA,GAAE,GAAE;AAAC,SAAgBsC,GAAEtC,EAAE,GAAE,CAAC,MAAhB,UAAmB,KAAKA,EAAE,KAAGA,EAAE,EAAE,CAAC,IAAE,IAAGyC,GAAEzC,CAAC,GAAEwC,GAAExC,CAAC,KAAG,OAAOA,EAAE,EAAE,CAAC,GAAEA,EAAE,KAAG,OAAOA,EAAE,EAAE,CAAC,GAAE;AAAE,GAAE,0BAAyB,SAASA,GAAE,GAAE;AAAC,MAAI,IAAEkB,GAAElB,CAAC,GAAEC,IAAE,QAAQ,yBAAyB,GAAE,CAAC;AAAE,SAAOA,KAAE,EAAC,UAAS,IAAG,cAAiBD,EAAE,MAAN,KAAoB,MAAX,UAAa,YAAWC,EAAE,YAAW,OAAM,EAAE,CAAC,EAAC;AAAG,GAAE,gBAAe,WAAU;AAACD,EAAAA,GAAE,EAAE;AAAC,GAAE,gBAAe,SAASA,GAAE;AAAC,SAAO,OAAO,eAAeA,EAAE,CAAC;AAAC,GAAE,gBAAe,WAAU;AAACA,EAAAA,GAAE,EAAE;AAAC,EAAC,GAAE4C,KAAG,CAAA;AAAwGA,GAAG,iBAAe,SAASxC,GAAEE,GAAE;AAAC,SAAqB,QAAQ,IAAI,aAA3B,gBAAqC,MAAM,SAASA,CAAC,CAAC,KAAGN,GAAE,EAAE,GAAE4C,GAAG,IAAI,KAAK,MAAKxC,GAAEE,GAAE,MAAM;AAAC,GAAEsC,GAAG,MAAI,SAASxC,GAAEE,GAAEL,GAAE;AAAC,SAAqB,QAAQ,IAAI,aAA3B,gBAAgDK,MAAX,YAAc,MAAM,SAASA,CAAC,CAAC,KAAGN,GAAE,EAAE,GAAE2C,GAAG,IAAI,KAAK,MAAKvC,EAAE,CAAC,GAAEE,GAAEL,GAAEG,EAAE,CAAC,CAAC;AAAC;AAAK,IAAC8C,KAAG,2BAAU;AAAC,WAAS,EAAE9C,GAAE;AAAC,QAAIH,IAAE;AAAK,SAAK,IAAEgD,IAAE,KAAK,IAAE,IAAG,KAAK,UAAQ,SAAS7C,GAAEF,GAAEN,GAAE;AAAC,UAAe,OAAOQ,KAAnB,cAAkC,OAAOF,KAAnB,YAAqB;AAAC,YAAIU,IAAEV;AAAE,QAAAA,IAAEE;AAAE,YAAIS,IAAEZ;AAAE,eAAO,SAASD,GAAE;AAAC,cAAII,IAAE;AAAK,UAASJ,MAAT,WAAaA,IAAEY;AAAG,mBAAQN,IAAE,UAAU,QAAOL,IAAE,MAAMK,IAAE,IAAEA,IAAE,IAAE,CAAC,GAAEV,IAAE,GAAEA,IAAEU,GAAEV,IAAI,CAAAK,EAAEL,IAAE,CAAC,IAAE,UAAUA,CAAC;AAAE,iBAAOiB,EAAE,QAAQb,GAAG,SAASA,GAAE;AAAC,gBAAIM;AAAE,oBAAOA,IAAEJ,GAAG,KAAK,MAAMI,GAAE,CAACF,GAAEJ,CAAC,EAAE,OAAOC,CAAC,CAAC;AAAA,UAAC,CAAC;AAAA,QAAE;AAAA,MAAC;AAAC,UAAIa;AAAE,UAAe,OAAOZ,KAAnB,cAAsBF,GAAE,CAAC,GAAWJ,MAAT,UAAwB,OAAOA,KAAnB,cAAsBI,GAAE,CAAC,GAAEM,GAAEF,CAAC,GAAE;AAAC,YAAIW,IAAEiB,GAAE/B,CAAC,GAAEQ,IAAEiC,GAAEzC,GAAEG,GAAE,MAAM,GAAEM,IAAE;AAAG,YAAG;AAAC,UAAAI,IAAEZ,EAAEO,CAAC,GAAEC,IAAE;AAAA,QAAE,UAAC;AAAQ,UAAAA,IAAEmB,GAAEd,CAAC,IAAEe,GAAEf,CAAC;AAAA,QAAC;AAAC,eAAmB,OAAO,UAApB,OAA6BD,aAAa,UAAQA,EAAE,KAAM,SAASd,GAAE;AAAC,iBAAO4B,GAAEb,GAAEnB,CAAC,GAAEqC,GAAEjC,GAAEe,CAAC;AAAA,QAAC,GAAI,SAASf,GAAE;AAAC,gBAAM6B,GAAEd,CAAC,GAAEf;AAAA,QAAC,CAAC,KAAI4B,GAAEb,GAAEnB,CAAC,GAAEqC,GAAEnB,GAAEC,CAAC;AAAA,MAAE;AAAC,UAAG,CAACX,KAAa,OAAOA,KAAjB,UAAmB;AAAC,aAAaU,IAAEZ,EAAEE,CAAC,OAAf,WAAoBU,IAAEV,IAAGU,MAAIsB,OAAItB,IAAE,SAAQb,EAAE,KAAGoB,GAAEP,GAAE,EAAE,GAAElB,GAAE;AAAC,cAAIsB,IAAE,CAAA,GAAGC,IAAE,CAAA;AAAG,UAAAK,GAAE,SAAS,EAAE,EAAEpB,GAAEU,GAAEI,GAAEC,CAAC,GAAEvB,EAAEsB,GAAEC,CAAC;AAAA,QAAC;AAAC,eAAOL;AAAA,MAAC;AAACd,MAAAA,GAAE,IAAGI,CAAC;AAAA,IAAC,GAAE,KAAK,qBAAmB,SAASJ,GAAEI,GAAE;AAAC,UAAe,OAAOJ,KAAnB,WAAqB,QAAO,SAASI,GAAE;AAAC,iBAAQE,IAAE,UAAU,QAAOJ,IAAE,MAAMI,IAAE,IAAEA,IAAE,IAAE,CAAC,GAAE,IAAE,GAAE,IAAEA,GAAE,IAAI,CAAAJ,EAAE,IAAE,CAAC,IAAE,UAAU,CAAC;AAAE,eAAOD,EAAE,mBAAmBG,GAAG,SAASA,GAAE;AAAC,iBAAOJ,EAAE,MAAM,QAAO,CAACI,CAAC,EAAE,OAAOF,CAAC,CAAC;AAAA,QAAC,CAAC;AAAA,MAAE;AAAE,UAAII,GAAEJ,GAAEN,IAAEK,EAAE,QAAQD,GAAEI,GAAG,SAASJ,GAAEI,GAAE;AAAC,QAAAE,IAAEN,GAAEE,IAAEE;AAAA,MAAC;AAAI,aAAmB,OAAO,UAApB,OAA6BR,aAAa,UAAQA,EAAE,KAAM,SAASI,GAAE;AAAC,eAAM,CAACA,GAAEM,GAAEJ,CAAC;AAAA,MAAC,CAAC,IAAG,CAACN,GAAEU,GAAEJ,CAAC;AAAA,IAAC,GAAa,OAAsBE,GAAE,cAAnC,aAAgD,KAAK,cAAcA,EAAE,UAAU,GAAa,OAAsBA,GAAE,cAAnC,aAAgD,KAAK,cAAcA,EAAE,UAAU;AAAA,EAAC;AAAC,MAAIF,IAAE,EAAE;AAAU,SAAOA,EAAE,cAAY,SAASD,GAAE;AAACK,IAAAA,GAAEL,CAAC,KAAGD,GAAE,CAAC,GAAEI,GAAEH,CAAC,MAAIA,IAAE4C,GAAE5C,CAAC;AAAG,QAAIC,IAAE8B,GAAE,IAAI,GAAEpC,IAAE8C,GAAE,MAAKzC,GAAE,MAAM;AAAE,WAAOL,EAAES,EAAC,EAAE,IAAE,IAAGyB,GAAE5B,CAAC,GAAEN;AAAA,EAAC,GAAEM,EAAE,cAAY,SAASE,GAAEE,GAAE;AAAC,QAAIL,IAAEG,KAAGA,EAAEC,EAAC;AAAE,IAAe,QAAQ,IAAI,aAA3B,iBAAsCJ,KAAGA,EAAE,KAAGD,GAAE,CAAC,GAAEC,EAAE,KAAGD,GAAE,EAAE;AAAG,QAAIE,IAAED,EAAE;AAAE,WAAO2B,GAAE1B,GAAEI,CAAC,GAAE2B,GAAE,QAAO/B,CAAC;AAAA,EAAC,GAAEA,EAAE,gBAAc,SAASF,GAAE;AAAC,SAAK,IAAEA;AAAA,EAAC,GAAEE,EAAE,gBAAc,SAASE,GAAE;AAAC,IAAAA,KAAG,CAAC6C,MAAGjD,GAAE,EAAE,GAAE,KAAK,IAAEI;AAAA,EAAC,GAAEF,EAAE,eAAa,SAASF,GAAEM,GAAE;AAAC,QAAIL;AAAE,SAAIA,IAAEK,EAAE,SAAO,GAAEL,KAAG,GAAEA,KAAI;AAAC,UAAIC,IAAEI,EAAEL,CAAC;AAAE,UAAOC,EAAE,KAAK,WAAX,KAA+BA,EAAE,OAAd,WAAiB;AAAC,QAAAF,IAAEE,EAAE;AAAM;AAAA,MAAK;AAAA,IAAC;AAAC,IAAAD,IAAE,OAAKK,IAAEA,EAAE,MAAML,IAAE,CAAC;AAAG,QAAIL,IAAE4B,GAAE,SAAS,EAAE;AAAE,WAAOpB,GAAEJ,CAAC,IAAEJ,EAAEI,GAAEM,CAAC,IAAE,KAAK,QAAQN,GAAG,SAASA,GAAE;AAAC,aAAOJ,EAAEI,GAAEM,CAAC;AAAA,IAAC,CAAC;AAAA,EAAE,GAAE;AAAC,EAAC,GAAG6C,KAAG,oBAAID,MAAGE,KAAGD,GAAG,SAAgIE,KAAG,gBAAAF,GAAG,YAAY,KAAKA,EAAE,GAAEG,KAAG,gBAAAH,GAAG,YAAY,KAAKA,EAAE;ACGtljB,SAASI,GAAgBC,GAAKC,GAAKC,GAAO;AACxC,SAAID,KAAOD,IACT,OAAO,eAAeA,GAAKC,GAAK;AAAA,IAC9B,OAAOC;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EAChB,CAAK,IAEDF,EAAIC,CAAG,IAAIC,GAGNF;AACT;AAEA,IAAIG,KAAc,oBAAI,QAAO,GACzBC,KAAkB,oBAAI,QAAO,GAC7BC,KAAW,oBAAI,QAAO,GACtBC,KAAc,oBAAI,QAAO,GACzBC,KAAY,oBAAI,QAAO,GACvBC,KAAa,oBAAI,QAAO,GACxBC,KAAa,oBAAI,QAAO;AAE5B,SAASC,GAAUC,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASG,GAAgBC,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKgE,GAAU,OAAOQ,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAYR,GAAU,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAK3hB,IAAIE,KAAe,MAAM;AACvB,MAAIC,IAAS;AAAA,IACX,UAAU,CAAA;AAAA,IACV,YAAY,CAAA;AAAA,IACZ,WAAW;AAAA,IACX,OAAO;AAAA,IACP,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,IAAC;AAAA,IACjB,OAAO,CAAAC,MAAM;AACX,eAASC,KAAOC,EAAO,SAASH,CAAM;AACpC,QAAAI,GAAQ,UAAUF,GAAKD,CAAE;AAG3B,eAASI,KAAQF,EAAO,UAAUH,CAAM;AACtC,QAAAM,GAAS,UAAUD,GAAMJ,CAAE;AAG7B,eAASM,KAASJ,EAAO,UAAUH,CAAM;AACvC,QAAAQ,GAAS,UAAUD,GAAON,CAAE;AAG9B,UAAIQ,IAAgB1B,GAAY,IAAIiB,CAAM,KAAK,CAAA,GAC3CU,IAAmB1B,GAAgB,IAAIgB,CAAM,KAAK,oBAAI,IAAG,GACzDW,GACAC,GAEAC,IAAM,CAAAC,MAAQ;AAChB,YAAIA,GAAM;AACR,cAAIjC,IAAMiC,EAAK,KAAK,GAAG;AAEvB,UAAKF,EAAc,IAAI/B,CAAG,MACxB+B,EAAc,IAAI/B,CAAG,GACrB8B,EAAW,KAAKG,CAAI;AAAA,QAExB;AAAA,MACF;AAEA,UAAIC,EAAK,0BAA0Bd,CAAE,GAAG;AACtC,QAAAU,IAAa,CAAA,GACbC,IAAgB,oBAAI,IAAG;AAEvB,iBAASE,KAAQL,GAAe;AAC9B,cAAIO,IAAUD,EAAK,UAAUD,GAAMb,CAAE;AACrC,UAAAY,EAAIG,CAAO;AAAA,QACb;AAAA,MACF;AACE,QAAAL,IAAaF,GACbG,IAAgBF;AAGlB,UAAIO,IAAgBC,GAAcjB,CAAE;AAEpC,eAASkB,KAASF;AAChB,QAAAJ,EAAIM,CAAK;AAGX,MAAApC,GAAY,IAAIiB,GAAQW,CAAU,GAClC3B,GAAgB,IAAIgB,GAAQY,CAAa,GACzCQ,EAAW,UAAUpB,GAAQC,CAAE,GAC/BD,EAAO,WAAW,KAAKC,CAAE,GACzBE,EAAO,UAAUH,CAAM,GAEnBC,EAAG,SAAS,oBACdD,EAAO,QAAQ,OAGZf,GAAS,IAAIe,CAAM,MACtBf,GAAS,IAAIe,GAAQ,EAAI,GACzB,QAAQ,UAAU,KAAK,MAAM;AAC3B,QAAAf,GAAS,IAAIe,GAAQ,EAAK,GAC1BA,EAAO,SAAQ,GACfA,EAAO,aAAa,CAAA;AAAA,MACtB,CAAC;AAAA,IAEL;AAAA,IACA,SAAS,CAACnB,GAAKC,MAAU;AACvB,UAAI;AAAA,QACF,WAAAuC;AAAA,MACR,IAAUrB;AAEJ,UAAIqB;AACF,YAAIC,EAAM,WAAWD,CAAS;AAC5B,UAAAD,EAAW,SAASpB,GAAQ;AAAA,YAC1B,CAACnB,CAAG,GAAGC;AAAA,UACnB,GAAa;AAAA,YACD,OAAOyC,EAAK;AAAA,YACZ,OAAO;AAAA,UACnB,CAAW;AAAA,aACI;AACL,cAAIC,IAAQ5B,GAAgBA,GAAgB,IAAIO,EAAO,MAAMH,CAAM,KAAK,EAAE,GAAG,IAAI;AAAA,YAC/E,CAACnB,CAAG,GAAGC;AAAA,UACnB,CAAW;AAED,UAAAkB,EAAO,QAAQwB,GAEVvC,GAAS,IAAIe,CAAM,KACtBA,EAAO,SAAQ;AAAA,QAEnB;AAAA,IAEJ;AAAA,IACA,gBAAgB,CAAAyB,MAAQ;AACtB,UAAI;AAAA,QACF,WAAAJ;AAAA,MACR,IAAUrB;AAEJ,MAAIqB,KAAaC,EAAM,YAAYD,CAAS,KAC1CD,EAAW,OAAOpB,GAAQ;AAAA,QACxB,MAAAyB;AAAA,QACA,SAAS;AAAA,MACnB,CAAS;AAAA,IAEL;AAAA,IACA,eAAe,CAAAA,MAAQ;AACrB,UAAI;AAAA,QACF,WAAAJ;AAAA,MACR,IAAUrB;AAEJ,MAAIqB,KAAaC,EAAM,YAAYD,CAAS,KAC1CD,EAAW,OAAOpB,GAAQ;AAAA,QACxB,MAAAyB;AAAA,MACV,CAAS;AAAA,IAEL;AAAA,IACA,gBAAgB,CAAAC,MAAa;AAC3B,UAAI;AAAA,QACF,WAAAL;AAAA,MACR,IAAUrB;AAEJ,MAAIqB,KAAaC,EAAM,WAAWD,CAAS,KACzCD,EAAW,OAAOpB,GAAQ;AAAA,QACxB,SAAS0B,MAAc;AAAA,MACjC,CAAS;AAAA,IAEL;AAAA,IACA,aAAa,MAAM;AACjB,UAAI;AAAA,QACF,WAAAL;AAAA,MACR,IAAUrB;AAEJ,aAAIqB,IACKM,EAAK,SAAS3B,GAAQqB,CAAS,IAGjC,CAAA;AAAA,IACT;AAAA,IACA,aAAa,MAAM;AACjB,MAAAD,EAAW,WAAWpB,GAAQ;AAAA,QAC5B,QAAQ;AAAA,MAChB,CAAO;AAAA,IACH;AAAA,IACA,gBAAgB,CAAA4B,MAAY;AAC1B,MAAAR,EAAW,eAAepB,GAAQ4B,CAAQ;AAAA,IAC5C;AAAA,IACA,YAAY,CAAAC,MAAQ;AAClB,MAAAT,EAAW,YAAYpB,GAAQ6B,CAAI;AAAA,IACrC;AAAA,IACA,YAAY,CAAAC,MAAQ;AAClB,UAAI;AAAA,QACF,WAAAT;AAAA,QACA,OAAAG;AAAA,MACR,IAAUxB;AAEJ,UAAIqB,GAAW;AACb,YAAIG,GAAO;AACT,cAAIK,IAAOjC,GAAgB;AAAA,YACzB,MAAAkC;AAAA,UACZ,GAAaN,CAAK;AAER,UAAAJ,EAAW,YAAYpB,GAAQ6B,CAAI;AAAA,QACrC;AACE,UAAAT,EAAW,WAAWpB,GAAQ8B,CAAI;AAGpC,QAAA9B,EAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAAA,IACA,eAAe,CAAA+B,MAAS;AACtB,UAAI,CAACF,GAAMf,CAAI,IAAIiB;AAEnB,UAAIR,CAAAA,EAAK,OAAOM,CAAI,GAKpB;AAAA,YAAIG,EAAQ,UAAUH,CAAI,KAAKA,EAAK,SAAS,WAAW,GAAG;AACzD,cAAII,IAAQ;AAAA,YACV,MAAM;AAAA,UAChB;AACQ,UAAAb,EAAW,YAAYpB,GAAQiC,GAAO;AAAA,YACpC,IAAInB,EAAK,OAAO,CAAC;AAAA,YACjB,OAAO;AAAA,UACjB,CAAS;AACD;AAAA,QACF;AAQA,iBALIoB,IAAoB/B,EAAO,SAAS0B,CAAI,IAAI,KAAQG,EAAQ,UAAUH,CAAI,MAAM7B,EAAO,SAAS6B,CAAI,KAAKA,EAAK,SAAS,WAAW,KAAKN,EAAK,OAAOM,EAAK,SAAS,CAAC,CAAC,KAAK7B,EAAO,SAAS6B,EAAK,SAAS,CAAC,CAAC,IAGxMzG,IAAI,GAECE,IAAI,GAAGA,IAAIuG,EAAK,SAAS,QAAQvG,KAAKF,KAAK;AAClD,cAAI+G,IAAcR,EAAK,IAAI3B,GAAQc,CAAI;AACvC,cAAIS,CAAAA,EAAK,OAAOY,CAAW,GAC3B;AAAA,gBAAIC,IAASP,EAAK,SAASvG,CAAC,GACxB+G,IAAOF,EAAY,SAAS/G,IAAI,CAAC,GACjCkH,IAAShH,MAAMuG,EAAK,SAAS,SAAS,GACtCU,IAAiBhB,EAAK,OAAOa,CAAM,KAAKJ,EAAQ,UAAUI,CAAM,KAAKpC,EAAO,SAASoC,CAAM;AAK/F,gBAAIG,MAAmBL;AACrB,cAAAd,EAAW,YAAYpB,GAAQ;AAAA,gBAC7B,IAAIc,EAAK,OAAO1F,CAAC;AAAA,gBACjB,OAAO;AAAA,cACnB,CAAW,GACDA;AAAA,qBACS4G,EAAQ,UAAUI,CAAM;AAEjC,kBAAIpC,EAAO,SAASoC,CAAM;AACxB,oBAAIC,KAAQ,QAAQ,CAACd,EAAK,OAAOc,CAAI,GAAG;AACtC,sBAAIG,IAAW;AAAA,oBACb,MAAM;AAAA,kBACtB;AACc,kBAAApB,EAAW,YAAYpB,GAAQwC,GAAU;AAAA,oBACvC,IAAI1B,EAAK,OAAO1F,CAAC;AAAA,oBACjB,OAAO;AAAA,kBACvB,CAAe,GACDA;AAAA,gBACF,WAAWkH,GAAQ;AACjB,sBAAIG,IAAY;AAAA,oBACd,MAAM;AAAA,kBACtB;AACc,kBAAArB,EAAW,YAAYpB,GAAQyC,GAAW;AAAA,oBACxC,IAAI3B,EAAK,OAAO1F,IAAI,CAAC;AAAA,oBACrB,OAAO;AAAA,kBACvB,CAAe,GACDA;AAAA,gBACF;AAAA;AAAA;AAIF,cAAIiH,KAAQ,QAAQd,EAAK,OAAOc,CAAI,MAC9Bd,EAAK,OAAOa,GAAQC,GAAM;AAAA,gBAC5B,OAAO;AAAA,cACrB,CAAa,KACCjB,EAAW,WAAWpB,GAAQ;AAAA,gBAC5B,IAAIc,EAAK,OAAO1F,CAAC;AAAA,gBACjB,OAAO;AAAA,cACvB,CAAe,GACDA,OACSiH,EAAK,SAAS,MACvBjB,EAAW,YAAYpB,GAAQ;AAAA,gBAC7B,IAAIc,EAAK,OAAO1F,IAAI,CAAC;AAAA,gBACrB,OAAO;AAAA,cACvB,CAAe,GACDA,OACSgH,EAAO,SAAS,OACzBhB,EAAW,YAAYpB,GAAQ;AAAA,gBAC7B,IAAIc,EAAK,OAAO1F,CAAC;AAAA,gBACjB,OAAO;AAAA,cACvB,CAAe,GACDA;AAAA;AAAA,QAIR;AAAA;AAAA,IACF;AAAA,IACA,YAAY,CAAAyD,MAAO;AACjB,UAAI;AAAA,QACF,WAAAwC;AAAA,MACR,IAAUrB;AAEJ,UAAIqB;AACF,YAAIC,EAAM,WAAWD,CAAS;AAC5B,UAAAD,EAAW,WAAWpB,GAAQnB,GAAK;AAAA,YACjC,OAAO0C,EAAK;AAAA,YACZ,OAAO;AAAA,UACnB,CAAW;AAAA,aACI;AACL,cAAIC,IAAQ5B,GAAgB,CAAA,GAAIO,EAAO,MAAMH,CAAM,KAAK,EAAE;AAE1D,iBAAOwB,EAAM3C,CAAG,GAChBmB,EAAO,QAAQwB,GAEVvC,GAAS,IAAIe,CAAM,KACtBA,EAAO,SAAQ;AAAA,QAEnB;AAAA,IAEJ;AAAA,EACJ;AACE,SAAOA;AACT,GAKIkB,KAAgB,CAAAjB,MAAM;AACxB,UAAQA,EAAG,MAAI;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,YACH;AACE,UAAI;AAAA,QACF,MAAAa;AAAA,MACV,IAAYb;AACJ,aAAOc,EAAK,OAAOD,CAAI;AAAA,IACzB;AAAA,IAEF,KAAK,eACH;AACE,UAAI;AAAA,QACF,MAAAe;AAAA,QACA,MAAMa;AAAA,MAChB,IAAYzC,GACA0C,IAAS5B,EAAK,OAAO2B,CAAM,GAC3BE,IAAcrB,EAAK,OAAOM,CAAI,IAAI,CAAA,IAAK,MAAM,KAAKF,EAAK,MAAME,CAAI,GAAG,CAAAgB,MAAS;AAC/E,YAAI,CAAA,EAAGvG,CAAC,IAAIuG;AACZ,eAAOH,EAAO,OAAOpG,CAAC;AAAA,MACxB,CAAC;AACD,aAAO,CAAC,GAAGqG,GAAQ,GAAGC,CAAW;AAAA,IACnC;AAAA,IAEF,KAAK,cACH;AACE,UAAI;AAAA,QACF,MAAME;AAAA,MAChB,IAAY7C,GACA8C,IAAYhC,EAAK,UAAU+B,CAAM,GACjCE,IAAejC,EAAK,SAAS+B,CAAM;AACvC,aAAO,CAAC,GAAGC,GAAWC,CAAY;AAAA,IACpC;AAAA,IAEF,KAAK,aACH;AACE,UAAI;AAAA,QACF,MAAMC;AAAA,QACN,SAAAjC;AAAA,MACV,IAAYf;AAEJ,UAAIc,EAAK,OAAOkC,GAAQjC,CAAO;AAC7B,eAAO,CAAA;AAGT,UAAIkC,IAAe,CAAA,GACfC,IAAe,CAAA;AAEnB,eAASC,KAAYrC,EAAK,UAAUkC,CAAM,GAAG;AAC3C,YAAI3G,IAAIyE,EAAK,UAAUqC,GAAUnD,CAAE;AACnC,QAAAiD,EAAa,KAAK5G,CAAC;AAAA,MACrB;AAEA,eAAS+G,KAAatC,EAAK,UAAUC,CAAO,GAAG;AAC7C,YAAIsC,IAAKvC,EAAK,UAAUsC,GAAWpD,CAAE;AAErC,QAAAkD,EAAa,KAAKG,CAAE;AAAA,MACtB;AAEA,UAAIC,IAAYJ,EAAaA,EAAa,SAAS,CAAC,GAChDK,IAAWxC,EAAQA,EAAQ,SAAS,CAAC,GACrCyC,IAAaF,EAAU,OAAOC,CAAQ;AAC1C,aAAO,CAAC,GAAGN,GAAc,GAAGC,GAAcM,CAAU;AAAA,IACtD;AAAA,IAEF,KAAK,eACH;AACE,UAAI;AAAA,QACF,MAAMC;AAAA,MAChB,IAAYzD,GAEA0D,IAAa5C,EAAK,UAAU2C,CAAM;AAEtC,aAAO,CAAC,GAAGC,CAAU;AAAA,IACvB;AAAA,IAEF,KAAK,cACH;AACE,UAAI;AAAA,QACF,MAAMC;AAAA,MAChB,IAAY3D,GAEA4D,IAAU9C,EAAK,OAAO6C,CAAM,GAE5BE,IAAW/C,EAAK,KAAK6C,CAAM;AAC/B,aAAO,CAAC,GAAGC,GAASC,CAAQ;AAAA,IAC9B;AAAA,IAEF;AAEI,aAAO,CAAA;AAAA,EAEf;AACA;AAEA,SAASC,GAA8BjE,GAAQkE,GAAU;AACvD,MAAIlE,KAAU,KAAM,QAAO,CAAA;AAC3B,MAAID,IAAS,CAAA,GACToE,IAAa,OAAO,KAAKnE,CAAM,GAC/BjB,GAAKvD;AAET,OAAKA,IAAI,GAAGA,IAAI2I,EAAW,QAAQ3I;AAEjC,IADAuD,IAAMoF,EAAW3I,CAAC,GACd,EAAA0I,EAAS,QAAQnF,CAAG,KAAK,OAC7BgB,EAAOhB,CAAG,IAAIiB,EAAOjB,CAAG;AAG1B,SAAOgB;AACT;AAEA,SAASqE,GAAyBpE,GAAQkE,GAAU;AAClD,MAAIlE,KAAU,KAAM,QAAO,CAAA;AAC3B,MAAID,IAASkE,GAA8BjE,GAAQkE,CAAQ,GACvDnF,GAAKvD;AAET,MAAI,OAAO,uBAAuB;AAChC,QAAI6I,IAAmB,OAAO,sBAAsBrE,CAAM;AAE1D,SAAKxE,IAAI,GAAGA,IAAI6I,EAAiB,QAAQ7I;AAEvC,MADAuD,IAAMsF,EAAiB7I,CAAC,GACpB,EAAA0I,EAAS,QAAQnF,CAAG,KAAK,MACxB,OAAO,UAAU,qBAAqB,KAAKiB,GAAQjB,CAAG,MAC3DgB,EAAOhB,CAAG,IAAIiB,EAAOjB,CAAG;AAAA,EAE5B;AAEA,SAAOgB;AACT;AAeA,IAAIuE,KAAuB,SAA8BC,GAAK;AAC5D,MAAIC,IAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,IAC5EC,IAAQ,CAACD,GACTE,IAAaF,IAAQG,GAAsBJ,CAAG,IAAIA,GAClDK,IAAOC,EAAc,MACrBC,IAAQD,EAAc,MACtBE,IAAW,GAEXC,IAAO,MAEPC,IAAW;AAEf,WAASC,KAAQR,GAAY;AAC3B,QAAIS,IAAOD,EAAK,YAAY,CAAC;AAC7B,QAAI,CAACC,EAAM;AACX,QAAIC,IAAOC,GAAiBH,GAAMC,CAAI;AA2BtC,QA1BA,CAACP,GAAME,CAAK,IAAIL,IAAQ,CAACK,GAAOM,CAAI,IAAI,CAACA,GAAMR,CAAI,GAE/CU,GAAWV,GAAMC,EAAc,GAAG,KAAKS,GAAWR,GAAOD,EAAc,OAAO,MAC5EJ,IACFO,IAAOO,GAAiBhB,EAAI,UAAU,GAAGQ,CAAQ,CAAC,IAElDC,IAAOO,GAAiBhB,EAAI,UAAU,GAAGA,EAAI,SAASQ,CAAQ,CAAC,GAG7D,CAACC,MAGHM,GAAWV,GAAMC,EAAc,EAAE,KAAKS,GAAWR,GAAOD,EAAc,EAAE,MACtEI,MAAa,OACfA,IAAW,CAACA,IAERR,IACFQ,IAAW,KAEXA,IAAWO,GAAuBjB,EAAI,UAAU,GAAGA,EAAI,SAASQ,CAAQ,CAAC,GAIzE,CAACE,MAGHL,MAASC,EAAc,QAAQC,MAAUD,EAAc,QAAQY,GAAeb,GAAME,CAAK;AAC3F;AAGF,IAAAC,KAAYG,EAAK;AAAA,EACnB;AAEA,SAAOH,KAAY;AACrB,GACIW,KAAQ,MACRC,KAAc,syCACdC,KAAY,mBAKZC,KAAkB,SAAyB7D,GAAM;AAKnD,WAJIwC,IAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,IAC5EsB,IAAO,GACPC,IAAU,IAEP/D,EAAK,SAAS,KAAG;AACtB,QAAIgE,IAAW1B,GAAqBtC,GAAMwC,CAAK,GAC3C,CAACU,GAAMe,CAAS,IAAIC,GAAyBlE,GAAMgE,GAAUxB,CAAK;AAEtE,QAAI2B,GAAgBjB,GAAMe,GAAWzB,CAAK;AACxC,MAAAuB,IAAU,IACVD,KAAQE;AAAA,aACC,CAACD;AACV,MAAAD,KAAQE;AAAA;AAER;AAGF,IAAAhE,IAAOiE;AAAA,EACT;AAEA,SAAOH;AACT,GAMII,KAA2B,CAAC3B,GAAKuB,GAAMtB,MAAU;AACnD,MAAIA,GAAO;AACT,QAAI4B,IAAK7B,EAAI,SAASuB;AACtB,WAAO,CAACvB,EAAI,MAAM6B,GAAI7B,EAAI,MAAM,GAAGA,EAAI,MAAM,GAAG6B,CAAE,CAAC;AAAA,EACrD;AAEA,SAAO,CAAC7B,EAAI,MAAM,GAAGuB,CAAI,GAAGvB,EAAI,MAAMuB,CAAI,CAAC;AAC7C,GAMIK,KAAkB,SAASA,EAAgBjB,GAAMe,GAAW;AAC9D,MAAIzB,IAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAEhF,MAAIkB,GAAM,KAAKR,CAAI;AACjB,WAAO;AAKT,MAAIU,GAAU,KAAKV,CAAI,GAAG;AACxB,QAAIc,IAAW1B,GAAqB2B,GAAWzB,CAAK,GAChD,CAAC6B,GAAUC,CAAa,IAAIJ,GAAyBD,GAAWD,GAAUxB,CAAK;AAEnF,QAAI2B,EAAgBE,GAAUC,GAAe9B,CAAK;AAChD,aAAO;AAAA,EAEX;AAEA,SAAI,CAAAmB,GAAY,KAAKT,CAAI;AAK3B,GAMIP,KAAwB,WAAgCJ,GAAK;AAG/D,WAFIgC,IAAMhC,EAAI,SAAS,GAEd/I,IAAI,GAAGA,IAAI+I,EAAI,QAAQ/I,KAAK;AACnC,QAAIgL,IAAQjC,EAAI,OAAOgC,IAAM/K,CAAC;AAE9B,QAAIiL,GAAeD,EAAM,WAAW,CAAC,CAAC,GAAG;AACvC,UAAIE,IAAQnC,EAAI,OAAOgC,IAAM/K,IAAI,CAAC;AAElC,UAAImL,GAAgBD,EAAM,WAAW,CAAC,CAAC,GAAG;AACxC,cAAMA,IAAQF,GACdhL;AACA;AAAA,MACF;AAAA,IACF;AAEA,UAAMgL;AAAA,EACR;AACF,GAOIG,KAAkB,CAAAC,MACbA,KAAY,SAAUA,KAAY,OASvCH,KAAiB,CAAAG,MACZA,KAAY,SAAUA,KAAY,OAGvC/B;AAgBDA,MAAkBA,IAAgB,CAAA;AAErC,IAAIgC,KAAW,+nHACXC,KAAY,mJACZC,KAAgB,gmDAChBC,KAAM,kCACNC,KAAM,kCACNC,KAAM,kCACNC,KAAO,k2EACPC,KAAQ,2kKACRC,KAAY,syBAEZhC,KAAmB,CAACH,GAAMC,MAAS;AACrC,MAAIC,IAAOP,EAAc;AAEzB,SAAIK,EAAK,OAAO2B,EAAQ,MAAM,OAC5BzB,KAAQP,EAAc,SAGpBM,MAAS,SACXC,KAAQP,EAAc,MAGpBM,KAAQ,UAAWA,KAAQ,WAC7BC,KAAQP,EAAc,KAGpBK,EAAK,OAAO4B,EAAS,MAAM,OAC7B1B,KAAQP,EAAc,UAGpBK,EAAK,OAAO6B,EAAa,MAAM,OACjC3B,KAAQP,EAAc,cAGpBK,EAAK,OAAO8B,EAAG,MAAM,OACvB5B,KAAQP,EAAc,IAGpBK,EAAK,OAAO+B,EAAG,MAAM,OACvB7B,KAAQP,EAAc,IAGpBK,EAAK,OAAOgC,EAAG,MAAM,OACvB9B,KAAQP,EAAc,IAGpBK,EAAK,OAAOiC,EAAI,MAAM,OACxB/B,KAAQP,EAAc,KAGpBK,EAAK,OAAOkC,EAAK,MAAM,OACzBhC,KAAQP,EAAc,MAGpBK,EAAK,OAAOmC,EAAS,MAAM,OAC7BjC,KAAQP,EAAc,UAGjBO;AACT;AAEA,SAASE,GAAW7H,GAAGb,GAAG;AACxB,UAAQa,IAAIb,OAAO;AACrB;AAEA,IAAI0K,KAAmB;AAAA;AAAA,EACvB,CAACzC,EAAc,GAAGA,EAAc,IAAIA,EAAc,IAAIA,EAAc,KAAKA,EAAc,GAAG;AAAA;AAAA,EAC1F,CAACA,EAAc,KAAKA,EAAc,GAAGA,EAAc,IAAIA,EAAc,CAAC;AAAA;AAAA,EACtE,CAACA,EAAc,MAAMA,EAAc,GAAGA,EAAc,CAAC;AAAA;AAAA,EACrD,CAACA,EAAc,KAAKA,EAAc,SAASA,EAAc,GAAG;AAAA;AAAA,EAC5D,CAACA,EAAc,KAAKA,EAAc,WAAW;AAAA;AAAA,EAC7C,CAACA,EAAc,SAASA,EAAc,GAAG;AAAA;AAAA,EACzC,CAACA,EAAc,KAAKA,EAAc,OAAO;AAAA;AAAA,EACzC,CAACA,EAAc,IAAIA,EAAc,EAAE;AAAC;AAEpC,SAASY,GAAeb,GAAME,GAAO;AACnC,SAAOwC,GAAiB,UAAU,CAAA5L,MAAK4J,GAAWV,GAAMlJ,EAAE,CAAC,CAAC,KAAK4J,GAAWR,GAAOpJ,EAAE,CAAC,CAAC,CAAC,MAAM;AAChG;AAEA,IAAI6L,KAAiB,q6IAEjBhC,KAAmB,CAAAhB,MACdA,EAAI,OAAOgD,EAAc,MAAM,IAGpCC,KAAY,gCAEZhC,KAAyB,CAAAjB,MAAO;AAClC,MAAIkD,IAAQlD,EAAI,MAAMiD,EAAS;AAE/B,MAAIC,MAAU;AACZ,WAAO;AAGP,MAAIC,IAASD,EAAM,CAAC,EAAE,SAAS;AAC/B,SAAOC,IAAS,MAAM;AAE1B,GAMIC,KAAY,CAAA3I,MACP7D,GAAc6D,CAAK,KAAK6C,EAAK,WAAW7C,EAAM,QAAQ,KAAK,CAACqB,EAAO,SAASrB,CAAK,GAGtFkD,IAAU;AAAA;AAAA;AAAA;AAAA,EAIZ,WAAWlD,GAAO;AAChB,WAAO7D,GAAc6D,CAAK,KAAK6C,EAAK,WAAW7C,EAAM,QAAQ;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA2I;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc3I,GAAO;AACnB,WAAO,MAAM,QAAQA,CAAK,KAAKA,EAAM,MAAM,CAAA4I,MAAO1F,EAAQ,UAAU0F,CAAG,CAAC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA,EAKA,eAAeC,GAAO;AACpB,WAAOA,EAAM,aAAa;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,SAAuB7I,GAAO8I,GAAY;AACvD,QAAIC,IAAa,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACrF,WAAOJ,GAAU3I,CAAK,KAAKA,EAAM+I,CAAU,MAAMD;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQE,GAASH,GAAO;AACtB,aAAS9I,KAAO8I;AACd,UAAI9I,MAAQ,cAIRiJ,EAAQjJ,CAAG,MAAM8I,EAAM9I,CAAG;AAC5B,eAAO;AAIX,WAAO;AAAA,EACT;AAEF,GAEIkJ,KAAc,CAAC,MAAM,GACrBC,KAAe,CAAC,MAAM;AAE1B,SAASC,GAAU1I,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASyI,GAAgBrI,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAK2M,GAAU,OAAOnI,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAYmI,GAAU,OAAOnI,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAIsI,KAAkB,oBAAI,QAAO,GAC7BhI,IAAS;AAAA;AAAA;AAAA;AAAA,EAIX,MAAMH,GAAQ;AACZ,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,OAAAC,IAAQ;AAAA,MACR,MAAAC,IAAO;AAAA,MACP,IAAApC,IAAKlG,EAAO;AAAA,MACZ,OAAAuH;AAAA,IACN,IAAQa;AAEJ,QAAKlC,GAIL;AAAA,UAAIpF,IAAOX,EAAO,KAAKH,GAAQkG,CAAE,GAC7BqC,IAAUD,MAAS;AAEvB,eAAS,CAAClN,GAAGkB,CAAC,KAAK6D,EAAO,OAAOH,GAAQ;AAAA,QACvC,IAAIc;AAAA,QACJ,OAAAuH;AAAA,QACA,OAAAd;AAAA,QACA,SAAAgB;AAAA,MACN,CAAK;AACC,YAAI,CAAChH,EAAK,OAAOnG,CAAC,KAAK,CAAC2F,EAAK,OAAOD,GAAMxE,CAAC;AACzC,iBAAO,CAAClB,GAAGkB,CAAC;AAAA;AAAA,EAGlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ0D,GAAQnB,GAAKC,GAAO;AAC1B,IAAAkB,EAAO,QAAQnB,GAAKC,CAAK;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMkB,GAAQkG,GAAI;AAChB,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9EI,IAASrI,EAAO,MAAMH,GAAQkG,GAAI;AAAA,MACpC,MAAM;AAAA,IACZ,CAAK,GACGuC,IAAQtI,EAAO,IAAIH,GAAQ,CAAA,CAAE,GAC7B0I,IAAQ;AAAA,MACV,QAAAF;AAAA,MACA,OAAAC;AAAA,IACN,GACQ;AAAA,MACF,UAAA5D,IAAW;AAAA,IACjB,IAAQuD,GACA3L,IAAI,GACJoD;AAEJ,aAASvD,KAAK6D,EAAO,UAAUH,GAAQkI,GAAgBA,GAAgB,CAAA,GAAIE,CAAO,GAAG,IAAI;AAAA,MACvF,IAAIM;AAAA,IACV,CAAK,CAAC,GAAG;AACH,UAAIjM,IAAIoI;AACN;AAGF,MAAIpI,MAAM,MACRoD,IAASvD,IAGXG;AAAA,IACF;AAEA,WAAOoD;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOG,GAAQkG,GAAI;AACjB,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9EI,IAASrI,EAAO,MAAMH,GAAQ,CAAA,CAAE,GAChCyI,IAAQtI,EAAO,MAAMH,GAAQkG,GAAI;AAAA,MACnC,MAAM;AAAA,IACZ,CAAK,GACGwC,IAAQ;AAAA,MACV,QAAAF;AAAA,MACA,OAAAC;AAAA,IACN,GACQ;AAAA,MACF,UAAA5D,IAAW;AAAA,IACjB,IAAQuD,GACA3L,IAAI,GACJoD;AAEJ,aAASvD,KAAK6D,EAAO,UAAUH,GAAQkI,GAAgBA,GAAgB,CAAA,GAAIE,CAAO,GAAG,IAAI;AAAA,MACvF,IAAIM;AAAA,MACJ,SAAS;AAAA,IACf,CAAK,CAAC,GAAG;AACH,UAAIjM,IAAIoI;AACN;AAGF,MAAIpI,MAAM,MACRoD,IAASvD,IAGXG;AAAA,IACF;AAEA,WAAOoD;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,eAAeG,GAAQ;AACrB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAA3G,IAAO;AAAA,IACb,IAAQ2G;AACJ,IAAApI,EAAO,eAAeyB,CAAI;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,cAAczB,GAAQ;AACpB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAA3G,IAAO;AAAA,IACb,IAAQ2G;AACJ,IAAApI,EAAO,cAAcyB,CAAI;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,eAAezB,GAAQ;AACrB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,WAAA1G,IAAY;AAAA,IAClB,IAAQ0G;AACJ,IAAApI,EAAO,eAAe0B,CAAS;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM1B,GAAQkG,GAAI;AAChB,WAAO,CAAC/F,EAAO,MAAMH,GAAQkG,CAAE,GAAG/F,EAAO,IAAIH,GAAQkG,CAAE,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAKA,IAAIlG,GAAQkG,GAAI;AACd,WAAO/F,EAAO,MAAMH,GAAQkG,GAAI;AAAA,MAC9B,MAAM;AAAA,IACZ,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMlG,GAAQkG,GAAI;AAChB,QAAIpF,IAAOX,EAAO,KAAKH,GAAQkG,GAAI;AAAA,MACjC,MAAM;AAAA,IACZ,CAAK;AACD,WAAO/F,EAAO,KAAKH,GAAQc,CAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,SAASd,GAAQkG,GAAI;AACnB,QAAIwC,IAAQvI,EAAO,MAAMH,GAAQkG,CAAE,GAC/BtE,IAAWD,EAAK,SAAS3B,GAAQ0I,CAAK;AAC1C,WAAO9G;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU5B,GAAQ8H,GAAS;AACzB,WAAOA,EAAQ,SAAS,KAAK,CAAA1M,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,CAAC;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW4E,GAAQ8H,GAAS;AAC1B,WAAOA,EAAQ,SAAS,KAAK,CAAA1M,MAAKmG,EAAK,OAAOnG,CAAC,KAAK+E,EAAO,SAASH,GAAQ5E,CAAC,CAAC;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS4E,GAAQ8H,GAAS;AACxB,WAAOA,EAAQ,SAAS,MAAM,CAAA1M,MAAKmG,EAAK,OAAOnG,CAAC,CAAC;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAY4E,GAAQ;AAClB,IAAAA,EAAO,YAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAeA,GAAQ4B,GAAU;AAC/B,IAAA5B,EAAO,eAAe4B,CAAQ;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW5B,GAAQ6B,GAAM;AACvB,IAAA7B,EAAO,WAAW6B,CAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW7B,GAAQ8B,GAAM;AACvB,IAAA9B,EAAO,WAAW8B,CAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ9B,GAAQlB,GAAO;AACrB,WAAOkD,EAAQ,UAAUlD,CAAK,KAAK,CAACkB,EAAO,SAASlB,CAAK;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAKA,SAASA,GAAO;AACd,QAAI,CAAC7D,GAAc6D,CAAK,EAAG,QAAO;AAClC,QAAI6J,IAAiBR,GAAgB,IAAIrJ,CAAK;AAE9C,QAAI6J,MAAmB;AACrB,aAAOA;AAGT,QAAIC,IAAW,OAAO9J,EAAM,WAAY,cAAc,OAAOA,EAAM,SAAU,cAAc,OAAOA,EAAM,kBAAmB,cAAc,OAAOA,EAAM,iBAAkB,cAAc,OAAOA,EAAM,kBAAmB,cAAc,OAAOA,EAAM,eAAgB,cAAc,OAAOA,EAAM,kBAAmB,cAAc,OAAOA,EAAM,cAAe,cAAc,OAAOA,EAAM,cAAe,cAAc,OAAOA,EAAM,YAAa,cAAc,OAAOA,EAAM,UAAW,cAAc,OAAOA,EAAM,iBAAkB,cAAc,OAAOA,EAAM,YAAa,cAAc,OAAOA,EAAM,cAAe,eAAeA,EAAM,UAAU,QAAQ7D,GAAc6D,EAAM,KAAK,OAAOA,EAAM,cAAc,QAAQwC,EAAM,QAAQxC,EAAM,SAAS,MAAM6C,EAAK,WAAW7C,EAAM,QAAQ,KAAK+J,GAAU,gBAAgB/J,EAAM,UAAU;AACnyB,WAAAqJ,GAAgB,IAAIrJ,GAAO8J,CAAQ,GAC5BA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM5I,GAAQ8I,GAAO5C,GAAI;AACvB,QAAIG,IAAMlG,EAAO,IAAIH,GAAQkG,CAAE;AAC/B,WAAO6C,EAAM,OAAOD,GAAOzC,CAAG;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOrG,GAAQ8I,GAAO5C,GAAI;AACxB,WAAO/F,EAAO,QAAQH,GAAQ8I,GAAO5C,CAAE,KAAK/F,EAAO,MAAMH,GAAQ8I,GAAO5C,CAAE;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQlG,GAAQ8H,GAAS;AACvB,QAAI;AAAA,MACF,UAAAkB;AAAA,IACN,IAAQlB,GACA,CAACmB,CAAK,IAAID;AACd,WAAOA,EAAS,WAAW,KAAKA,EAAS,WAAW,KAAKzH,EAAK,OAAO0H,CAAK,KAAKA,EAAM,SAAS,MAAM,CAACjJ,EAAO,OAAO8H,CAAO;AAAA,EAC5H;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS9H,GAAQlB,GAAO;AACtB,WAAOkD,EAAQ,UAAUlD,CAAK,KAAKkB,EAAO,SAASlB,CAAK;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAKA,cAAckB,GAAQ;AACpB,QAAIkJ,IAAgBhK,GAAY,IAAIc,CAAM;AAC1C,WAAOkJ,MAAkB,SAAY,KAAOA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQlJ,GAAQ8I,GAAO5C,GAAI;AAEzB,QAAI4C,EAAM,WAAW;AACnB,aAAO;AAGT,QAAIK,IAAQhJ,EAAO,MAAMH,GAAQkG,CAAE;AACnC,WAAO6C,EAAM,OAAOD,GAAOK,CAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOnJ,GAAQlB,GAAO;AACpB,WAAOkD,EAAQ,UAAUlD,CAAK,KAAKkB,EAAO,OAAOlB,CAAK;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKkB,GAAQkG,GAAI;AACf,QAAIpF,IAAOX,EAAO,KAAKH,GAAQkG,GAAI;AAAA,MACjC,MAAM;AAAA,IACZ,CAAK;AACD,WAAO/F,EAAO,KAAKH,GAAQc,CAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKd,GAAQkG,GAAI;AACf,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9EtH,IAAOX,EAAO,KAAKH,GAAQkG,GAAIkC,CAAO,GACtCvG,IAAOF,EAAK,KAAK3B,GAAQc,CAAI;AACjC,WAAO,CAACe,GAAMf,CAAI;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,OAAOd,GAAQ;AACd,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,IAAAlC,IAAKlG,EAAO;AAAA,MACZ,SAAAuI,IAAU;AAAA,MACV,OAAAF,IAAQ;AAAA,IACd,IAAQD,GACA;AAAA,MACF,OAAAb;AAAA,IACN,IAAQa;AAMJ,QAJIb,KAAS,SACXA,IAAQ,MAAM,KAGZ,EAACrB,GAIL;AAAA,UAAIvD,IAAS,CAAA,GACT7B,IAAOX,EAAO,KAAKH,GAAQkG,CAAE;AAEjC,eAAS,CAAC9K,GAAGkB,CAAC,KAAKqF,EAAK,OAAO3B,GAAQc,CAAI;AACzC,YAAKyG,EAAMnM,GAAGkB,CAAC,MAIfqG,EAAO,KAAK,CAACvH,GAAGkB,CAAC,CAAC,GAEd,CAAC+L,KAASlI,EAAO,OAAOH,GAAQ5E,CAAC;AACnC;AAIJ,MAAImN,KACF5F,EAAO,QAAO,GAGhB,OAAOA;AAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM3C,GAAQ;AACZ,QAAI;AAAA,MACF,OAAAwB;AAAA,MACA,WAAAH;AAAA,IACN,IAAQrB;AAEJ,QAAI,CAACqB;AACH,aAAO;AAGT,QAAIG;AACF,aAAOA;AAGT,QAAIF,EAAM,WAAWD,CAAS,GAAG;AAC/B,UAAI,CAACkG,CAAK,IAAIpH,EAAO,MAAMH,GAAQ;AAAA,QACjC,OAAOuB,EAAK;AAAA,MACpB,CAAO;AAED,UAAIgG,GAAO;AACT,YAAI,CAAC6B,CAAK,IAAI7B,GAEV8B,IAAQnF,GAAyBkF,GAAOrB,EAAW;AAEvD,eAAOsB;AAAA,MACT;AACE,eAAO,CAAA;AAAA,IAEX;AAEA,QAAI;AAAA,MACF,QAAAb;AAAA,IACN,IAAQnH,GACA;AAAA,MACF,MAAAP;AAAA,IACN,IAAQ0H,GACA,CAAC3G,CAAI,IAAI1B,EAAO,KAAKH,GAAQc,CAAI;AAErC,QAAI0H,EAAO,WAAW,GAAG;AACvB,UAAInG,IAAOlC,EAAO,SAASH,GAAQ;AAAA,QACjC,IAAIc;AAAA,QACJ,OAAOS,EAAK;AAAA,MACpB,CAAO,GACG+H,IAAQnJ,EAAO,MAAMH,GAAQ;AAAA,QAC/B,OAAO,CAAA5E,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAAA,MAC5C,CAAO;AAED,UAAIiH,KAAQiH,GAAO;AACjB,YAAI,CAACC,GAAUC,CAAQ,IAAInH,GACvB,CAAA,EAAGoH,CAAS,IAAIH;AAEpB,QAAIvI,EAAK,WAAW0I,GAAWD,CAAQ,MACrC3H,IAAO0H;AAAA,MAEX;AAAA,IACF;AAEA,QAAIG,IAAOxF,GAAyBrC,GAAMmG,EAAY;AAEtD,WAAO0B;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK1J,GAAQ;AACX,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAAE,IAAO;AAAA,MACP,OAAAD,IAAQ;AAAA,IACd,IAAQD,GACA;AAAA,MACF,OAAAb;AAAA,MACA,IAAArB,IAAKlG,EAAO;AAAA,IAClB,IAAQoI;AAEJ,QAAKlC,GAIL;AAAA,UAAIyD,IAAqBxJ,EAAO,MAAMH,GAAQkG,GAAI;AAAA,QAChD,OAAAmC;AAAA,MACN,CAAK;AACD,UAAKsB,GACL;AAAA,YAAI,CAAA,EAAGC,CAAE,IAAIzJ,EAAO,KAAKH,GAAQ,CAAA,CAAE,GAC/B6J,IAAO,CAACF,EAAmB,MAAMC,CAAE;AAEvC,YAAI7I,EAAK,OAAOmF,CAAE,KAAKA,EAAG,WAAW;AACnC,gBAAM,IAAI,MAAM,8CAA8C;AAGhE,YAAIqB,KAAS;AACX,cAAIxG,EAAK,OAAOmF,CAAE,GAAG;AACnB,gBAAI,CAAC4D,CAAM,IAAI3J,EAAO,OAAOH,GAAQkG,CAAE;AAEvC,YAAAqB,IAAQ,CAAAnM,MAAK0O,EAAO,SAAS,SAAS1O,CAAC;AAAA,UACzC;AACE,YAAAmM,IAAQ,MAAM;AAIlB,YAAI,CAACwC,CAAI,IAAI5J,EAAO,MAAMH,GAAQ;AAAA,UAChC,IAAI6J;AAAA,UACJ,OAAAtC;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACN,CAAK;AACD,eAAO0B;AAAA;AAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK/J,GAAQkG,GAAI;AACf,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9EtH,IAAOX,EAAO,KAAKH,GAAQkG,GAAIkC,CAAO,GACtCvG,IAAOF,EAAK,IAAI3B,GAAQc,CAAI;AAChC,WAAO,CAACe,GAAMf,CAAI;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,MAAMd,GAAQ;AACb,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,IAAAlC,IAAKlG,EAAO;AAAA,MACZ,MAAAsI,IAAO;AAAA,MACP,WAAA0B,IAAY;AAAA,MACZ,SAAAzB,IAAU;AAAA,MACV,OAAAF,IAAQ;AAAA,IACd,IAAQD,GACA;AAAA,MACF,OAAAb;AAAA,IACN,IAAQa;AAMJ,QAJKb,MACHA,IAAQ,MAAM,KAGZ,EAACrB,GAIL;AAAA,UAAI+D,GACAL;AAEJ,UAAIM,GAAK,OAAOhE,CAAE;AAChB,QAAA+D,IAAO/D,EAAG,CAAC,GACX0D,IAAK1D,EAAG,CAAC;AAAA,WACJ;AACL,YAAI+C,IAAQ9I,EAAO,KAAKH,GAAQkG,GAAI;AAAA,UAClC,MAAM;AAAA,QACd,CAAO,GACGiE,IAAOhK,EAAO,KAAKH,GAAQkG,GAAI;AAAA,UACjC,MAAM;AAAA,QACd,CAAO;AACD,QAAA+D,IAAO1B,IAAU4B,IAAOlB,GACxBW,IAAKrB,IAAUU,IAAQkB;AAAA,MACzB;AAEA,UAAIC,IAAczI,EAAK,MAAM3B,GAAQ;AAAA,QACnC,SAAAuI;AAAA,QACA,MAAA0B;AAAA,QACA,IAAAL;AAAA,QACA,MAAM,CAAAvJ,MAAQ;AACZ,cAAI,CAACjF,CAAC,IAAIiF;AACV,iBAAOgI,IAAQ,KAAQlI,EAAO,OAAOH,GAAQ5E,CAAC;AAAA,QAChD;AAAA,MACN,CAAK,GACGiP,IAAU,CAAA,GACVC;AAEJ,eAAS,CAACzI,GAAMf,CAAI,KAAKsJ,GAAa;AACpC,YAAIG,IAAUD,KAAOvJ,EAAK,QAAQD,GAAMwJ,EAAI,CAAC,CAAC,MAAM;AAEpD,YAAI,EAAAhC,MAAS,aAAaiC,IAI1B;AAAA,cAAI,CAAChD,EAAM1F,GAAMf,CAAI,GAAG;AAItB,gBAAIkJ,KAAa,CAACO,KAAWhJ,EAAK,OAAOM,CAAI;AAC3C;AAEA;AAAA,UAEJ;AAGA,cAAIyG,MAAS,YAAYiC,GAAS;AAChC,YAAAD,IAAM,CAACzI,GAAMf,CAAI;AACjB;AAAA,UACF;AAGA,cAAI0J,IAAOlC,MAAS,WAAWgC,IAAM,CAACzI,GAAMf,CAAI;AAEhD,UAAI0J,MACER,IACFK,EAAQ,KAAKG,CAAI,IAEjB,MAAMA,IAIVF,IAAM,CAACzI,GAAMf,CAAI;AAAA;AAAA,MACnB;AAGA,MAAIwH,MAAS,YAAYgC,MACnBN,IACFK,EAAQ,KAAKC,CAAG,IAEhB,MAAMA,IAMNN,MACF,OAAOK;AAAA;AAAA,EAEX;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUrK,GAAQ;AAChB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,OAAAqC,IAAQ;AAAA,IACd,IAAQrC,GAEAlH,IAAgB,CAAAlB,MACXjB,GAAY,IAAIiB,CAAM,KAAK,CAAA,GAGhC0K,IAAmB,CAAA1K,MACdhB,GAAgB,IAAIgB,CAAM,KAAK,oBAAI,IAAG,GAG3C2K,IAAe,CAAA3K,MAAU;AAC3B,UAAIc,IAAOI,EAAclB,CAAM,EAAE,IAAG,GAChCnB,IAAMiC,EAAK,KAAK,GAAG;AACvB,aAAA4J,EAAiB1K,CAAM,EAAE,OAAOnB,CAAG,GAC5BiC;AAAA,IACT;AAEA,QAAKX,EAAO,cAAcH,CAAM,GAIhC;AAAA,UAAIyK,GAAO;AACT,YAAIG,IAAW,MAAM,KAAKjJ,EAAK,MAAM3B,CAAM,GAAG,CAAAO,MAAS;AACrD,cAAI,CAAA,EAAGjE,CAAC,IAAIiE;AACZ,iBAAOjE;AAAA,QACT,CAAC,GACGuO,IAAc,IAAI,IAAID,EAAS,IAAI,CAAAtO,MAAKA,EAAE,KAAK,GAAG,CAAC,CAAC;AACxD,QAAAyC,GAAY,IAAIiB,GAAQ4K,CAAQ,GAChC5L,GAAgB,IAAIgB,GAAQ6K,CAAW;AAAA,MACzC;AAEA,MAAI3J,EAAclB,CAAM,EAAE,WAAW,KAIrCG,EAAO,mBAAmBH,GAAQ,MAAM;AAMtC,iBAAS8K,KAAa5J,EAAclB,CAAM;AACxC,cAAI2B,EAAK,IAAI3B,GAAQ8K,CAAS,GAAG;AAC/B,gBAAI/I,IAAQ5B,EAAO,KAAKH,GAAQ8K,CAAS,GACrC,CAACjJ,GAAM/E,CAAC,IAAIiF;AAQhB,YAAIC,EAAQ,UAAUH,CAAI,KAAKA,EAAK,SAAS,WAAW,KACtD7B,EAAO,cAAc+B,CAAK;AAAA,UAE9B;AAOF,iBAJIgJ,IAAM7J,EAAclB,CAAM,EAAE,SAAS,IAErCgL,IAAI,GAED9J,EAAclB,CAAM,EAAE,WAAW,KAAG;AACzC,cAAIgL,IAAID;AACN,kBAAM,IAAI,MAAM;AAAA,8DAAiE,OAAOA,GAAK;AAAA,WAAuH,CAAC;AAGvN,cAAIE,IAAaN,EAAa3K,CAAM;AAGpC,cAAI2B,EAAK,IAAI3B,GAAQiL,CAAU,GAAG;AAChC,gBAAIC,IAAS/K,EAAO,KAAKH,GAAQiL,CAAU;AAE3C,YAAAjL,EAAO,cAAckL,CAAM;AAAA,UAC7B;AAEA,UAAAF;AAAA,QACF;AAAA,MACF,CAAC;AAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOhL,GAAQkG,GAAI;AACjB,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9EtH,IAAOX,EAAO,KAAKH,GAAQkG,GAAIkC,CAAO,GACtC+C,IAAapK,EAAK,OAAOD,CAAI,GAC7BiB,IAAQ5B,EAAO,KAAKH,GAAQmL,CAAU;AAC1C,WAAOpJ;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK/B,GAAQkG,GAAI;AACf,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,OAAAgD;AAAA,MACA,MAAAC;AAAA,IACN,IAAQjD;AAEJ,QAAIrH,EAAK,OAAOmF,CAAE;AAChB,UAAImF,MAAS,SAAS;AACpB,YAAI,CAAA,EAAGC,CAAS,IAAI3J,EAAK,MAAM3B,GAAQkG,CAAE;AACzC,QAAAA,IAAKoF;AAAA,MACP,WAAWD,MAAS,OAAO;AACzB,YAAI,CAAA,EAAGE,CAAQ,IAAI5J,EAAK,KAAK3B,GAAQkG,CAAE;AACvC,QAAAA,IAAKqF;AAAA,MACP;AAAA;AAGF,WAAIjK,EAAM,QAAQ4E,CAAE,MACdmF,MAAS,UACXnF,IAAK5E,EAAM,MAAM4E,CAAE,IACVmF,MAAS,QAClBnF,IAAK5E,EAAM,IAAI4E,CAAE,IAEjBA,IAAKnF,EAAK,OAAOmF,EAAG,OAAO,MAAMA,EAAG,MAAM,IAAI,IAI9C6C,EAAM,QAAQ7C,CAAE,MAClBA,IAAKA,EAAG,OAGNkF,KAAS,SACXlF,IAAKA,EAAG,MAAM,GAAGkF,CAAK,IAGjBlF;AAAA,EACT;AAAA,EAEA,QAAQlG,GAAQc,GAAM;AACpB,WAAOa,EAAK,IAAI3B,GAAQc,CAAI;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQd,GAAQc,GAAM;AACpB,QAAIsH,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,UAAAoD,IAAW;AAAA,IACjB,IAAQpD,GACAlI,IAAM;AAAA,MACR,SAASY;AAAA,MACT,UAAA0K;AAAA,MAEA,QAAQ;AACN,YAAI;AAAA,UACF,SAAAC;AAAA,QACV,IAAYvL,GACAwL,IAAWvL,EAAO,SAASH,CAAM;AACrC,eAAA0L,EAAS,OAAOxL,CAAG,GACnBA,EAAI,UAAU,MACPuL;AAAA,MACT;AAAA,IAEN,GACQE,IAAOxL,EAAO,SAASH,CAAM;AACjC,WAAA2L,EAAK,IAAIzL,CAAG,GACLA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,SAASF,GAAQ;AACf,QAAI2L,IAAOxM,GAAU,IAAIa,CAAM;AAE/B,WAAK2L,MACHA,IAAO,oBAAI,IAAG,GACdxM,GAAU,IAAIa,GAAQ2L,CAAI,IAGrBA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM3L,GAAQkG,GAAI;AAChB,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAAiD,IAAO;AAAA,IACb,IAAQjD;AAEJ,QAAIrH,EAAK,OAAOmF,CAAE,GAAG;AACnB,UAAIpF;AAEJ,UAAIuK,MAAS,OAAO;AAClB,YAAI,CAAA,EAAGE,CAAQ,IAAI5J,EAAK,KAAK3B,GAAQkG,CAAE;AACvC,QAAApF,IAAOyK;AAAA,MACT,OAAO;AACL,YAAI,CAAA,EAAGD,CAAS,IAAI3J,EAAK,MAAM3B,GAAQkG,CAAE;AACzC,QAAApF,IAAOwK;AAAA,MACT;AAEA,UAAIzJ,IAAOF,EAAK,IAAI3B,GAAQc,CAAI;AAEhC,UAAI,CAACS,EAAK,OAAOM,CAAI;AACnB,cAAM,IAAI,MAAM,kBAAkB,OAAOwJ,GAAM,8BAA8B,EAAE,OAAOnF,GAAI,sBAAsB,EAAE,OAAOmF,GAAM,aAAa,CAAC;AAG/I,aAAO;AAAA,QACL,MAAAvK;AAAA,QACA,QAAQuK,MAAS,QAAQxJ,EAAK,KAAK,SAAS;AAAA,MACpD;AAAA,IACI;AAEA,QAAIP,EAAM,QAAQ4E,CAAE,GAAG;AACrB,UAAI,CAACiD,GAAO9C,CAAG,IAAI/E,EAAM,MAAM4E,CAAE;AACjC,aAAOmF,MAAS,UAAUlC,IAAQ9C;AAAA,IACpC;AAEA,WAAOH;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAASlG,GAAQ8I,GAAO;AACtB,QAAIV,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,UAAAoD,IAAW;AAAA,IACjB,IAAQpD,GACAlI,IAAM;AAAA,MACR,SAAS4I;AAAA,MACT,UAAA0C;AAAA,MAEA,QAAQ;AACN,YAAI;AAAA,UACF,SAAAC;AAAA,QACV,IAAYvL,GACA0L,IAAYzL,EAAO,UAAUH,CAAM;AACvC,eAAA4L,EAAU,OAAO1L,CAAG,GACpBA,EAAI,UAAU,MACPuL;AAAA,MACT;AAAA,IAEN,GACQE,IAAOxL,EAAO,UAAUH,CAAM;AAClC,WAAA2L,EAAK,IAAIzL,CAAG,GACLA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUF,GAAQ;AAChB,QAAI2L,IAAOvM,GAAW,IAAIY,CAAM;AAEhC,WAAK2L,MACHA,IAAO,oBAAI,IAAG,GACdvM,GAAW,IAAIY,GAAQ2L,CAAI,IAGtBA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,CAAC,UAAU3L,GAAQ;AACjB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,IAAAlC,IAAKlG,EAAO;AAAA,MACZ,MAAAyB,IAAO;AAAA,MACP,SAAA8G,IAAU;AAAA,MACV,OAAAF,IAAQ;AAAA,IACd,IAAQD;AAEJ,QAAI,CAAClC;AACH;AAqBF,QAAIwC,IAAQvI,EAAO,MAAMH,GAAQkG,CAAE,GAC/B,CAACiD,GAAO9C,CAAG,IAAI/E,EAAM,MAAMoH,CAAK,GAChCO,IAAQV,IAAUlC,IAAM8C,GACxB0C,IAAa,IACbC,IAAY,IACZjH,IAAW,GAEXkH,IAAoB,GACpBC,IAAiB;AAOrB,aAAS,CAACnK,GAAMf,CAAI,KAAKX,EAAO,MAAMH,GAAQ;AAAA,MAC5C,IAAAkG;AAAA,MACA,SAAAqC;AAAA,MACA,OAAAF;AAAA,IACN,CAAK,GAAG;AAIF,UAAIrG,EAAQ,UAAUH,CAAI,GAAG;AAI3B,YAAI,CAACwG,KAASrI,EAAO,OAAO6B,CAAI,GAAG;AACjC,gBAAM1B,EAAO,MAAMH,GAAQc,CAAI;AAC/B;AAAA,QACF;AAKA,YAAId,EAAO,SAAS6B,CAAI,EAAG;AAE3B,YAAI1B,EAAO,WAAWH,GAAQ6B,CAAI,GAAG;AAWnC,cAAIxG,IAAI0F,EAAK,WAAWD,GAAMuF,EAAI,IAAI,IAAIA,IAAMlG,EAAO,IAAIH,GAAQc,CAAI,GACnEjF,IAAIkF,EAAK,WAAWD,GAAMqI,EAAM,IAAI,IAAIA,IAAQhJ,EAAO,MAAMH,GAAQc,CAAI;AAC7E,UAAAgL,IAAY3L,EAAO,OAAOH,GAAQ;AAAA,YAChC,QAAQnE;AAAA,YACR,OAAOR;AAAA,UACnB,GAAa;AAAA,YACD,OAAAgN;AAAA,UACZ,CAAW,GACDwD,IAAa;AAAA,QACf;AAAA,MACF;AAOA,UAAItK,EAAK,OAAOM,CAAI,GAAG;AACrB,YAAIoK,IAAUlL,EAAK,OAAOD,GAAMmI,EAAM,IAAI;AAwB1C,aAlBIgD,KACFF,IAAoBxD,IAAUU,EAAM,SAASpH,EAAK,KAAK,SAASoH,EAAM,QACtE+C,IAAiB/C,EAAM,WAEvB8C,IAAoBlK,EAAK,KAAK,QAC9BmK,IAAiBzD,IAAUwD,IAAoB,KAI7CE,KAAWJ,KAAcpK,MAAS,cACpC,MAAM;AAAA,UACJ,MAAAX;AAAA,UACA,QAAQkL;AAAA,QACpB,GACUH,IAAa,SAIF;AAIX,cAAIhH,MAAa,GAAG;AAClB,gBAAIiH,MAAc,GAAI;AACtB,YAAAjH,IAAWqH,EAAaJ,GAAWrK,GAAM8G,CAAO,GAGhDuD,IAAY9F,GAAyB8F,GAAWjH,GAAU0D,CAAO,EAAE,CAAC;AAAA,UACtE;AAQA,cALAyD,IAAiBzD,IAAUyD,IAAiBnH,IAAWmH,IAAiBnH,GACxEkH,IAAoBA,IAAoBlH,GAIpCkH,IAAoB,GAAG;AACzB,YAAAlH,IAAW,CAACkH;AACZ;AAAA,UACF;AAKA,UAAAlH,IAAW,GACX,MAAM;AAAA,YACJ,MAAA/D;AAAA,YACA,QAAQkL;AAAA,UACpB;AAAA,QACQ;AAAA,MACF;AAAA,IACF;AAOA,aAASE,EAAapK,GAAML,GAAM8G,GAAS;AACzC,aAAI9G,MAAS,cACJ2C,GAAqBtC,GAAMyG,CAAO,IAChC9G,MAAS,SACXkE,GAAgB7D,GAAMyG,CAAO,IAC3B9G,MAAS,UAAUA,MAAS,UAC9BK,EAAK,SAGP;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS9B,GAAQ;AACf,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAAE,IAAO;AAAA,MACP,OAAAD,IAAQ;AAAA,IACd,IAAQD,GACA;AAAA,MACF,OAAAb;AAAA,MACA,IAAArB,IAAKlG,EAAO;AAAA,IAClB,IAAQoI;AAEJ,QAAKlC,GAIL;AAAA,UAAIiG,IAAsBhM,EAAO,OAAOH,GAAQkG,GAAI;AAAA,QAClD,OAAAmC;AAAA,MACN,CAAK;AAED,UAAK8D,GAIL;AAAA,YAAI,CAAA,EAAGvC,CAAE,IAAIzJ,EAAO,MAAMH,GAAQ,CAAA,CAAE,GAGhC6J,IAAO,CAACsC,EAAoB,MAAMvC,CAAE;AAExC,YAAI7I,EAAK,OAAOmF,CAAE,KAAKA,EAAG,WAAW;AACnC,gBAAM,IAAI,MAAM,kDAAkD;AAGpE,YAAIqB,KAAS;AACX,cAAIxG,EAAK,OAAOmF,CAAE,GAAG;AACnB,gBAAI,CAAC4D,CAAM,IAAI3J,EAAO,OAAOH,GAAQkG,CAAE;AAEvC,YAAAqB,IAAQ,CAAAnM,MAAK0O,EAAO,SAAS,SAAS1O,CAAC;AAAA,UACzC;AACE,YAAAmM,IAAQ,MAAM;AAIlB,YAAI,CAAC6E,CAAQ,IAAIjM,EAAO,MAAMH,GAAQ;AAAA,UACpC,SAAS;AAAA,UACT,IAAI6J;AAAA,UACJ,OAAAtC;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACN,CAAK;AACD,eAAO+D;AAAA;AAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMpM,GAAQkG,GAAI0D,GAAI;AACpB,QAAItI,EAAM,QAAQ4E,CAAE,KAAK,CAAC0D;AACxB,aAAO1D;AAGT,QAAIiD,IAAQhJ,EAAO,MAAMH,GAAQkG,CAAE,GAC/BG,IAAMlG,EAAO,IAAIH,GAAQ4J,KAAM1D,CAAE;AACrC,WAAO;AAAA,MACL,QAAQiD;AAAA,MACR,OAAO9C;AAAA,IACb;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAASrG,GAAQ0I,GAAO;AACtB,QAAIN,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,UAAAoD,IAAW;AAAA,IACjB,IAAQpD,GACAlI,IAAM;AAAA,MACR,SAASwI;AAAA,MACT,UAAA8C;AAAA,MAEA,QAAQ;AACN,YAAI;AAAA,UACF,SAAAC;AAAA,QACV,IAAYvL,GACAmM,IAAYlM,EAAO,UAAUH,CAAM;AACvC,eAAAqM,EAAU,OAAOnM,CAAG,GACpBA,EAAI,UAAU,MACPuL;AAAA,MACT;AAAA,IAEN,GACQE,IAAOxL,EAAO,UAAUH,CAAM;AAClC,WAAA2L,EAAK,IAAIzL,CAAG,GACLA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUF,GAAQ;AAChB,QAAI2L,IAAOtM,GAAW,IAAIW,CAAM;AAEhC,WAAK2L,MACHA,IAAO,oBAAI,IAAG,GACdtM,GAAW,IAAIW,GAAQ2L,CAAI,IAGtBA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,WAAW3L,GAAQnB,GAAK;AACtB,IAAAmB,EAAO,WAAWnB,CAAG;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAemB,GAAQkJ,GAAe;AACpC,IAAAhK,GAAY,IAAIc,GAAQkJ,CAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMlJ,GAAQkG,GAAI;AAChB,WAAO/F,EAAO,MAAMH,GAAQkG,GAAI;AAAA,MAC9B,MAAM;AAAA,IACZ,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAOlG,GAAQkG,GAAI;AACjB,QAAIkC,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,OAAAC,IAAQ;AAAA,IACd,IAAQD,GACAM,IAAQvI,EAAO,MAAMH,GAAQkG,CAAE,GAC/B,CAACiD,GAAO9C,CAAG,IAAI/E,EAAM,MAAMoH,CAAK,GAChC5G,IAAO;AAEX,aAAS,CAACD,GAAMf,CAAI,KAAKX,EAAO,MAAMH,GAAQ;AAAA,MAC5C,IAAI0I;AAAA,MACJ,OAAOnH,EAAK;AAAA,MACZ,OAAA8G;AAAA,IACN,CAAK,GAAG;AACF,UAAI3M,IAAImG,EAAK;AAEb,MAAId,EAAK,OAAOD,GAAMuF,EAAI,IAAI,MAC5B3K,IAAIA,EAAE,MAAM,GAAG2K,EAAI,MAAM,IAGvBtF,EAAK,OAAOD,GAAMqI,EAAM,IAAI,MAC9BzN,IAAIA,EAAE,MAAMyN,EAAM,MAAM,IAG1BrH,KAAQpG;AAAA,IACV;AAEA,WAAOoG;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY9B,GAAQ0I,GAAO;AACzB,QAAIN,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,OAAAC,IAAQ;AAAA,IACd,IAAQD,GACA,CAACe,GAAO9C,CAAG,IAAI/E,EAAM,MAAMoH,CAAK;AAEpC,QAAIS,EAAM,WAAW,KAAK9C,EAAI,WAAW,KAAK/E,EAAM,YAAYoH,CAAK;AACnE,aAAOA;AAGT,QAAI4D,IAAWnM,EAAO,MAAMH,GAAQ;AAAA,MAClC,IAAIqG;AAAA,MACJ,OAAO,CAAAjL,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAAA,IAC1C,CAAK,GACGqO,IAAY6C,IAAWA,EAAS,CAAC,IAAI,CAAA,GACrCrD,IAAQ9I,EAAO,MAAMH,GAAQmJ,CAAK,GAClCoD,IAAS;AAAA,MACX,QAAQtD;AAAA,MACR,OAAO5C;AAAA,IACb,GACQmG,IAAO;AAEX,aAAS,CAAC3K,GAAMf,CAAI,KAAKX,EAAO,MAAMH,GAAQ;AAAA,MAC5C,IAAIuM;AAAA,MACJ,OAAOhL,EAAK;AAAA,MACZ,SAAS;AAAA,MACT,OAAA8G;AAAA,IACN,CAAK,GAAG;AACF,UAAImE,GAAM;AACR,QAAAA,IAAO;AACP;AAAA,MACF;AAEA,UAAI3K,EAAK,SAAS,MAAMd,EAAK,SAASD,GAAM2I,CAAS,GAAG;AACtD,QAAApD,IAAM;AAAA,UACJ,MAAAvF;AAAA,UACA,QAAQe,EAAK,KAAK;AAAA,QAC5B;AACQ;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,QAAQsH;AAAA,MACR,OAAO9C;AAAA,IACb;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKrG,GAAQ;AACX,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,WAAOjI,EAAO,MAAMH,GAAQkI,GAAgBA,GAAgB,CAAA,GAAIE,CAAO,GAAG,IAAI;AAAA,MAC5E,OAAO,CAAAhN,MAAK+E,EAAO,OAAOH,GAAQ5E,CAAC;AAAA,IACzC,CAAK,CAAC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB4E,GAAQxB,GAAI;AAC7B,QAAIM,IAAQqB,EAAO,cAAcH,CAAM;AACvC,IAAAG,EAAO,eAAeH,GAAQ,EAAK;AAEnC,QAAI;AACF,MAAAxB,EAAE;AAAA,IACJ,UAAC;AACC,MAAA2B,EAAO,eAAeH,GAAQlB,CAAK;AAAA,IACrC;AAEA,IAAAqB,EAAO,UAAUH,CAAM;AAAA,EACzB;AAEF,GAWIkK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIT,OAAOpL,GAAO;AACZ,WAAO,MAAM,QAAQA,CAAK,KAAKA,EAAM,WAAW,KAAKA,EAAM,MAAMiC,EAAK,MAAM;AAAA,EAC9E;AAEF,GAEI0L,KAAc,CAAC,UAAU,GACzBC,KAAe,CAAC,MAAM,GACtBC,KAAqB,oBAAI,QAAO,GAChChL,IAAO;AAAA;AAAA;AAAA;AAAA,EAIT,SAASiL,GAAM9L,GAAM;AACnB,QAAIe,IAAOF,EAAK,IAAIiL,GAAM9L,CAAI;AAE9B,QAAIS,EAAK,OAAOM,CAAI;AAClB,YAAM,IAAI,MAAM,yCAAyC,OAAOf,GAAM,8CAA8C,EAAE,OAAOe,CAAI,CAAC;AAGpI,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,CAAC,UAAU+K,GAAM9L,GAAM;AACrB,QAAIsH,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,aAAS9L,KAAKyE,EAAK,UAAUD,GAAMsH,CAAO,GAAG;AAC3C,UAAIhN,IAAIuG,EAAK,SAASiL,GAAMtQ,CAAC,GACzByF,IAAQ,CAAC3G,GAAGkB,CAAC;AACjB,YAAMyF;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM6K,GAAMC,GAAO;AACjB,QAAItL,EAAK,OAAOqL,CAAI;AAClB,YAAM,IAAI,MAAM,wCAAwC,OAAO,KAAK,UAAUA,CAAI,CAAC,CAAC;AAGtF,QAAIzQ,IAAIyQ,EAAK,SAASC,CAAK;AAE3B,QAAI1Q,KAAK;AACP,YAAM,IAAI,MAAM,8BAA8B,OAAO0Q,GAAO,aAAa,EAAE,OAAO,KAAK,UAAUD,CAAI,CAAC,CAAC;AAGzG,WAAOzQ;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,SAASyQ,GAAM9L,GAAM;AAWpB,aAVIsH,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,SAAAG,IAAU;AAAA,IAChB,IAAQH,GACAhF,IAAWzB,EAAK,SAASiL,GAAM9L,CAAI,GACnC;AAAA,MACF,UAAAkI;AAAA,IACN,IAAQ5F,GACAyJ,IAAQtE,IAAUS,EAAS,SAAS,IAAI,GAErCT,IAAUsE,KAAS,IAAIA,IAAQ7D,EAAS,UAAQ;AACrD,UAAI/G,IAAQN,EAAK,MAAMyB,GAAUyJ,CAAK,GAClCC,IAAYhM,EAAK,OAAO+L,CAAK;AACjC,YAAM,CAAC5K,GAAO6K,CAAS,GACvBD,IAAQtE,IAAUsE,IAAQ,IAAIA,IAAQ;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOD,GAAM9L,GAAMiM,GAAS;AAC1B,QAAIzQ,IAAIyE,EAAK,OAAOD,GAAMiM,CAAO,GAC7B3R,IAAIuG,EAAK,IAAIiL,GAAMtQ,CAAC;AACxB,WAAO,CAAClB,GAAGkB,CAAC;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWsQ,GAAM9L,GAAM;AACrB,QAAIe,IAAOF,EAAK,IAAIiL,GAAM9L,CAAI;AAE9B,QAAIX,EAAO,SAAS0B,CAAI;AACtB,YAAM,IAAI,MAAM,2CAA2C,OAAOf,GAAM,uDAAuD,EAAE,OAAOe,CAAI,CAAC;AAG/I,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,YAAY+K,GAAM;AACjB,QAAIxE,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,aAAS,CAACvG,GAAMf,CAAI,KAAKa,EAAK,MAAMiL,GAAMxE,CAAO;AAC/C,MAAItH,EAAK,WAAW,MAGlB,MAAM,CAACe,GAAMf,CAAI;AAAA,EAGvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAC,SAAS8L,GAAM;AACd,QAAIxE,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,aAAS,CAACvG,GAAMf,CAAI,KAAKa,EAAK,MAAMiL,GAAMxE,CAAO;AAC/C,MAAIpG,EAAQ,UAAUH,CAAI,MACxB,MAAM,CAACA,GAAMf,CAAI;AAAA,EAGvB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAae,GAAM;AACjB,QAAIG,EAAQ,WAAWH,CAAI,GAAG;AAC5B,UAAImL,IAAa9I,GAAyBrC,GAAM4K,EAAW;AAE3D,aAAOO;AAAA,IACT,OAAO;AACL,UAAIA,IAAa9I,GAAyBrC,GAAM6K,EAAY;AAE5D,aAAOM;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMJ,GAAM9L,GAAM;AAIhB,aAHIxE,IAAIwE,EAAK,MAAK,GACd,IAAIa,EAAK,IAAIiL,GAAMtQ,CAAC,GAEjB,KACDiF,EAAAA,EAAK,OAAO,CAAC,KAAK,EAAE,SAAS,WAAW;AAG1C,UAAI,EAAE,SAAS,CAAC,GAChBjF,EAAE,KAAK,CAAC;AAIZ,WAAO,CAAC,GAAGA,CAAC;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,SAASsQ,GAAMlE,GAAO;AACpB,QAAInH,EAAK,OAAOqL,CAAI;AAClB,YAAM,IAAI,MAAM,yDAAyD,OAAO,KAAK,UAAUA,CAAI,CAAC,CAAC;AAGvG,QAAIK,IAAUC,GAAQ;AAAA,MACpB,UAAUN,EAAK;AAAA,IACrB,GAAO,CAAApR,MAAK;AACN,UAAI,CAAC2N,GAAO9C,CAAG,IAAI/E,EAAM,MAAMoH,CAAK,GAChC0B,IAAczI,EAAK,MAAMnG,GAAG;AAAA,QAC9B,SAAS;AAAA,QACT,MAAM,CAAA6E,MAAQ;AACZ,cAAI,CAAA,EAAGS,CAAI,IAAIT;AACf,iBAAO,CAACiB,EAAM,SAASoH,GAAO5H,CAAI;AAAA,QACpC;AAAA,MACR,CAAO;AAED,eAAS,CAAA,EAAGA,CAAI,KAAKsJ,GAAa;AAChC,YAAI,CAAC9I,EAAM,SAASoH,GAAO5H,CAAI,GAAG;AAChC,cAAIgJ,IAASnI,EAAK,OAAOnG,GAAGsF,CAAI,GAC5B+L,IAAQ/L,EAAKA,EAAK,SAAS,CAAC;AAChC,UAAAgJ,EAAO,SAAS,OAAO+C,GAAO,CAAC;AAAA,QACjC;AAEA,YAAI9L,EAAK,OAAOD,GAAMuF,EAAI,IAAI,GAAG;AAC/B,cAAI8G,IAAOxL,EAAK,KAAKnG,GAAGsF,CAAI;AAC5B,UAAAqM,EAAK,OAAOA,EAAK,KAAK,MAAM,GAAG9G,EAAI,MAAM;AAAA,QAC3C;AAEA,YAAItF,EAAK,OAAOD,GAAMqI,EAAM,IAAI,GAAG;AACjC,cAAIiE,IAAQzL,EAAK,KAAKnG,GAAGsF,CAAI;AAE7B,UAAAsM,EAAM,OAAOA,EAAM,KAAK,MAAMjE,EAAM,MAAM;AAAA,QAC5C;AAAA,MACF;AAEA,MAAIhJ,EAAO,SAAS3E,CAAC,MACnBA,EAAE,YAAY;AAAA,IAElB,CAAC;AACD,WAAOyR,EAAQ;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAIL,GAAM9L,GAAM;AAGd,aAFIe,IAAO+K,GAEFtR,IAAI,GAAGA,IAAIwF,EAAK,QAAQxF,KAAK;AACpC,UAAIgB,IAAIwE,EAAKxF,CAAC;AAEd,UAAIiG,EAAK,OAAOM,CAAI,KAAK,CAACA,EAAK,SAASvF,CAAC;AACvC,cAAM,IAAI,MAAM,qCAAqC,OAAOwE,GAAM,aAAa,EAAE,OAAO,KAAK,UAAU8L,CAAI,CAAC,CAAC;AAG/G,MAAA/K,IAAOA,EAAK,SAASvF,CAAC;AAAA,IACxB;AAEA,WAAOuF;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI+K,GAAM9L,GAAM;AAGd,aAFIe,IAAO+K,GAEFtR,IAAI,GAAGA,IAAIwF,EAAK,QAAQxF,KAAK;AACpC,UAAIgB,IAAIwE,EAAKxF,CAAC;AAEd,UAAIiG,EAAK,OAAOM,CAAI,KAAK,CAACA,EAAK,SAASvF,CAAC;AACvC,eAAO;AAGT,MAAAuF,IAAOA,EAAK,SAASvF,CAAC;AAAA,IACxB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOwC,GAAO;AACZ,WAAOyC,EAAK,OAAOzC,CAAK,KAAKkD,EAAQ,UAAUlD,CAAK,KAAKqB,EAAO,SAASrB,CAAK;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAO;AAChB,QAAI,CAAC,MAAM,QAAQA,CAAK;AACtB,aAAO;AAGT,QAAIuO,IAAeV,GAAmB,IAAI7N,CAAK;AAE/C,QAAIuO,MAAiB;AACnB,aAAOA;AAGT,QAAIC,IAAaxO,EAAM,MAAM,CAAA4I,MAAO/F,EAAK,OAAO+F,CAAG,CAAC;AACpD,WAAAiF,GAAmB,IAAI7N,GAAOwO,CAAU,GACjCA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKV,GAAM9L,GAAM;AAIf,aAHIxE,IAAIwE,EAAK,MAAK,GACd,IAAIa,EAAK,IAAIiL,GAAMtQ,CAAC,GAEjB,KACDiF,EAAAA,EAAK,OAAO,CAAC,KAAK,EAAE,SAAS,WAAW,MADpC;AAIN,UAAIjG,IAAI,EAAE,SAAS,SAAS;AAC5B,UAAI,EAAE,SAASA,CAAC,GAChBgB,EAAE,KAAKhB,CAAC;AAAA,IAEZ;AAEA,WAAO,CAAC,GAAGgB,CAAC;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKsQ,GAAM9L,GAAM;AACf,QAAIe,IAAOF,EAAK,IAAIiL,GAAM9L,CAAI;AAE9B,QAAI,CAACS,EAAK,OAAOM,CAAI;AACnB,YAAM,IAAI,MAAM,qCAAqC,OAAOf,GAAM,0CAA0C,EAAE,OAAOe,CAAI,CAAC;AAG5H,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,CAAC,OAAO+K,GAAM9L,GAAM;AAClB,QAAIsH,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,aAAS9L,KAAKyE,EAAK,OAAOD,GAAMsH,CAAO,GAAG;AACxC,UAAIhN,IAAIuG,EAAK,IAAIiL,GAAMtQ,CAAC;AACxB,YAAM,CAAClB,GAAGkB,CAAC;AAAA,IACb;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQuF,GAAM8F,GAAO;AACnB,WAAO3F,EAAQ,UAAUH,CAAI,KAAKG,EAAQ,eAAe2F,CAAK,KAAK3F,EAAQ,QAAQH,GAAM8F,CAAK,KAAKpG,EAAK,OAAOM,CAAI,KAAKN,EAAK,YAAYoG,CAAK,KAAKpG,EAAK,QAAQM,GAAM8F,CAAK;AAAA,EAC7K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAC,MAAMiF,GAAM;AAcX,aAbIxE,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAAmF;AAAA,MACA,SAAAhF,IAAU;AAAA,IAChB,IAAQH,GACA;AAAA,MACF,MAAA6B,IAAO,CAAA;AAAA,MACP,IAAAL;AAAA,IACN,IAAQxB,GACAoF,IAAU,oBAAI,IAAG,GACjBlR,IAAI,CAAA,GACJlB,IAAIwR,GAGF,EAAAhD,MAAOrB,IAAUxH,EAAK,SAASzE,GAAGsN,CAAE,IAAI7I,EAAK,QAAQzE,GAAGsN,CAAE,OADnD;AAUX,UALK4D,EAAQ,IAAIpS,CAAC,MAChB,MAAM,CAACA,GAAGkB,CAAC,IAIT,CAACkR,EAAQ,IAAIpS,CAAC,KAAK,CAACmG,EAAK,OAAOnG,CAAC,KAAKA,EAAE,SAAS,WAAW,MAAMmS,KAAQ,QAAQA,EAAK,CAACnS,GAAGkB,CAAC,CAAC,MAAM,KAAQ;AAC7G,QAAAkR,EAAQ,IAAIpS,CAAC;AACb,YAAIqS,IAAYlF,IAAUnN,EAAE,SAAS,SAAS,IAAI;AAElD,QAAI2F,EAAK,WAAWzE,GAAG2N,CAAI,MACzBwD,IAAYxD,EAAK3N,EAAE,MAAM,IAG3BA,IAAIA,EAAE,OAAOmR,CAAS,GACtBrS,IAAIuG,EAAK,IAAIiL,GAAMtQ,CAAC;AACpB;AAAA,MACF;AAGA,UAAIA,EAAE,WAAW;AACf;AAIF,UAAI,CAACiM,GAAS;AACZ,YAAIvH,IAAUD,EAAK,KAAKzE,CAAC;AAEzB,YAAIqF,EAAK,IAAIiL,GAAM5L,CAAO,GAAG;AAC3B,UAAA1E,IAAI0E,GACJ5F,IAAIuG,EAAK,IAAIiL,GAAMtQ,CAAC;AACpB;AAAA,QACF;AAAA,MACF;AAGA,UAAIiM,KAAWjM,EAAEA,EAAE,SAAS,CAAC,MAAM,GAAG;AACpC,YAAIoR,IAAW3M,EAAK,SAASzE,CAAC;AAE9B,QAAAA,IAAIoR,GACJtS,IAAIuG,EAAK,IAAIiL,GAAMtQ,CAAC;AACpB;AAAA,MACF;AAGA,MAAAA,IAAIyE,EAAK,OAAOzE,CAAC,GACjBlB,IAAIuG,EAAK,IAAIiL,GAAMtQ,CAAC,GACpBkR,EAAQ,IAAIpS,CAAC;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOwR,GAAM9L,GAAM;AACjB,QAAIqK,IAAapK,EAAK,OAAOD,CAAI,GAC7BxE,IAAIqF,EAAK,IAAIiL,GAAMzB,CAAU;AAEjC,QAAI5J,EAAK,OAAOjF,CAAC;AACf,YAAM,IAAI,MAAM,kCAAkC,OAAOwE,GAAM,0CAA0C,CAAC;AAG5G,WAAOxE;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAOuF,GAAM;AACX,WAAIN,EAAK,OAAOM,CAAI,IACXA,EAAK,OAELA,EAAK,SAAS,IAAIF,EAAK,MAAM,EAAE,KAAK,EAAE;AAAA,EAEjD;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,MAAMiL,GAAM;AACX,QAAIxE,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,aAAS,CAACvG,GAAMf,CAAI,KAAKa,EAAK,MAAMiL,GAAMxE,CAAO;AAC/C,MAAI7G,EAAK,OAAOM,CAAI,MAClB,MAAM,CAACA,GAAMf,CAAI;AAAA,EAGvB;AAEF;AAEA,SAAS6M,GAAUpO,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASmO,EAAgB/N,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKqS,GAAU,OAAO7N,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY6N,GAAU,OAAO7N,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAIgJ,KAAY;AAAA;AAAA;AAAA;AAAA,EAId,gBAAgB/J,GAAO;AACrB,WAAO+J,GAAU,YAAY/J,CAAK,KAAKA,EAAM,KAAK,SAAS,OAAO;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYA,GAAO;AACjB,QAAI,CAAC7D,GAAc6D,CAAK;AACtB,aAAO;AAGT,YAAQA,EAAM,MAAI;AAAA,MAChB,KAAK;AACH,eAAOiC,EAAK,OAAOjC,EAAM,IAAI,KAAK6C,EAAK,OAAO7C,EAAM,IAAI;AAAA,MAE1D,KAAK;AACH,eAAO,OAAOA,EAAM,UAAW,YAAY,OAAOA,EAAM,QAAS,YAAYiC,EAAK,OAAOjC,EAAM,IAAI;AAAA,MAErG,KAAK;AACH,eAAO,OAAOA,EAAM,YAAa,YAAYiC,EAAK,OAAOjC,EAAM,IAAI,KAAK7D,GAAc6D,EAAM,UAAU;AAAA,MAExG,KAAK;AACH,eAAOiC,EAAK,OAAOjC,EAAM,IAAI,KAAKiC,EAAK,OAAOjC,EAAM,OAAO;AAAA,MAE7D,KAAK;AACH,eAAOiC,EAAK,OAAOjC,EAAM,IAAI,KAAK6C,EAAK,OAAO7C,EAAM,IAAI;AAAA,MAE1D,KAAK;AACH,eAAO,OAAOA,EAAM,UAAW,YAAY,OAAOA,EAAM,QAAS,YAAYiC,EAAK,OAAOjC,EAAM,IAAI;AAAA,MAErG,KAAK;AACH,eAAOiC,EAAK,OAAOjC,EAAM,IAAI,KAAK7D,GAAc6D,EAAM,UAAU,KAAK7D,GAAc6D,EAAM,aAAa;AAAA,MAExG,KAAK;AACH,eAAOA,EAAM,eAAe,QAAQwC,EAAM,QAAQxC,EAAM,aAAa,KAAKA,EAAM,kBAAkB,QAAQwC,EAAM,QAAQxC,EAAM,UAAU,KAAK7D,GAAc6D,EAAM,UAAU,KAAK7D,GAAc6D,EAAM,aAAa;AAAA,MAEnN,KAAK;AACH,eAAOiC,EAAK,OAAOjC,EAAM,IAAI,KAAK,OAAOA,EAAM,YAAa,YAAY7D,GAAc6D,EAAM,UAAU;AAAA,MAExG;AACE,eAAO;AAAA,IACf;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgBA,GAAO;AACrB,WAAO,MAAM,QAAQA,CAAK,KAAKA,EAAM,MAAM,CAAA4I,MAAOmB,GAAU,YAAYnB,CAAG,CAAC;AAAA,EAC9E;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB5I,GAAO;AAC1B,WAAO+J,GAAU,YAAY/J,CAAK,KAAKA,EAAM,KAAK,SAAS,YAAY;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgBA,GAAO;AACrB,WAAO+J,GAAU,YAAY/J,CAAK,KAAKA,EAAM,KAAK,SAAS,OAAO;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQmB,GAAI;AACV,YAAQA,EAAG,MAAI;AAAA,MACb,KAAK;AAED,eAAO2N,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM;AAAA,QAClB,CAAW;AAAA,MAGL,KAAK;AAED,eAAO2N,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM;AAAA,QAClB,CAAW;AAAA,MAGL,KAAK;AAED,eAAO2N,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM;AAAA,UACN,MAAMc,EAAK,SAASd,EAAG,IAAI;AAAA,QACvC,CAAW;AAAA,MAGL,KAAK,aACH;AACE,YAAI;AAAA,UACF,SAAAe;AAAA,UACA,MAAAF;AAAA,QACZ,IAAcb;AAEJ,YAAIc,EAAK,OAAOC,GAASF,CAAI;AAC3B,iBAAOb;AAKT,YAAIc,EAAK,UAAUD,GAAME,CAAO;AAC9B,iBAAO4M,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,YAClD,MAAMe;AAAA,YACN,SAASF;AAAA,UACvB,CAAa;AASH,YAAI+M,IAAc9M,EAAK,UAAUD,GAAMb,CAAE,GACrC6N,IAAiB/M,EAAK,UAAUA,EAAK,KAAKD,CAAI,GAAGb,CAAE;AACvD,eAAO2N,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM4N;AAAA,UACN,SAASC;AAAA,QACrB,CAAW;AAAA,MACH;AAAA,MAEF,KAAK;AAED,eAAOF,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM;AAAA,QAClB,CAAW;AAAA,MAGL,KAAK;AAED,eAAO2N,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM;AAAA,QAClB,CAAW;AAAA,MAGL,KAAK,YACH;AACE,YAAI;AAAA,UACF,YAAA+M;AAAA,UACA,eAAAe;AAAA,QACZ,IAAc9N;AACJ,eAAO2N,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,YAAY8N;AAAA,UACZ,eAAef;AAAA,QAC3B,CAAW;AAAA,MACH;AAAA,MAEF,KAAK,iBACH;AACE,YAAI;AAAA,UACF,YAAYgB;AAAA,UACZ,eAAeC;AAAA,QAC3B,IAAchO;AAEJ,eAAI+N,KAAe,OACVJ,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,YAAYgO;AAAA,UACZ,eAAe;AAAA,QAC7B,CAAa,IACQA,KAAkB,OACpBL,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,YAAY;AAAA,UACZ,eAAe+N;AAAA,QAC7B,CAAa,IAEMJ,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,YAAYgO;AAAA,UACZ,eAAeD;AAAA,QAC7B,CAAa;AAAA,MAEL;AAAA,MAEF,KAAK;AAED,eAAOJ,EAAgBA,EAAgB,CAAA,GAAI3N,CAAE,GAAG,CAAA,GAAI;AAAA,UAClD,MAAM;AAAA,UACN,MAAMc,EAAK,KAAKd,EAAG,IAAI;AAAA,QACnC,CAAW;AAAA,IAEX;AAAA,EACE;AAEF,GAEIc,IAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,UAAUD,GAAM;AACd,QAAIsH,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,SAAAG,IAAU;AAAA,IAChB,IAAQH,GACA8F,IAAQnN,EAAK,OAAOD,GAAMsH,CAAO;AAErC,WAAIG,IACF2F,IAAQA,EAAM,MAAM,CAAC,IAErBA,IAAQA,EAAM,MAAM,GAAG,EAAE,GAGpBA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOpN,GAAMiM,GAAS;AAGpB,aAFIoB,IAAS,CAAA,GAEJ7S,IAAI,GAAGA,IAAIwF,EAAK,UAAUxF,IAAIyR,EAAQ,QAAQzR,KAAK;AAC1D,UAAI8S,IAAKtN,EAAKxF,CAAC,GACX+S,IAAKtB,EAAQzR,CAAC;AAElB,UAAI8S,MAAOC;AACT;AAGF,MAAAF,EAAO,KAAKC,CAAE;AAAA,IAChB;AAEA,WAAOD;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAAQrN,GAAMiM,GAAS;AAGrB,aAFIuB,IAAM,KAAK,IAAIxN,EAAK,QAAQiM,EAAQ,MAAM,GAErCzR,IAAI,GAAGA,IAAIgT,GAAKhT,KAAK;AAC5B,UAAIwF,EAAKxF,CAAC,IAAIyR,EAAQzR,CAAC,EAAG,QAAO;AACjC,UAAIwF,EAAKxF,CAAC,IAAIyR,EAAQzR,CAAC,EAAG,QAAO;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUwF,GAAMiM,GAAS;AACvB,QAAIzR,IAAIwF,EAAK,SAAS,GAClByN,IAAKzN,EAAK,MAAM,GAAGxF,CAAC,GACpBkT,IAAKzB,EAAQ,MAAM,GAAGzR,CAAC,GACvB8S,IAAKtN,EAAKxF,CAAC,GACX+S,IAAKtB,EAAQzR,CAAC;AAClB,WAAOyF,EAAK,OAAOwN,GAAIC,CAAE,KAAKJ,IAAKC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOvN,GAAMiM,GAAS;AACpB,QAAIzR,IAAIwF,EAAK,QACTyN,IAAKzN,EAAK,MAAM,GAAGxF,CAAC,GACpBkT,IAAKzB,EAAQ,MAAM,GAAGzR,CAAC;AAC3B,WAAOyF,EAAK,OAAOwN,GAAIC,CAAE;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW1N,GAAMiM,GAAS;AACxB,QAAIzR,IAAIwF,EAAK,SAAS,GAClByN,IAAKzN,EAAK,MAAM,GAAGxF,CAAC,GACpBkT,IAAKzB,EAAQ,MAAM,GAAGzR,CAAC,GACvB8S,IAAKtN,EAAKxF,CAAC,GACX+S,IAAKtB,EAAQzR,CAAC;AAClB,WAAOyF,EAAK,OAAOwN,GAAIC,CAAE,KAAKJ,IAAKC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOvN,GAAMiM,GAAS;AACpB,WAAOjM,EAAK,WAAWiM,EAAQ,UAAUjM,EAAK,MAAM,CAAC1F,GAAGE,MAAMF,MAAM2R,EAAQzR,CAAC,CAAC;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYwF,GAAM;AAChB,WAAOA,EAAKA,EAAK,SAAS,CAAC,IAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQA,GAAMiM,GAAS;AACrB,WAAOhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWjM,GAAMiM,GAAS;AACxB,WAAOjM,EAAK,SAASiM,EAAQ,UAAUhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKA,SAASjM,GAAMiM,GAAS;AACtB,WAAOhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQjM,GAAMiM,GAAS;AACrB,WAAOjM,EAAK,WAAWiM,EAAQ,SAAS,KAAKhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA,EAKA,SAASjM,GAAMiM,GAAS;AACtB,WAAOjM,EAAK,UAAUiM,EAAQ,UAAUhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA,EAKA,aAAajM,GAAMiM,GAAS;AAC1B,WAAOjM,EAAK,SAASiM,EAAQ,UAAUhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKA,SAASjM,GAAMiM,GAAS;AACtB,WAAOjM,EAAK,SAAS,MAAMiM,EAAQ,UAAUhM,EAAK,QAAQD,GAAMiM,CAAO,MAAM;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOjO,GAAO;AACZ,WAAO,MAAM,QAAQA,CAAK,MAAMA,EAAM,WAAW,KAAK,OAAOA,EAAM,CAAC,KAAM;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUgC,GAAMiM,GAAS;AACvB,QAAIjM,EAAK,WAAWiM,EAAQ;AAC1B,aAAO;AAGT,QAAIwB,IAAKzN,EAAK,MAAM,GAAG,EAAE,GACrB0N,IAAKzB,EAAQ,MAAM,GAAG,EAAE,GACxB0B,IAAK3N,EAAKA,EAAK,SAAS,CAAC,GACzB4N,IAAK3B,EAAQA,EAAQ,SAAS,CAAC;AACnC,WAAO0B,MAAOC,KAAM3N,EAAK,OAAOwN,GAAIC,CAAE;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO1N,GAAM;AAOX,aANIsH,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,SAAAG,IAAU;AAAA,IAChB,IAAQH,GACAuG,IAAO,CAAA,GAEFrT,IAAI,GAAGA,KAAKwF,EAAK,QAAQxF;AAChC,MAAAqT,EAAK,KAAK7N,EAAK,MAAM,GAAGxF,CAAC,CAAC;AAG5B,WAAIiN,KACFoG,EAAK,QAAO,GAGPA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK7N,GAAM;AACT,QAAIA,EAAK,WAAW;AAClB,YAAM,IAAI,MAAM,4CAA4C,OAAOA,GAAM,kCAAkC,CAAC;AAG9G,QAAIqJ,IAAOrJ,EAAKA,EAAK,SAAS,CAAC;AAC/B,WAAOA,EAAK,MAAM,GAAG,EAAE,EAAE,OAAOqJ,IAAO,CAAC;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,0BAA0ByE,GAAW;AACnC,YAAQA,EAAU,MAAI;AAAA,MACpB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MAET;AACE,eAAO;AAAA,IACf;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO9N,GAAM;AACX,QAAIA,EAAK,WAAW;AAClB,YAAM,IAAI,MAAM,gDAAgD,OAAOA,GAAM,IAAI,CAAC;AAGpF,WAAOA,EAAK,MAAM,GAAG,EAAE;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,SAASA,GAAM;AACb,QAAIA,EAAK,WAAW;AAClB,YAAM,IAAI,MAAM,gDAAgD,OAAOA,GAAM,sCAAsC,CAAC;AAGtH,QAAIqJ,IAAOrJ,EAAKA,EAAK,SAAS,CAAC;AAE/B,QAAIqJ,KAAQ;AACV,YAAM,IAAI,MAAM,uDAAuD,OAAOrJ,GAAM,gDAAgD,CAAC;AAGvI,WAAOA,EAAK,MAAM,GAAG,EAAE,EAAE,OAAOqJ,IAAO,CAAC;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,SAASrJ,GAAMsC,GAAU;AACvB,QAAI,CAACrC,EAAK,WAAWqC,GAAUtC,CAAI,KAAK,CAACC,EAAK,OAAOD,GAAMsC,CAAQ;AACjE,YAAM,IAAI,MAAM,oCAAoC,OAAOtC,GAAM,qBAAqB,EAAE,OAAOsC,GAAU,kDAAkD,CAAC;AAG9J,WAAOtC,EAAK,MAAMsC,EAAS,MAAM;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUtC,GAAM8N,GAAW;AACzB,QAAIxG,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,WAAO8E,GAAQpM,GAAM,CAAAxE,MAAK;AACxB,UAAI;AAAA,QACF,UAAAkP,IAAW;AAAA,MACnB,IAAUpD;AAEJ,UAAI,GAACtH,KAAqDA,GAAK,WAAY,IAI3E;AAAA,YAAIxE,MAAM;AACR,iBAAO;AAGT,gBAAQsS,EAAU,MAAI;AAAA,UACpB,KAAK,eACH;AACE,gBAAI;AAAA,cACF,MAAM3O;AAAA,YACpB,IAAgB2O;AAEJ,aAAI7N,EAAK,OAAOd,GAAI3D,CAAC,KAAKyE,EAAK,WAAWd,GAAI3D,CAAC,KAAKyE,EAAK,WAAWd,GAAI3D,CAAC,OACvEA,EAAE2D,EAAG,SAAS,CAAC,KAAK;AAGtB;AAAA,UACF;AAAA,UAEF,KAAK,eACH;AACE,gBAAI;AAAA,cACF,MAAM4O;AAAA,YACpB,IAAgBD;AAEJ,gBAAI7N,EAAK,OAAO8N,GAAKvS,CAAC,KAAKyE,EAAK,WAAW8N,GAAKvS,CAAC;AAC/C,qBAAO;AACF,YAAIyE,EAAK,WAAW8N,GAAKvS,CAAC,MAC/BA,EAAEuS,EAAI,SAAS,CAAC,KAAK;AAGvB;AAAA,UACF;AAAA,UAEF,KAAK,cACH;AACE,gBAAI;AAAA,cACF,MAAMC;AAAA,cACN,UAAAC;AAAA,YACd,IAAgBH;AAEJ,YAAI7N,EAAK,OAAO+N,GAAMxS,CAAC,KAAKyE,EAAK,WAAW+N,GAAMxS,CAAC,IACjDA,EAAEwS,EAAK,SAAS,CAAC,KAAK,IACb/N,EAAK,WAAW+N,GAAMxS,CAAC,MAChCA,EAAEwS,EAAK,SAAS,CAAC,KAAK,GACtBxS,EAAEwS,EAAK,MAAM,KAAKC;AAGpB;AAAA,UACF;AAAA,UAEF,KAAK,cACH;AACE,gBAAI;AAAA,cACF,MAAMC;AAAA,cACN,UAAUC;AAAA,YACxB,IAAgBL;AAEJ,gBAAI7N,EAAK,OAAOiO,GAAM1S,CAAC;AACrB,kBAAIkP,MAAa;AACf,gBAAAlP,EAAEA,EAAE,SAAS,CAAC,KAAK;AAAA,uBACVkP,MAAa,WACtB,QAAO;AAAA,kBAEJ,CAAIzK,EAAK,WAAWiO,GAAM1S,CAAC,IAChCA,EAAE0S,EAAK,SAAS,CAAC,KAAK,IACbjO,EAAK,WAAWiO,GAAM1S,CAAC,KAAKwE,EAAKkO,EAAK,MAAM,KAAKC,MAC1D3S,EAAE0S,EAAK,SAAS,CAAC,KAAK,GACtB1S,EAAE0S,EAAK,MAAM,KAAKC;AAGpB;AAAA,UACF;AAAA,UAEF,KAAK,aACH;AACE,gBAAI;AAAA,cACF,MAAMC;AAAA,cACN,SAASC;AAAA,YACvB,IAAgBP;AAEJ,gBAAI7N,EAAK,OAAOmO,GAAMC,CAAG;AACvB;AAGF,gBAAIpO,EAAK,WAAWmO,GAAM5S,CAAC,KAAKyE,EAAK,OAAOmO,GAAM5S,CAAC,GAAG;AACpD,kBAAI8S,IAAOD,EAAI,MAAK;AAEpB,qBAAIpO,EAAK,WAAWmO,GAAMC,CAAG,KAAKD,EAAK,SAASC,EAAI,WAClDC,EAAKF,EAAK,SAAS,CAAC,KAAK,IAGpBE,EAAK,OAAO9S,EAAE,MAAM4S,EAAK,MAAM,CAAC;AAAA,YACzC,MAAO,CAAInO,EAAK,UAAUmO,GAAMC,CAAG,MAAMpO,EAAK,WAAWoO,GAAK7S,CAAC,KAAKyE,EAAK,OAAOoO,GAAK7S,CAAC,KAChFyE,EAAK,WAAWmO,GAAM5S,CAAC,IACzBA,EAAE4S,EAAK,SAAS,CAAC,KAAK,IAEtB5S,EAAE4S,EAAK,SAAS,CAAC,KAAK,IAEfnO,EAAK,WAAWoO,GAAK7S,CAAC,KAAKyE,EAAK,OAAOoO,GAAK7S,CAAC,KAAKyE,EAAK,WAAWoO,GAAK7S,CAAC,KAC7EyE,EAAK,WAAWmO,GAAM5S,CAAC,MACzBA,EAAE4S,EAAK,SAAS,CAAC,KAAK,IAGxB5S,EAAE6S,EAAI,SAAS,CAAC,KAAK,KACZpO,EAAK,WAAWmO,GAAM5S,CAAC,MAC5ByE,EAAK,OAAOoO,GAAK7S,CAAC,MACpBA,EAAE6S,EAAI,SAAS,CAAC,KAAK,IAGvB7S,EAAE4S,EAAK,SAAS,CAAC,KAAK;AAGxB;AAAA,UACF;AAAA,QACV;AAAA;AAAA,IACI,CAAC;AAAA,EACH;AAEF,GAEI9O,KAAU;AAAA;AAAA;AAAA;AAAA,EAIZ,UAAUF,GAAKD,GAAI;AACjB,QAAI;AAAA,MACF,SAAAwL;AAAA,MACA,UAAAD;AAAA,IACN,IAAQtL;AAEJ,QAAIuL,KAAW,MAIf;AAAA,UAAI3K,IAAOC,EAAK,UAAU0K,GAASxL,GAAI;AAAA,QACrC,UAAAuL;AAAA,MACN,CAAK;AACD,MAAAtL,EAAI,UAAUY,GAEVA,KAAQ,QACVZ,EAAI,MAAK;AAAA;AAAA,EAEb;AAEF;AAEA,SAASmP,GAAU9P,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAAS6P,GAAgBzP,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAK+T,GAAU,OAAOvP,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAYuP,GAAU,OAAOvP,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAIkJ,IAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKV,QAAQD,GAAOiE,GAAS;AACtB,QAAIwC,IAASxO,EAAK,QAAQ+H,EAAM,MAAMiE,EAAQ,IAAI;AAElD,WAAIwC,MAAW,IACTzG,EAAM,SAASiE,EAAQ,SAAe,KACtCjE,EAAM,SAASiE,EAAQ,SAAe,IACnC,IAGFwC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQzG,GAAOiE,GAAS;AACtB,WAAOhE,EAAM,QAAQD,GAAOiE,CAAO,MAAM;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,SAASjE,GAAOiE,GAAS;AACvB,WAAOhE,EAAM,QAAQD,GAAOiE,CAAO,MAAM;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOjE,GAAOiE,GAAS;AAErB,WAAOjE,EAAM,WAAWiE,EAAQ,UAAUhM,EAAK,OAAO+H,EAAM,MAAMiE,EAAQ,IAAI;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQjO,GAAO;AACb,WAAO7D,GAAc6D,CAAK,KAAK,OAAOA,EAAM,UAAW,YAAYiC,EAAK,OAAOjC,EAAM,IAAI;AAAA,EAC3F;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUgK,GAAO7I,GAAI;AACnB,QAAImI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,WAAO8E,GAAQpE,GAAO,CAAAxM,MAAK;AACzB,UAAIA,MAAM;AACR,eAAO;AAGT,UAAI;AAAA,QACF,UAAAkP,IAAW;AAAA,MACnB,IAAUpD,GACA;AAAA,QACF,MAAAtH;AAAA,QACA,QAAA0O;AAAA,MACR,IAAUlT;AAEJ,cAAQ2D,EAAG,MAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK,aACH;AACE,UAAA3D,EAAE,OAAOyE,EAAK,UAAUD,GAAMb,GAAImI,CAAO;AACzC;AAAA,QACF;AAAA,QAEF,KAAK,eACH;AACE,UAAIrH,EAAK,OAAOd,EAAG,MAAMa,CAAI,MAAMb,EAAG,SAASuP,KAAUvP,EAAG,WAAWuP,KAAUhE,MAAa,eAC5FlP,EAAE,UAAU2D,EAAG,KAAK;AAGtB;AAAA,QACF;AAAA,QAEF,KAAK,cACH;AACE,UAAIc,EAAK,OAAOd,EAAG,MAAMa,CAAI,MAC3BxE,EAAE,UAAU2D,EAAG,WAGjB3D,EAAE,OAAOyE,EAAK,UAAUD,GAAMb,GAAImI,CAAO;AACzC;AAAA,QACF;AAAA,QAEF,KAAK,eACH;AACE,UAAIrH,EAAK,OAAOd,EAAG,MAAMa,CAAI,KAAKb,EAAG,UAAUuP,MAC7ClT,EAAE,UAAU,KAAK,IAAIkT,IAASvP,EAAG,QAAQA,EAAG,KAAK,MAAM;AAGzD;AAAA,QACF;AAAA,QAEF,KAAK,eACH;AACE,cAAIc,EAAK,OAAOd,EAAG,MAAMa,CAAI,KAAKC,EAAK,WAAWd,EAAG,MAAMa,CAAI;AAC7D,mBAAO;AAGT,UAAAxE,EAAE,OAAOyE,EAAK,UAAUD,GAAMb,GAAImI,CAAO;AACzC;AAAA,QACF;AAAA,QAEF,KAAK,cACH;AACE,cAAIrH,EAAK,OAAOd,EAAG,MAAMa,CAAI,GAAG;AAC9B,gBAAIb,EAAG,aAAauP,KAAUhE,KAAY;AACxC,qBAAO;AACF,aAAIvL,EAAG,WAAWuP,KAAUvP,EAAG,aAAauP,KAAUhE,MAAa,eACxElP,EAAE,UAAU2D,EAAG,UACf3D,EAAE,OAAOyE,EAAK,UAAUD,GAAMb,GAAIqP,GAAgBA,GAAgB,CAAA,GAAIlH,CAAO,GAAG,CAAA,GAAI;AAAA,cAClF,UAAU;AAAA,YAC5B,CAAiB,CAAC;AAAA,UAEN;AACE,YAAA9L,EAAE,OAAOyE,EAAK,UAAUD,GAAMb,GAAImI,CAAO;AAG3C;AAAA,QACF;AAAA,MACV;AAAA,IACI,CAAC;AAAA,EACH;AAEF,GAEI9H,KAAW;AAAA;AAAA;AAAA;AAAA,EAIb,UAAUJ,GAAKD,GAAI;AACjB,QAAI;AAAA,MACF,SAAAwL;AAAA,MACA,UAAAD;AAAA,IACN,IAAQtL;AAEJ,QAAIuL,KAAW,MAIf;AAAA,UAAI3C,IAAQC,EAAM,UAAU0C,GAASxL,GAAI;AAAA,QACvC,UAAAuL;AAAA,MACN,CAAK;AACD,MAAAtL,EAAI,UAAU4I,GAEVA,KAAS,QACX5I,EAAI,MAAK;AAAA;AAAA,EAEb;AAEF,GAEIuP,KAAc,CAAC,UAAU,OAAO;AAEpC,SAASC,GAAUnQ,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASkQ,GAAgB9P,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKoU,GAAU,OAAO5P,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY4P,GAAU,OAAO5P,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAIyB,IAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKV,MAAMoH,GAAO;AACX,QAAIN,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,SAAAG,IAAU;AAAA,IAChB,IAAQH,GACA;AAAA,MACF,QAAAI;AAAA,MACA,OAAAC;AAAA,IACN,IAAQC;AACJ,WAAOpH,EAAM,WAAWoH,CAAK,MAAMH,IAAU,CAACC,GAAQC,CAAK,IAAI,CAACA,GAAOD,CAAM;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA,EAKA,IAAIE,GAAO;AACT,QAAI,CAAA,EAAGrC,CAAG,IAAI/E,EAAM,MAAMoH,CAAK;AAC/B,WAAOrC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOqC,GAAOqE,GAAS;AACrB,WAAOhE,EAAM,OAAOL,EAAM,QAAQqE,EAAQ,MAAM,KAAKhE,EAAM,OAAOL,EAAM,OAAOqE,EAAQ,KAAK;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA,EAKA,SAASrE,GAAO7I,GAAQ;AACtB,QAAIyB,EAAM,QAAQzB,CAAM,GAAG;AACzB,UAAIyB,EAAM,SAASoH,GAAO7I,EAAO,MAAM,KAAKyB,EAAM,SAASoH,GAAO7I,EAAO,KAAK;AAC5E,eAAO;AAGT,UAAI,CAAC+P,GAAIC,CAAE,IAAIvO,EAAM,MAAMoH,CAAK,GAC5B,CAACoH,GAAIC,CAAE,IAAIzO,EAAM,MAAMzB,CAAM;AACjC,aAAOkJ,EAAM,SAAS6G,GAAIE,CAAE,KAAK/G,EAAM,QAAQ8G,GAAIE,CAAE;AAAA,IACvD;AAEA,QAAI,CAAC5G,GAAO9C,CAAG,IAAI/E,EAAM,MAAMoH,CAAK,GAChCsH,IAAe,IACfC,IAAc;AAElB,WAAIlH,EAAM,QAAQlJ,CAAM,KACtBmQ,IAAejH,EAAM,QAAQlJ,GAAQsJ,CAAK,KAAK,GAC/C8G,IAAclH,EAAM,QAAQlJ,GAAQwG,CAAG,KAAK,MAE5C2J,IAAejP,EAAK,QAAQlB,GAAQsJ,EAAM,IAAI,KAAK,GACnD8G,IAAclP,EAAK,QAAQlB,GAAQwG,EAAI,IAAI,KAAK,IAG3C2J,KAAgBC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAavH,GAAOqE,GAAS;AAC3B,QAAIrD,IAAOxF,GAAyBwE,GAAO+G,EAAW,GAElD,CAACS,GAAIC,CAAE,IAAI7O,EAAM,MAAMoH,CAAK,GAC5B,CAAC0H,GAAIC,CAAE,IAAI/O,EAAM,MAAMyL,CAAO,GAC9B5D,IAAQJ,EAAM,SAASmH,GAAIE,CAAE,IAAIA,IAAKF,GACtC7J,IAAM0C,EAAM,SAASoH,GAAIE,CAAE,IAAIF,IAAKE;AAExC,WAAItH,EAAM,SAAS1C,GAAK8C,CAAK,IACpB,OAEAwG,GAAgB;AAAA,MACrB,QAAQxG;AAAA,MACR,OAAO9C;AAAA,IACf,GAASqD,CAAI;AAAA,EAEX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAWhB,GAAO;AAChB,QAAI;AAAA,MACF,QAAAF;AAAA,MACA,OAAAC;AAAA,IACN,IAAQC;AACJ,WAAOK,EAAM,QAAQP,GAAQC,CAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAYC,GAAO;AACjB,QAAI;AAAA,MACF,QAAAF;AAAA,MACA,OAAAC;AAAA,IACN,IAAQC;AACJ,WAAOK,EAAM,OAAOP,GAAQC,CAAK;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAWC,GAAO;AAChB,WAAO,CAACpH,EAAM,YAAYoH,CAAK;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAUA,GAAO;AACf,WAAO,CAACpH,EAAM,WAAWoH,CAAK;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ5J,GAAO;AACb,WAAO7D,GAAc6D,CAAK,KAAKiK,EAAM,QAAQjK,EAAM,MAAM,KAAKiK,EAAM,QAAQjK,EAAM,KAAK;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,OAAO4J,GAAO;AACb,UAAM,CAACA,EAAM,QAAQ,QAAQ,GAC7B,MAAM,CAACA,EAAM,OAAO,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMA,GAAO;AACX,QAAI,CAACS,CAAK,IAAI7H,EAAM,MAAMoH,CAAK;AAC/B,WAAOS;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUT,GAAOzI,GAAI;AACnB,QAAImI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,WAAO8E,GAAQxE,GAAO,CAAAlN,MAAK;AACzB,UAAIA,MAAM;AACR,eAAO;AAGT,UAAI;AAAA,QACF,UAAAgQ,IAAW;AAAA,MACnB,IAAUpD,GACAkI,GACAC;AAEJ,UAAI/E,MAAa,UAAU;AAIzB,YAAIgF,IAAclP,EAAM,YAAY9F,CAAC;AAErC,QAAI8F,EAAM,UAAU9F,CAAC,KACnB8U,IAAiB,WACjBC,IAAgBC,IAAcF,IAAiB,eAE/CA,IAAiB,YACjBC,IAAgBC,IAAcF,IAAiB;AAAA,MAEnD,MAAO,CAAI9E,MAAa,YAClBlK,EAAM,UAAU9F,CAAC,KACnB8U,IAAiB,YACjBC,IAAgB,cAEhBD,IAAiB,WACjBC,IAAgB,eAGlBD,IAAiB9E,GACjB+E,IAAgB/E;AAGlB,UAAIhD,IAASO,EAAM,UAAUvN,EAAE,QAAQyE,GAAI;AAAA,QACzC,UAAUqQ;AAAA,MAClB,CAAO,GACG7H,IAAQM,EAAM,UAAUvN,EAAE,OAAOyE,GAAI;AAAA,QACvC,UAAUsQ;AAAA,MAClB,CAAO;AAED,UAAI,CAAC/H,KAAU,CAACC;AACd,eAAO;AAGT,MAAAjN,EAAE,SAASgN,GACXhN,EAAE,QAAQiN;AAAA,IACZ,CAAC;AAAA,EACH;AAEF,GAEIjI,KAAW;AAAA;AAAA;AAAA;AAAA,EAIb,UAAUN,GAAKD,GAAI;AACjB,QAAI;AAAA,MACF,SAAAwL;AAAA,MACA,UAAAD;AAAA,IACN,IAAQtL;AAEJ,QAAIuL,KAAW,MAIf;AAAA,UAAI3K,IAAOQ,EAAM,UAAUmK,GAASxL,GAAI;AAAA,QACtC,UAAAuL;AAAA,MACN,CAAK;AACD,MAAAtL,EAAI,UAAUY,GAEVA,KAAQ,QACVZ,EAAI,MAAK;AAAA;AAAA,EAEb;AAEF,GAaIuQ,KAAc,CAAC5O,GAAMkL,MAAY;AACnC,WAASlO,KAAOgD,GAAM;AACpB,QAAI5F,IAAI4F,EAAKhD,CAAG,GACZjC,IAAImQ,EAAQlO,CAAG;AAEnB,QAAI5D,GAAcgB,CAAC,KAAKhB,GAAc2B,CAAC;AACrC,UAAI,CAAC6T,GAAYxU,GAAGW,CAAC,EAAG,QAAO;AAAA,eACtB,MAAM,QAAQX,CAAC,KAAK,MAAM,QAAQW,CAAC,GAAG;AAC/C,UAAIX,EAAE,WAAWW,EAAE,OAAQ,QAAO;AAElC,eAAStB,IAAI,GAAGA,IAAIW,EAAE,QAAQX;AAC5B,YAAIW,EAAEX,CAAC,MAAMsB,EAAEtB,CAAC,EAAG,QAAO;AAAA,IAE9B,WAAWW,MAAMW;AACf,aAAO;AAAA,EAEX;AAQA,WAAS8T,KAAQ3D;AACf,QAAIlL,EAAK6O,CAAI,MAAM,UAAa3D,EAAQ2D,CAAI,MAAM;AAChD,aAAO;AAIX,SAAO;AACT,GAEIC,KAAc,CAAC,MAAM,GACrBC,KAAe,CAAC,UAAU,OAAO;AAErC,SAASC,GAAUtR,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASqR,GAAgBjR,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKuV,GAAU,OAAO/Q,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY+Q,GAAU,OAAO/Q,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAI0B,IAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,OAAOO,GAAMiL,GAAS;AACpB,QAAI3E,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,OAAA2I,IAAQ;AAAA,IACd,IAAQ3I;AAEJ,aAAS4I,EAASpS,GAAK;AACrB,UAAI8K,IAAOxF,GAAyBtF,GAAK+R,EAAW;AAEpD,aAAOjH;AAAA,IACT;AAEA,WAAO+G,GAAYM,IAAQC,EAASlP,CAAI,IAAIA,GAAMiP,IAAQC,EAASjE,CAAO,IAAIA,CAAO;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOjO,GAAO;AACZ,WAAO7D,GAAc6D,CAAK,KAAK,OAAOA,EAAM,QAAS;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAO;AAChB,WAAO,MAAM,QAAQA,CAAK,KAAKA,EAAM,MAAM,CAAA4I,MAAOnG,EAAK,OAAOmG,CAAG,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYC,GAAO;AACjB,WAAOA,EAAM,SAAS;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ7F,GAAM6F,GAAO;AACnB,aAAS9I,KAAO8I;AACd,UAAI9I,MAAQ,WAIR,CAACiD,EAAK,eAAejD,CAAG,KAAKiD,EAAKjD,CAAG,MAAM8I,EAAM9I,CAAG;AACtD,eAAO;AAIX,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYgD,GAAMoP,GAAa;AAC7B,QAAIC,IAAS,CAACJ,GAAgB,CAAA,GAAIjP,CAAI,CAAC;AAEvC,aAASsP,KAAOF,GAAa;AAC3B,UAAIvH,IAAOxF,GAAyBiN,GAAKP,EAAY,GAEjD,CAACzH,GAAO9C,CAAG,IAAI/E,EAAM,MAAM6P,CAAG,GAC9BpH,IAAO,CAAA,GACP/O,IAAI;AAER,eAASmS,KAAQ+D,GAAQ;AACvB,YAAI;AAAA,UACF,QAAAE;AAAA,QACV,IAAYjE,EAAK,MACLqC,IAASxU;AAGb,YAFAA,KAAKoW,GAEDjI,EAAM,UAAUqG,KAAUnJ,EAAI,UAAUrL,GAAG;AAC7C,iBAAO,OAAOmS,GAAMzD,CAAI,GACxBK,EAAK,KAAKoD,CAAI;AACd;AAAA,QACF;AAGA,YAAIhE,EAAM,WAAW9C,EAAI,WAAW8C,EAAM,WAAWnO,KAAKqL,EAAI,WAAWmJ,MAAWrG,EAAM,SAASnO,KAAKqL,EAAI,SAASmJ,KAAUnJ,EAAI,WAAWmJ,KAAUA,MAAW,GAAG;AACpK,UAAAzF,EAAK,KAAKoD,CAAI;AACd;AAAA,QACF;AAKA,YAAIkE,IAASlE,GACTZ,IAAS,QACT+E,IAAQ;AAEZ,YAAIjL,EAAI,SAASrL,GAAG;AAClB,cAAIuW,IAAMlL,EAAI,SAASmJ;AACvB,UAAA8B,IAAQR,GAAgBA,GAAgB,CAAA,GAAIO,CAAM,GAAG,CAAA,GAAI;AAAA,YACvD,MAAMA,EAAO,KAAK,MAAME,CAAG;AAAA,UACvC,CAAW,GACDF,IAASP,GAAgBA,GAAgB,CAAA,GAAIO,CAAM,GAAG,CAAA,GAAI;AAAA,YACxD,MAAMA,EAAO,KAAK,MAAM,GAAGE,CAAG;AAAA,UAC1C,CAAW;AAAA,QACH;AAEA,YAAIpI,EAAM,SAASqG,GAAQ;AACzB,cAAIgC,IAAOrI,EAAM,SAASqG;AAE1B,UAAAjD,IAASuE,GAAgBA,GAAgB,CAAA,GAAIO,CAAM,GAAG,CAAA,GAAI;AAAA,YACxD,MAAMA,EAAO,KAAK,MAAM,GAAGG,CAAI;AAAA,UAC3C,CAAW,GACDH,IAASP,GAAgBA,GAAgB,CAAA,GAAIO,CAAM,GAAG,CAAA,GAAI;AAAA,YACxD,MAAMA,EAAO,KAAK,MAAMG,CAAI;AAAA,UACxC,CAAW;AAAA,QACH;AAEA,eAAO,OAAOH,GAAQ3H,CAAI,GAEtB6C,KACFxC,EAAK,KAAKwC,CAAM,GAGlBxC,EAAK,KAAKsH,CAAM,GAEZC,KACFvH,EAAK,KAAKuH,CAAK;AAAA,MAEnB;AAEA,MAAAJ,IAASnH;AAAA,IACX;AAEA,WAAOmH;AAAA,EACT;AAEF;AAEA,SAASO,GAAUlS,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASiS,GAAgB7R,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKmW,GAAU,OAAO3R,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY2R,GAAU,OAAO3R,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAE3hB,IAAI8R,KAAe,CAAC3R,GAAQqB,GAAWpB,MAAO;AAC5C,UAAQA,EAAG,MAAI;AAAA,IACb,KAAK,eACH;AACE,UAAI;AAAA,QACF,MAAAa;AAAA,QACA,MAAAe;AAAA,MACV,IAAY5B,GACA6J,IAASnI,EAAK,OAAO3B,GAAQc,CAAI,GACjC+L,IAAQ/L,EAAKA,EAAK,SAAS,CAAC;AAEhC,UAAI+L,IAAQ/C,EAAO,SAAS;AAC1B,cAAM,IAAI,MAAM,oDAAsD,OAAOhJ,GAAM,wDAAwD,CAAC;AAK9I,UAFAgJ,EAAO,SAAS,OAAO+C,GAAO,GAAGhL,CAAI,GAEjCR;AACF,iBAAS,CAACyH,GAAOjK,CAAG,KAAKyC,EAAM,OAAOD,CAAS;AAC7C,UAAAA,EAAUxC,CAAG,IAAIkK,EAAM,UAAUD,GAAO7I,CAAE;AAI9C;AAAA,IACF;AAAA,IAEF,KAAK,eACH;AACE,UAAI;AAAA,QACF,MAAMkB;AAAA,QACN,QAAAqO;AAAA,QACA,MAAA1N;AAAA,MACV,IAAY7B;AACJ,UAAI6B,EAAK,WAAW,EAAG;AAEvB,UAAIsH,IAAQzH,EAAK,KAAK3B,GAAQmB,CAAK,GAE/BoL,IAASnD,EAAM,KAAK,MAAM,GAAGoG,CAAM,GAEnC8B,IAAQlI,EAAM,KAAK,MAAMoG,CAAM;AAInC,UAFApG,EAAM,OAAOmD,IAASzK,IAAOwP,GAEzBjQ;AACF,iBAAS,CAACuQ,GAAQlB,CAAI,KAAKpP,EAAM,OAAOD,CAAS;AAC/C,UAAAA,EAAUqP,CAAI,IAAI3H,EAAM,UAAU6I,GAAQ3R,CAAE;AAIhD;AAAA,IACF;AAAA,IAEF,KAAK,cACH;AACE,UAAI;AAAA,QACF,MAAMyC;AAAA,MAChB,IAAYzC,GAEA4R,IAASlQ,EAAK,IAAI3B,GAAQ0C,CAAM,GAEhC8G,IAAWzI,EAAK,SAAS2B,CAAM,GAC/BL,IAAOV,EAAK,IAAI3B,GAAQwJ,CAAQ,GAEhCsI,IAAUnQ,EAAK,OAAO3B,GAAQ0C,CAAM,GAEpCqP,IAASrP,EAAOA,EAAO,SAAS,CAAC;AAErC,UAAInB,EAAK,OAAOsQ,CAAM,KAAKtQ,EAAK,OAAOc,CAAI;AACzC,QAAAA,EAAK,QAAQwP,EAAO;AAAA,eACX,CAACtQ,EAAK,OAAOsQ,CAAM,KAAK,CAACtQ,EAAK,OAAOc,CAAI;AAClD,QAAAA,EAAK,SAAS,KAAK,GAAGwP,EAAO,QAAQ;AAAA;AAErC,cAAM,IAAI,MAAM,kDAAoD,OAAOnP,GAAQ,sCAAsC,EAAE,OAAOmP,GAAQ,GAAG,EAAE,OAAOxP,CAAI,CAAC;AAK7J,UAFAyP,EAAQ,SAAS,OAAOC,GAAQ,CAAC,GAE7B1Q;AACF,iBAAS,CAAC2Q,GAASC,CAAK,KAAK3Q,EAAM,OAAOD,CAAS;AACjD,UAAAA,EAAU4Q,CAAK,IAAIlJ,EAAM,UAAUiJ,GAAS/R,CAAE;AAIlD;AAAA,IACF;AAAA,IAEF,KAAK,aACH;AACE,UAAI;AAAA,QACF,MAAM6C;AAAA,QACN,SAAA9B;AAAA,MACV,IAAYf;AAEJ,UAAIc,EAAK,WAAW+B,GAAQ9B,CAAO;AACjC,cAAM,IAAI,MAAM,uBAAuB,OAAO8B,GAAQ,iBAAiB,EAAE,OAAO9B,GAAS,6CAA6C,CAAC;AAGzI,UAAIkR,IAASvQ,EAAK,IAAI3B,GAAQ8C,CAAM,GAEhCqP,IAAWxQ,EAAK,OAAO3B,GAAQ8C,CAAM,GAErCsP,IAAUtP,EAAOA,EAAO,SAAS,CAAC;AAOtC,MAAAqP,EAAS,SAAS,OAAOC,GAAS,CAAC;AAEnC,UAAIC,IAAWtR,EAAK,UAAU+B,GAAQ7C,CAAE,GACpCsD,IAAY5B,EAAK,IAAI3B,GAAQe,EAAK,OAAOsR,CAAQ,CAAC,GAClD7O,IAAW6O,EAASA,EAAS,SAAS,CAAC;AAG3C,UAFA9O,EAAU,SAAS,OAAOC,GAAU,GAAG0O,CAAM,GAEzC7Q;AACF,iBAAS,CAACiR,GAASC,EAAK,KAAKjR,EAAM,OAAOD,CAAS;AACjD,UAAAA,EAAUkR,EAAK,IAAIxJ,EAAM,UAAUuJ,GAASrS,CAAE;AAIlD;AAAA,IACF;AAAA,IAEF,KAAK,eACH;AACE,UAAI;AAAA,QACF,MAAMgD;AAAA,MAChB,IAAYhD,GACAuS,KAAUvP,EAAOA,EAAO,SAAS,CAAC,GAElCwP,KAAW9Q,EAAK,OAAO3B,GAAQiD,CAAM;AAMzC,UAJAwP,GAAS,SAAS,OAAOD,IAAS,CAAC,GAI/BnR;AACF,iBAAS,CAACqR,IAASC,EAAK,KAAKrR,EAAM,OAAOD,CAAS,GAAG;AACpD,cAAIkO,IAASxG,EAAM,UAAU2J,IAASzS,CAAE;AAExC,cAAIoB,KAAa,QAAQkO,KAAU;AACjC,YAAAlO,EAAUsR,EAAK,IAAIpD;AAAA,eACd;AACL,gBAAIqD,KAAQ,QAER7I,KAAO;AAEX,qBAAS,CAAC3O,IAAGkB,EAAC,KAAKqF,EAAK,MAAM3B,CAAM;AAClC,kBAAIe,EAAK,QAAQzE,IAAG2G,CAAM,MAAM;AAC9B,gBAAA2P,KAAQ,CAACxX,IAAGkB,EAAC;AAAA,mBACR;AACL,gBAAAyN,KAAO,CAAC3O,IAAGkB,EAAC;AACZ;AAAA,cACF;AAGF,gBAAIuW,KAAa;AAEjB,YAAID,MAAS7I,OACPhJ,EAAK,OAAOgJ,GAAK,CAAC,GAAG9G,CAAM,IAC7B4P,KAAa,CAAC9R,EAAK,YAAYgJ,GAAK,CAAC,CAAC,IAEtC8I,KAAa9R,EAAK,OAAO6R,GAAM,CAAC,GAAG3P,CAAM,EAAE,SAASlC,EAAK,OAAOgJ,GAAK,CAAC,GAAG9G,CAAM,EAAE,SAIjF2P,MAAS,CAACC,MACZH,GAAQ,OAAOE,GAAM,CAAC,GACtBF,GAAQ,SAASE,GAAM,CAAC,EAAE,KAAK,UACtB7I,MACT2I,GAAQ,OAAO3I,GAAK,CAAC,GACrB2I,GAAQ,SAAS,KAEjBrR,IAAY;AAAA,UAEhB;AAAA,QACF;AAGF;AAAA,IACF;AAAA,IAEF,KAAK,eACH;AACE,UAAI;AAAA,QACF,MAAMqC;AAAA,QACN,QAAQoP;AAAA,QACR,MAAMC;AAAA,MAChB,IAAY9S;AACJ,UAAI8S,GAAM,WAAW,EAAG;AAExB,UAAIC,KAASrR,EAAK,KAAK3B,GAAQ0D,EAAM,GAEjCuP,KAAUD,GAAO,KAAK,MAAM,GAAGF,EAAO,GAEtCI,KAASF,GAAO,KAAK,MAAMF,KAAUC,GAAM,MAAM;AAIrD,UAFAC,GAAO,OAAOC,KAAUC,IAEpB7R;AACF,iBAAS,CAAC8R,IAASC,EAAK,KAAK9R,EAAM,OAAOD,CAAS;AACjD,UAAAA,EAAU+R,EAAK,IAAIrK,EAAM,UAAUoK,IAASlT,CAAE;AAIlD;AAAA,IACF;AAAA,IAEF,KAAK,YACH;AACE,UAAI;AAAA,QACF,MAAM2D;AAAA,QACN,YAAAoJ;AAAA,QACA,eAAAe;AAAA,MACV,IAAY9N;AAEJ,UAAI2D,GAAO,WAAW;AACpB,cAAM,IAAI,MAAM,yCAAyC;AAG3D,UAAIyP,KAAS1R,EAAK,IAAI3B,GAAQ4D,EAAM;AAEpC,eAAS0P,MAASvF,IAAe;AAC/B,YAAIuF,OAAU,cAAcA,OAAU;AACpC,gBAAM,IAAI,MAAM,mBAAoB,OAAOA,IAAO,sBAAuB,CAAC;AAG5E,YAAIxU,KAAQiP,GAAcuF,EAAK;AAE/B,QAAIxU,MAAS,OACX,OAAOuU,GAAOC,EAAK,IAEnBD,GAAOC,EAAK,IAAIxU;AAAA,MAEpB;AAGA,eAASyU,MAASvG;AAChB,QAAKe,GAAc,eAAewF,EAAK,KACrC,OAAOF,GAAOE,EAAK;AAIvB;AAAA,IACF;AAAA,IAEF,KAAK,iBACH;AACE,UAAI;AAAA,QACF,eAAetF;AAAA,MACzB,IAAYhO;AAEJ,UAAIgO,MAAkB;AACpB,QAAA5M,IAAY4M;AAAA,WACP;AACL,YAAI5M,KAAa,MAAM;AACrB,cAAI,CAACC,EAAM,QAAQ2M,EAAc;AAC/B,kBAAM,IAAI,MAAM,mEAAqE,OAAO,KAAK,UAAUA,EAAc,GAAG,sCAAsC,CAAC;AAGrK,UAAA5M,IAAYqQ,GAAgB,CAAA,GAAIzD,EAAc;AAAA,QAChD;AAEA,iBAASuF,MAASvF,IAAgB;AAChC,cAAIwF,KAASxF,GAAeuF,EAAK;AAEjC,cAAIC,MAAU,MAAM;AAClB,gBAAID,OAAU,YAAYA,OAAU;AAClC,oBAAM,IAAI,MAAM,sBAAuB,OAAOA,IAAO,sBAAuB,CAAC;AAG/E,mBAAOnS,EAAUmS,EAAK;AAAA,UACxB;AACE,YAAAnS,EAAUmS,EAAK,IAAIC;AAAA,QAEvB;AAAA,MACF;AAEA;AAAA,IACF;AAAA,IAEF,KAAK,cACH;AACE,UAAI;AAAA,QACF,MAAMC;AAAA,QACN,UAAA3E;AAAA,QACA,YAAYf;AAAA,MACtB,IAAY/N;AAEJ,UAAIyT,GAAO,WAAW;AACpB,cAAM,IAAI,MAAM,kDAAoD,OAAOA,IAAQ,0CAA0C,CAAC;AAGhI,UAAIC,KAAShS,EAAK,IAAI3B,GAAQ0T,EAAM,GAEhCE,KAAWjS,EAAK,OAAO3B,GAAQ0T,EAAM,GAErCG,KAAUH,GAAOA,GAAO,SAAS,CAAC,GAClCI;AAEJ,UAAIvS,EAAK,OAAOoS,EAAM,GAAG;AACvB,YAAII,KAAWJ,GAAO,KAAK,MAAM,GAAG5E,EAAQ,GAExCiF,KAAUL,GAAO,KAAK,MAAM5E,EAAQ;AAExC,QAAA4E,GAAO,OAAOI,IACdD,KAAUpC,GAAgBA,GAAgB,CAAA,GAAI1D,EAAW,GAAG,CAAA,GAAI;AAAA,UAC9D,MAAMgG;AAAA,QAClB,CAAW;AAAA,MACH,OAAO;AACL,YAAIC,KAAWN,GAAO,SAAS,MAAM,GAAG5E,EAAQ,GAE5CmF,KAAUP,GAAO,SAAS,MAAM5E,EAAQ;AAE5C,QAAA4E,GAAO,WAAWM,IAClBH,KAAUpC,GAAgBA,GAAgB,CAAA,GAAI1D,EAAW,GAAG,CAAA,GAAI;AAAA,UAC9D,UAAUkG;AAAA,QACtB,CAAW;AAAA,MACH;AAIA,UAFAN,GAAS,SAAS,OAAOC,KAAU,GAAG,GAAGC,EAAO,GAE5CzS;AACF,iBAAS,CAAC8S,IAASC,EAAK,KAAK9S,EAAM,OAAOD,CAAS;AACjD,UAAAA,EAAU+S,EAAK,IAAIrL,EAAM,UAAUoL,IAASlU,CAAE;AAIlD;AAAA,IACF;AAAA,EACN;AAEE,SAAOoB;AACT,GAEIgT,KAAoB;AAAA;AAAA;AAAA;AAAA,EAItB,UAAUrU,GAAQC,GAAI;AACpB,IAAAD,EAAO,WAAWsU,GAAYtU,EAAO,QAAQ;AAC7C,QAAIqB,IAAYrB,EAAO,aAAasU,GAAYtU,EAAO,SAAS;AAEhE,QAAI;AACF,MAAAqB,IAAYsQ,GAAa3R,GAAQqB,GAAWpB,CAAE;AAAA,IAChD,UAAC;AACC,MAAAD,EAAO,WAAWuU,GAAYvU,EAAO,QAAQ,GAEzCqB,IACFrB,EAAO,YAAYwU,GAAQnT,CAAS,IAAIkT,GAAYlT,CAAS,IAAIA,IAEjErB,EAAO,YAAY;AAAA,IAEvB;AAAA,EACF;AAEF,GAEIyU,KAAY,CAAC,MAAM,GACnBC,KAAa,CAAC,UAAU;AAE5B,SAASC,GAAUpV,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAASmV,GAAgB/U,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKqZ,GAAU,OAAO7U,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY6U,GAAU,OAAO7U,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAIgV,KAAiB;AAAA;AAAA;AAAA;AAAA,EAInB,YAAY7U,GAAQ8U,GAAO;AACzB,QAAI1M,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,SAAA+U,IAAU;AAAA,QACV,OAAA1M,IAAQ;AAAA,QACR,MAAAC,IAAO;AAAA,MACf,IAAUF,GACA;AAAA,QACF,IAAAlC;AAAA,QACA,OAAAqB;AAAA,QACA,QAAAyN;AAAA,MACR,IAAU5M;AAMJ,UAJIzG,EAAK,OAAOmT,CAAK,MACnBA,IAAQ,CAACA,CAAK,IAGZA,EAAM,WAAW,GAIrB;AAAA,YAAI,CAACjT,CAAI,IAAIiT;AAoBb,YAhBK5O,MACClG,EAAO,YACTkG,IAAKlG,EAAO,YACHA,EAAO,SAAS,SAAS,IAClCkG,IAAK/F,EAAO,IAAIH,GAAQ,CAAA,CAAE,IAE1BkG,IAAK,CAAC,CAAC,GAGT8O,IAAS,KAGPA,KAAU,SACZA,IAAS,KAGP1T,EAAM,QAAQ4E,CAAE;AAKlB,cAJK6O,MACH7O,IAAK/F,EAAO,YAAYH,GAAQkG,CAAE,IAGhC5E,EAAM,YAAY4E,CAAE;AACtB,YAAAA,IAAKA,EAAG;AAAA,eACH;AACL,gBAAI,CAAA,EAAGG,CAAG,IAAI/E,EAAM,MAAM4E,CAAE,GACxB+O,IAAW9U,EAAO,SAASH,GAAQqG,CAAG;AAC1C,YAAAjF,EAAW,OAAOpB,GAAQ;AAAA,cACxB,IAAAkG;AAAA,YACZ,CAAW,GACDA,IAAK+O,EAAS,MAAK;AAAA,UACrB;AAGF,YAAIlM,EAAM,QAAQ7C,CAAE,GAAG;AACrB,UAAIqB,KAAS,SACPhG,EAAK,OAAOM,CAAI,IAClB0F,IAAQ,CAAAnM,MAAKmG,EAAK,OAAOnG,CAAC,IACjB4E,EAAO,SAAS6B,CAAI,IAC7B0F,IAAQ,CAAAnM,MAAKmG,EAAK,OAAOnG,CAAC,KAAK+E,EAAO,SAASH,GAAQ5E,CAAC,IAExDmM,IAAQ,CAAAnM,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAIzC,cAAI,CAAC2G,CAAK,IAAI5B,EAAO,MAAMH,GAAQ;AAAA,YACjC,IAAIkG,EAAG;AAAA,YACP,OAAAqB;AAAA,YACA,MAAAe;AAAA,YACA,OAAAD;AAAA,UACV,CAAS;AAED,cAAItG,GAAO;AACT,gBAAI,CAAA,EAAGmT,CAAU,IAAInT,GACjBoT,IAAUhV,EAAO,QAAQH,GAAQkV,CAAU,GAC3CE,IAAUjV,EAAO,MAAMH,GAAQkG,GAAIgP,CAAU;AACjD,YAAA9T,EAAW,WAAWpB,GAAQ;AAAA,cAC5B,IAAAkG;AAAA,cACA,OAAAqB;AAAA,cACA,MAAAe;AAAA,cACA,OAAAD;AAAA,YACZ,CAAW;AACD,gBAAIvH,IAAOqU,EAAQ,MAAK;AACxB,YAAAjP,IAAKkP,IAAUrU,EAAK,KAAKD,CAAI,IAAIA;AAAA,UACnC;AACE;AAAA,QAEJ;AAEA,YAAIqK,IAAapK,EAAK,OAAOmF,CAAE,GAC3B2G,IAAQ3G,EAAGA,EAAG,SAAS,CAAC;AAE5B,YAAI,GAACmC,KAASlI,EAAO,KAAKH,GAAQ;AAAA,UAChC,IAAImL;AAAA,QACZ,CAAO,IAID;AAAA,mBAAS/B,KAAS0L,GAAO;AACvB,gBAAI3T,IAAQgK,EAAW,OAAO0B,CAAK;AAEnC,YAAAA,KACA7M,EAAO,MAAM;AAAA,cACX,MAAM;AAAA,cACN,MAAMmB;AAAA,cACN,MAAMiI;AAAA,YAChB,CAAS,GACDlD,IAAKnF,EAAK,KAAKmF,CAAE;AAAA,UACnB;AAIA,cAFAA,IAAKnF,EAAK,SAASmF,CAAE,GAEjB8O,GAAQ;AACV,gBAAIlM,IAAQ3I,EAAO,IAAIH,GAAQkG,CAAE;AAEjC,YAAI4C,KACF1H,EAAW,OAAOpB,GAAQ8I,CAAK;AAAA,UAEnC;AAAA;AAAA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU9I,GAAQ;AAChB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,IAAAkG,IAAKlG,EAAO;AAAA,QACZ,MAAAsI,IAAO;AAAA,QACP,OAAAD,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,OAAAb;AAAA,MACR,IAAUa;AAMJ,UAJIb,KAAS,SACXA,IAAQxG,EAAK,OAAOmF,CAAE,IAAImP,GAAUrV,GAAQkG,CAAE,IAAI,CAAA9K,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAG7E,EAAC8K,GAIL;AAAA,YAAImE,IAAUlK,EAAO,MAAMH,GAAQ;AAAA,UACjC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACR,CAAO,GACGqD,IAAW,MAAM,KAAKrB,GAAS,CAAAhK,MAAQ;AACzC,cAAI,CAAA,EAAG/D,CAAC,IAAI+D;AACZ,iBAAOF,EAAO,QAAQH,GAAQ1D,CAAC;AAAA,QACjC,CAAC;AAED,iBAAS6Y,KAAWzJ,GAAU;AAC5B,cAAI5K,IAAOqU,EAAQ,MAAK;AAExB,cAAIrU,EAAK,SAAS;AAChB,kBAAM,IAAI,MAAM,+BAA+B,OAAOA,GAAM,4CAA4C,CAAC;AAG3G,cAAIwU,IAAkBnV,EAAO,KAAKH,GAAQe,EAAK,OAAOD,CAAI,CAAC,GACvD,CAACgJ,GAAQqB,CAAU,IAAImK,GACvBzI,IAAQ/L,EAAKA,EAAK,SAAS,CAAC,GAC5B;AAAA,YACF,QAAAsQ;AAAA,UACV,IAAYtH,EAAO;AAEX,cAAIsH,MAAW,GAAG;AAChB,gBAAImE,IAASxU,EAAK,KAAKoK,CAAU;AACjC,YAAA/J,EAAW,UAAUpB,GAAQ;AAAA,cAC3B,IAAIc;AAAA,cACJ,IAAIyU;AAAA,cACJ,OAAAlN;AAAA,YACZ,CAAW,GACDjH,EAAW,YAAYpB,GAAQ;AAAA,cAC7B,IAAImL;AAAA,cACJ,OAAA9C;AAAA,YACZ,CAAW;AAAA,UACH,WAAWwE,MAAU;AACnB,YAAAzL,EAAW,UAAUpB,GAAQ;AAAA,cAC3B,IAAIc;AAAA,cACJ,IAAIqK;AAAA,cACJ,OAAA9C;AAAA,YACZ,CAAW;AAAA,mBACQwE,MAAUuE,IAAS,GAAG;AAC/B,gBAAIoE,IAAUzU,EAAK,KAAKoK,CAAU;AAElC,YAAA/J,EAAW,UAAUpB,GAAQ;AAAA,cAC3B,IAAIc;AAAA,cACJ,IAAI0U;AAAA,cACJ,OAAAnN;AAAA,YACZ,CAAW;AAAA,UACH,OAAO;AACL,gBAAIoN,IAAY1U,EAAK,KAAKD,CAAI,GAE1B4U,IAAW3U,EAAK,KAAKoK,CAAU;AAEnC,YAAA/J,EAAW,WAAWpB,GAAQ;AAAA,cAC5B,IAAIyV;AAAA,cACJ,OAAApN;AAAA,YACZ,CAAW,GACDjH,EAAW,UAAUpB,GAAQ;AAAA,cAC3B,IAAIc;AAAA,cACJ,IAAI4U;AAAA,cACJ,OAAArN;AAAA,YACZ,CAAW;AAAA,UACH;AAAA,QACF;AAAA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAWrI,GAAQ;AACjB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,OAAAuH;AAAA,QACA,IAAArB,IAAKlG,EAAO;AAAA,MACpB,IAAUoI,GACA;AAAA,QACF,SAAA2M,IAAU;AAAA,QACV,OAAA1M,IAAQ;AAAA,QACR,MAAAC,IAAO;AAAA,MACf,IAAUF;AAEJ,UAAKlC,GAIL;AAAA,YAAIqB,KAAS;AACX,cAAIxG,EAAK,OAAOmF,CAAE,GAAG;AACnB,gBAAI,CAAC4D,CAAM,IAAI3J,EAAO,OAAOH,GAAQkG,CAAE;AAEvC,YAAAqB,IAAQ,CAAAnM,MAAK0O,EAAO,SAAS,SAAS1O,CAAC;AAAA,UACzC;AACE,YAAAmM,IAAQ,CAAAnM,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAQzC,YAJI,CAAC2Z,KAAWzT,EAAM,QAAQ4E,CAAE,MAC9BA,IAAK/F,EAAO,YAAYH,GAAQkG,CAAE,IAGhC5E,EAAM,QAAQ4E,CAAE;AAClB,cAAI5E,EAAM,YAAY4E,CAAE;AACtB,YAAAA,IAAKA,EAAG;AAAA,eACH;AACL,gBAAI,CAAA,EAAGG,CAAG,IAAI/E,EAAM,MAAM4E,CAAE,GACxB+O,IAAW9U,EAAO,SAASH,GAAQqG,CAAG;AAC1C,YAAAjF,EAAW,OAAOpB,GAAQ;AAAA,cACxB,IAAAkG;AAAA,YACZ,CAAW,GACDA,IAAK+O,EAAS,MAAK,GAEf7M,EAAQ,MAAM,QAChBhH,EAAW,OAAOpB,GAAQkG,CAAE;AAAA,UAEhC;AAGF,YAAI,CAACuF,CAAO,IAAItL,EAAO,MAAMH,GAAQ;AAAA,UACnC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,OAAAc;AAAA,UACA,MAAAC;AAAA,QACR,CAAO,GACGjG,IAAOlC,EAAO,SAASH,GAAQ;AAAA,UACjC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,OAAAc;AAAA,UACA,MAAAC;AAAA,QACR,CAAO;AAED,YAAI,GAACmD,KAAW,CAACpJ,IAIjB;AAAA,cAAI,CAACR,GAAMf,CAAI,IAAI2K,GACf,CAAClC,GAAUC,CAAQ,IAAInH;AAE3B,cAAI,EAAAvB,EAAK,WAAW,KAAK0I,EAAS,WAAW,IAI7C;AAAA,gBAAIxI,IAAUD,EAAK,KAAKyI,CAAQ,GAC5BmM,IAAa5U,EAAK,OAAOD,GAAM0I,CAAQ,GACvCoM,IAAoB7U,EAAK,UAAUD,GAAM0I,CAAQ,GACjD7G,IAAS,MAAM,KAAKxC,EAAO,OAAOH,GAAQ;AAAA,cAC5C,IAAIc;AAAA,YACZ,CAAO,GAAG,CAAAP,MAAS;AACX,kBAAI,CAACnF,CAAC,IAAImF;AACV,qBAAOnF;AAAA,YACT,CAAC,EAAE,MAAMua,EAAW,MAAM,EAAE,MAAM,GAAG,EAAE,GAGnCE,IAAgB1V,EAAO,MAAMH,GAAQ;AAAA,cACvC,IAAIc;AAAA,cACJ,MAAM;AAAA,cACN,OAAO,CAAA1F,MAAKuH,EAAO,SAASvH,CAAC,KAAK0a,GAAmB9V,GAAQ5E,CAAC;AAAA,YACtE,CAAO,GACG2a,IAAWF,KAAiB1V,EAAO,QAAQH,GAAQ6V,EAAc,CAAC,CAAC,GACnE7I,GACA+B;AAGJ,gBAAIxN,EAAK,OAAOM,CAAI,KAAKN,EAAK,OAAOgI,CAAQ,GAAG;AAC9C,kBAAIG,IAAOxF,GAAyBrC,GAAM4S,EAAS;AAEnD,cAAA1F,IAAWxF,EAAS,KAAK,QACzByD,IAAatD;AAAA,YACf,WAAW1H,EAAQ,UAAUH,CAAI,KAAKG,EAAQ,UAAUuH,CAAQ,GAAG;AACjE,kBAAIG,IAAOxF,GAAyBrC,GAAM6S,EAAU;AAEpD,cAAA3F,IAAWxF,EAAS,SAAS,QAC7ByD,IAAatD;AAAA,YACf;AACE,oBAAM,IAAI,MAAM,kCAAkC,OAAO5I,GAAM,+DAA+D,EAAE,OAAO,KAAK,UAAUe,CAAI,GAAG,GAAG,EAAE,OAAO,KAAK,UAAU0H,CAAQ,CAAC,CAAC;AAKpM,YAAKqM,KACHxU,EAAW,UAAUpB,GAAQ;AAAA,cAC3B,IAAIc;AAAA,cACJ,IAAIE;AAAA,cACJ,OAAAqH;AAAA,YACV,CAAS,GAKC0N,KACF3U,EAAW,YAAYpB,GAAQ;AAAA,cAC7B,IAAI+V,EAAS;AAAA,cACb,OAAA1N;AAAA,YACV,CAAS,GAQCrG,EAAQ,UAAUuH,CAAQ,KAAKpJ,EAAO,QAAQH,GAAQuJ,CAAQ,KAAKhI,EAAK,OAAOgI,CAAQ,KAAKA,EAAS,SAAS,MAAMC,EAASA,EAAS,SAAS,CAAC,MAAM,IACxJpI,EAAW,YAAYpB,GAAQ;AAAA,cAC7B,IAAIwJ;AAAA,cACJ,OAAAnB;AAAA,YACV,CAAS,IAEDrI,EAAO,MAAM;AAAA,cACX,MAAM;AAAA,cACN,MAAMgB;AAAA,cACN,UAAA+N;AAAA,cACA,YAAA/B;AAAA,YACV,CAAS,GAGC+I,KACFA,EAAS,MAAK;AAAA;AAAA;AAAA;AAAA,IAElB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU/V,GAAQoI,GAAS;AACzB,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,IAAA4J;AAAA,QACA,IAAA1D,IAAKlG,EAAO;AAAA,QACZ,MAAAsI,IAAO;AAAA,QACP,OAAAD,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,OAAAb;AAAA,MACR,IAAUa;AAEJ,UAAKlC,GAIL;AAAA,QAAIqB,KAAS,SACXA,IAAQxG,EAAK,OAAOmF,CAAE,IAAImP,GAAUrV,GAAQkG,CAAE,IAAI,CAAA9K,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAGjF,YAAI4a,IAAQ7V,EAAO,QAAQH,GAAQ4J,CAAE,GACjCqM,IAAU9V,EAAO,MAAMH,GAAQ;AAAA,UACjC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACR,CAAO,GACGqD,IAAW,MAAM,KAAKuK,GAAS,CAAApT,MAAS;AAC1C,cAAI,CAAA,EAAGvG,CAAC,IAAIuG;AACZ,iBAAO1C,EAAO,QAAQH,GAAQ1D,CAAC;AAAA,QACjC,CAAC;AAED,iBAAS6Y,KAAWzJ,GAAU;AAC5B,cAAI5K,IAAOqU,EAAQ,MAAK,GACpBnU,IAAUgV,EAAM;AAEpB,UAAIlV,EAAK,WAAW,KAClBd,EAAO,MAAM;AAAA,YACX,MAAM;AAAA,YACN,MAAAc;AAAA,YACA,SAAAE;AAAA,UACZ,CAAW,GAGCgV,EAAM,WAAWjV,EAAK,UAAUC,GAASF,CAAI,KAAKC,EAAK,QAAQC,GAASF,CAAI,MAI9EkV,EAAM,UAAUjV,EAAK,KAAKiV,EAAM,OAAO;AAAA,QAE3C;AAEA,QAAAA,EAAM,MAAK;AAAA;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYhW,GAAQ;AAClB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,SAAA+U,IAAU;AAAA,QACV,OAAA1M,IAAQ;AAAA,QACR,MAAAC,IAAO;AAAA,MACf,IAAUF,GACA;AAAA,QACF,IAAAlC,IAAKlG,EAAO;AAAA,QACZ,OAAAuH;AAAA,MACR,IAAUa;AAEJ,UAAKlC,GAIL;AAAA,QAAIqB,KAAS,SACXA,IAAQxG,EAAK,OAAOmF,CAAE,IAAImP,GAAUrV,GAAQkG,CAAE,IAAI,CAAA9K,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAG7E,CAAC2Z,KAAWzT,EAAM,QAAQ4E,CAAE,MAC9BA,IAAK/F,EAAO,YAAYH,GAAQkG,CAAE;AAGpC,YAAIgQ,IAAS/V,EAAO,MAAMH,GAAQ;AAAA,UAChC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACR,CAAO,GACGqD,IAAW,MAAM,KAAKwK,GAAQ,CAAAC,MAAS;AACzC,cAAI,CAAA,EAAG7Z,CAAC,IAAI6Z;AACZ,iBAAOhW,EAAO,QAAQH,GAAQ1D,CAAC;AAAA,QACjC,CAAC;AAED,iBAAS6Y,KAAWzJ,GAAU;AAC5B,cAAI5K,IAAOqU,EAAQ,MAAK;AAExB,cAAIrU,GAAM;AACR,gBAAI,CAACe,CAAI,IAAI1B,EAAO,KAAKH,GAAQc,CAAI;AACrC,YAAAd,EAAO,MAAM;AAAA,cACX,MAAM;AAAA,cACN,MAAAc;AAAA,cACA,MAAAe;AAAA,YACZ,CAAW;AAAA,UACH;AAAA,QACF;AAAA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS7B,GAAQ2H,GAAO;AACtB,QAAIS,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,OAAAuH;AAAA,QACA,IAAArB,IAAKlG,EAAO;AAAA,QACZ,SAAAoW;AAAA,MACR,IAAUhO,GACA;AAAA,QACF,SAAA2M,IAAU;AAAA,QACV,MAAAzM,IAAO;AAAA,QACP,OAAA+N,IAAQ;AAAA,QACR,OAAAhO,IAAQ;AAAA,MAChB,IAAUD;AAEJ,UAAKlC,GAYL;AAAA,YARIqB,KAAS,SACXA,IAAQxG,EAAK,OAAOmF,CAAE,IAAImP,GAAUrV,GAAQkG,CAAE,IAAI,CAAA9K,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAG7E,CAAC2Z,KAAWzT,EAAM,QAAQ4E,CAAE,MAC9BA,IAAK/F,EAAO,YAAYH,GAAQkG,CAAE,IAGhCmQ,KAAS/U,EAAM,QAAQ4E,CAAE,GAAG;AAC9B,cAAI5E,EAAM,YAAY4E,CAAE,KAAK/F,EAAO,KAAKH,GAAQkG,EAAG,MAAM,EAAE,CAAC,EAAE,KAAK,SAAS;AAG3E;AAGF,cAAIoQ,IAAWnW,EAAO,SAASH,GAAQkG,GAAI;AAAA,YACzC,UAAU;AAAA,UACpB,CAAS,GACG,CAACiD,GAAO9C,CAAG,IAAI/E,EAAM,MAAM4E,CAAE,GAC7BqQ,IAAYjO,MAAS,WAAW,WAAW,WAC3CkO,IAAiBrW,EAAO,MAAMH,GAAQqG,GAAKA,EAAI,IAAI;AACvD,UAAAjF,EAAW,WAAWpB,GAAQ;AAAA,YAC5B,IAAIqG;AAAA,YACJ,OAAAkB;AAAA,YACA,MAAMgP;AAAA,YACN,OAAAlO;AAAA,YACA,QAAQ,CAACmO;AAAA,UACnB,CAAS;AACD,cAAIC,IAAqBtW,EAAO,QAAQH,GAAQmJ,GAAOA,EAAM,IAAI;AACjE,UAAA/H,EAAW,WAAWpB,GAAQ;AAAA,YAC5B,IAAImJ;AAAA,YACJ,OAAA5B;AAAA,YACA,MAAMgP;AAAA,YACN,OAAAlO;AAAA,YACA,QAAQ,CAACoO;AAAA,UACnB,CAAS,GACDvQ,IAAKoQ,EAAS,MAAK,GAEflO,EAAQ,MAAM,QAChBhH,EAAW,OAAOpB,GAAQkG,CAAE;AAAA,QAEhC;AAEA,QAAKkQ,MACHA,IAAU,CAACM,GAAMC,MAAaD,MAASC;AAGzC,iBAAS,CAAC9U,GAAMf,CAAI,KAAKX,EAAO,MAAMH,GAAQ;AAAA,UAC5C,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACR,CAAO,GAAG;AACF,cAAI2E,IAAa,CAAA,GACbe,IAAgB,CAAA;AAEpB,cAAIjN,EAAK,WAAW,GAIpB;AAAA,gBAAI8V,IAAa;AAEjB,qBAAShZ,KAAK+J;AACZ,cAAI/J,MAAM,cAAcA,MAAM,UAI1BwY,EAAQzO,EAAM/J,CAAC,GAAGiE,EAAKjE,CAAC,CAAC,MAC3BgZ,IAAa,IAET/U,EAAK,eAAejE,CAAC,MAAGoP,EAAWpP,CAAC,IAAIiE,EAAKjE,CAAC,IAE9C+J,EAAM/J,CAAC,KAAK,SAAMmQ,EAAcnQ,CAAC,IAAI+J,EAAM/J,CAAC;AAIpD,YAAIgZ,KACF5W,EAAO,MAAM;AAAA,cACX,MAAM;AAAA,cACN,MAAAc;AAAA,cACA,YAAAkM;AAAA,cACA,eAAAe;AAAA,YACZ,CAAW;AAAA;AAAA,QAEL;AAAA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW/N,GAAQ;AACjB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,MAAAsI,IAAO;AAAA,QACP,OAAAD,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,OAAAb;AAAA,QACA,IAAArB,IAAKlG,EAAO;AAAA,QACZ,QAAA6W,IAAS;AAAA,QACT,QAAAC,IAAS;AAAA,MACjB,IAAU1O;AAYJ,UAVIb,KAAS,SACXA,IAAQ,CAAAnM,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAGnCkG,EAAM,QAAQ4E,CAAE,MAClBA,IAAK6Q,GAAY/W,GAAQkG,CAAE,IAKzBnF,EAAK,OAAOmF,CAAE,GAAG;AACnB,YAAIpF,IAAOoF,GACP4C,IAAQ3I,EAAO,MAAMH,GAAQc,CAAI,GACjC,CAACgJ,CAAM,IAAI3J,EAAO,OAAOH,GAAQc,CAAI;AAEzC,QAAAyG,IAAQ,CAAAnM,MAAKA,MAAM0O,GAEnB+M,IAAS/N,EAAM,KAAK,SAAShI,EAAK,SAAS,GAC3CoF,IAAK4C,GACLgO,IAAS;AAAA,MACX;AAEA,UAAK5Q,GAIL;AAAA,YAAI8Q,IAAY7W,EAAO,SAASH,GAAQkG,GAAI;AAAA,UAC1C,UAAU;AAAA,QAClB,CAAO,GACG,CAAC+Q,CAAO,IAAI9W,EAAO,MAAMH,GAAQ;AAAA,UACnC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACR,CAAO;AAED,YAAK4O,GAIL;AAAA,cAAIC,IAAY/W,EAAO,KAAKH,GAAQ;AAAA,YAClC,IAAAkG;AAAA,YACA,MAAM;AAAA,UACd,CAAO,GACGiR,IAAQ;AAEZ,cAAI,CAAC9O,KAAS6O,GAAW;AACvB,gBAAI,CAACE,GAAUC,CAAQ,IAAIH;AAE3B,gBAAIlV,EAAQ,UAAUoV,CAAQ,KAAKpX,EAAO,SAASoX,CAAQ,GAAG;AAC5D,kBAAI9F,IAAQnR,EAAO,MAAMH,GAAQqX,CAAQ;AAEzC,kBAAI,CAAC/F,GAAO;AACV,oBAAIxP,IAAO;AAAA,kBACT,MAAM;AAAA,gBACpB,GACgBwV,IAAYvW,EAAK,KAAKsW,CAAQ;AAClC,gBAAAjW,EAAW,YAAYpB,GAAQ8B,GAAM;AAAA,kBACnC,IAAIwV;AAAA,kBACJ,OAAAjP;AAAA,gBACd,CAAa,GACDiJ,IAAQnR,EAAO,MAAMH,GAAQsX,CAAS;AAAA,cACxC;AAEA,cAAApR,IAAKoL,GACLwF,IAAS;AAAA,YACX;AAEA,gBAAIS,IAAgBrR,EAAG,KAAK,SAASmR,EAAS;AAC9C,YAAAR,IAASU,IAAgB,GACzBT,IAAS;AAAA,UACX;AAEA,cAAIU,IAAWrX,EAAO,SAASH,GAAQkG,CAAE,GACrCkF,IAAQlF,EAAG,KAAK,SAAS2Q,GACzB,CAAA,EAAGY,CAAW,IAAIR,GAClBS,IAAaxR,EAAG,KAAK,MAAM,GAAGkF,CAAK,GACnC2D,IAAW8H,MAAW,IAAI3Q,EAAG,SAASA,EAAG,KAAKkF,CAAK,IAAI+L;AAE3D,mBAAS,CAACtV,GAAMa,CAAM,KAAKvC,EAAO,OAAOH,GAAQ;AAAA,YAC/C,IAAI0X;AAAA,YACJ,SAAS;AAAA,YACT,OAAArP;AAAA,UACR,CAAO,GAAG;AACF,gBAAIgO,IAAQ;AAEZ,gBAAI3T,EAAO,SAAS+U,EAAY,UAAU/U,EAAO,WAAW,KAAK,CAAC2F,KAASlI,EAAO,OAAOH,GAAQ6B,CAAI;AACnG;AAGF,gBAAI+P,IAASoF,EAAU,SACnBW,IAAQxX,EAAO,MAAMH,GAAQ4R,GAAQlP,CAAM;AAE/C,gBAAIoU,KAAU,CAACE,KAAa,CAAC7W,EAAO,OAAOH,GAAQ4R,GAAQlP,CAAM,GAAG;AAClE,cAAA2T,IAAQ;AACR,kBAAIrJ,IAAarL,EAAK,aAAaE,CAAI;AACvC,cAAA7B,EAAO,MAAM;AAAA,gBACX,MAAM;AAAA,gBACN,MAAM0C;AAAA,gBACN,UAAAqM;AAAA,gBACA,YAAA/B;AAAA,cACZ,CAAW;AAAA,YACH;AAEA,YAAA+B,IAAWrM,EAAOA,EAAO,SAAS,CAAC,KAAK2T,KAASsB,IAAQ,IAAI;AAAA,UAC/D;AAEA,cAAIvP,EAAQ,MAAM,MAAM;AACtB,gBAAI4J,IAAUwF,EAAS,WAAWrX,EAAO,IAAIH,GAAQ,EAAE;AAEvD,YAAAoB,EAAW,OAAOpB,GAAQgS,CAAO;AAAA,UACnC;AAEA,UAAAgF,EAAU,MAAK,GACfQ,EAAS,MAAK;AAAA;AAAA;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWxX,GAAQ2H,GAAO;AACxB,QAAIS,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,IAAK,MAAM,QAAQT,CAAK,MACtBA,IAAQ,CAACA,CAAK;AAGhB,QAAI/I,IAAM,CAAA;AAEV,aAASC,KAAO8I;AACd,MAAA/I,EAAIC,CAAG,IAAI;AAGb,IAAAuC,EAAW,SAASpB,GAAQpB,GAAKwJ,CAAO;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAYpI,GAAQ;AAClB,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,MAAAsI,IAAO;AAAA,QACP,OAAA+N,IAAQ;AAAA,QACR,OAAAhO,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,IAAAlC,IAAKlG,EAAO;AAAA,QACZ,OAAAuH;AAAA,MACR,IAAUa;AAEJ,UAAKlC,GAIL;AAAA,QAAIqB,KAAS,SACXA,IAAQxG,EAAK,OAAOmF,CAAE,IAAImP,GAAUrV,GAAQkG,CAAE,IAAI,CAAA9K,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAG7E2F,EAAK,OAAOmF,CAAE,MAChBA,IAAK/F,EAAO,MAAMH,GAAQkG,CAAE;AAG9B,YAAIoQ,IAAWhV,EAAM,QAAQ4E,CAAE,IAAI/F,EAAO,SAASH,GAAQkG,CAAE,IAAI,MAC7DmE,IAAUlK,EAAO,MAAMH,GAAQ;AAAA,UACjC,IAAAkG;AAAA,UACA,OAAAqB;AAAA,UACA,MAAAe;AAAA,UACA,OAAAD;AAAA,QACR,CAAO,GACGqD,IAAW,MAAM;AAAA,UAAKrB;AAAA,UAAS,CAAAuN,MAAS;AAC1C,gBAAI,CAAA,EAAGtb,CAAC,IAAIsb;AACZ,mBAAOzX,EAAO,QAAQH,GAAQ1D,CAAC;AAAA,UACjC;AAAA;AAAA;AAAA;AAAA,QAGN,EAAQ,QAAO,GAELub,IAAQ,SAAe1C,GAAS;AAClC,cAAIrU,IAAOqU,EAAQ,MAAK,GACpB,CAACtT,CAAI,IAAI1B,EAAO,KAAKH,GAAQc,CAAI,GACjC4H,IAAQvI,EAAO,MAAMH,GAAQc,CAAI;AAErC,UAAIuV,KAASC,MACX5N,IAAQpH,EAAM,aAAagV,EAAS,SAAS5N,CAAK,IAGpDtH,EAAW,UAAUpB,GAAQ;AAAA,YAC3B,IAAI0I;AAAA,YACJ,OAAO,CAAAtN,MAAK4G,EAAQ,WAAWH,CAAI,KAAKA,EAAK,SAAS,SAASzG,CAAC;AAAA,YAChE,OAAAiN;AAAA,UACV,CAAS;AAAA,QACH;AAEA,iBAAS8M,KAAWzJ;AAClB,UAAAmM,EAAM1C,CAAO;AAGf,QAAImB,KACFA,EAAS,MAAK;AAAA;AAAA,IAElB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAUtW,GAAQ8H,GAAS;AACzB,QAAIM,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,MAAAsI,IAAO;AAAA,QACP,OAAA+N,IAAQ;AAAA,QACR,OAAAhO,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,OAAAb;AAAA,QACA,IAAArB,IAAKlG,EAAO;AAAA,MACpB,IAAUoI;AAEJ,UAAKlC,GAcL;AAAA,YAVIqB,KAAS,SACPxG,EAAK,OAAOmF,CAAE,IAChBqB,IAAQ8N,GAAUrV,GAAQkG,CAAE,IACnBlG,EAAO,SAAS8H,CAAO,IAChCP,IAAQ,CAAAnM,MAAK+E,EAAO,SAASH,GAAQ5E,CAAC,KAAKmG,EAAK,OAAOnG,CAAC,IAExDmM,IAAQ,CAAAnM,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAIrCib,KAAS/U,EAAM,QAAQ4E,CAAE,GAAG;AAC9B,cAAI,CAACiD,GAAO9C,CAAG,IAAI/E,EAAM,MAAM4E,CAAE,GAC7BoQ,IAAWnW,EAAO,SAASH,GAAQkG,GAAI;AAAA,YACzC,UAAU;AAAA,UACpB,CAAS;AACD,UAAA9E,EAAW,WAAWpB,GAAQ;AAAA,YAC5B,IAAIqG;AAAA,YACJ,OAAAkB;AAAA,YACA,OAAAc;AAAA,UACV,CAAS,GACDjH,EAAW,WAAWpB,GAAQ;AAAA,YAC5B,IAAImJ;AAAA,YACJ,OAAA5B;AAAA,YACA,OAAAc;AAAA,UACV,CAAS,GACDnC,IAAKoQ,EAAS,MAAK,GAEflO,EAAQ,MAAM,QAChBhH,EAAW,OAAOpB,GAAQkG,CAAE;AAAA,QAEhC;AAEA,YAAI4R,IAAQ,MAAM,KAAK3X,EAAO,MAAMH,GAAQ;AAAA,UAC1C,IAAAkG;AAAA,UACA,OAAOlG,EAAO,SAAS8H,CAAO,IAAI,CAAA1M,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC,IAAI,CAAAA,MAAK+E,EAAO,SAAS/E,CAAC;AAAA,UACzF,MAAM;AAAA,UACN,OAAAiN;AAAA,QACR,CAAO,CAAC;AAEF,iBAAS,CAAA,EAAG0P,CAAQ,KAAKD,GAAO;AAC9B,cAAI7b,IAAIqF,EAAM,QAAQ4E,CAAE,IAAI5E,EAAM,aAAa4E,GAAI/F,EAAO,MAAMH,GAAQ+X,CAAQ,CAAC,IAAI7R;AAErF,cAAKjK,GAIL;AAAA,gBAAIoO,IAAU,MAAM,KAAKlK,EAAO,MAAMH,GAAQ;AAAA,cAC5C,IAAI/D;AAAA,cACJ,OAAAsL;AAAA,cACA,MAAAe;AAAA,cACA,OAAAD;AAAA,YACV,CAAS,CAAC;AAEF,gBAAIgC,EAAQ,SAAS,GAAG;AACtB,kBAAI2N,IAAO,WAAY;AACrB,oBAAI,CAAC/O,CAAK,IAAIoB,GACVF,IAAOE,EAAQA,EAAQ,SAAS,CAAC,GACjC,CAAA,EAAGiB,CAAS,IAAIrC,GAChB,CAAA,EAAGsC,CAAQ,IAAIpB;AAEnB,oBAAImB,EAAU,WAAW,KAAKC,EAAS,WAAW;AAEhD,yBAAO;AAGT,oBAAIoK,IAAa5U,EAAK,OAAOuK,GAAWC,CAAQ,IAAIxK,EAAK,OAAOuK,CAAS,IAAIvK,EAAK,OAAOuK,GAAWC,CAAQ,GACxG7C,IAAQvI,EAAO,MAAMH,GAAQsL,GAAWC,CAAQ,GAChD0M,IAAkB9X,EAAO,KAAKH,GAAQ2V,CAAU,GAChD,CAACuC,CAAU,IAAID,GACf7M,IAAQuK,EAAW,SAAS,GAC5BwC,IAAcpX,EAAK,KAAKwK,EAAS,MAAM,GAAGH,CAAK,CAAC,GAEhDgN,IAAUxD,GAAgBA,GAAgB,CAAA,GAAI9M,CAAO,GAAG,IAAI;AAAA,kBAC9D,UAAU,CAAA;AAAA,gBACxB,CAAa;AAED,gBAAA1G,EAAW,YAAYpB,GAAQoY,GAAS;AAAA,kBACtC,IAAID;AAAA,kBACJ,OAAA9P;AAAA,gBACd,CAAa,GACDjH,EAAW,UAAUpB,GAAQ;AAAA,kBAC3B,IAAI0I;AAAA,kBACJ,OAAO,CAAAtN,MAAK4G,EAAQ,WAAWkW,CAAU,KAAKA,EAAW,SAAS,SAAS9c,CAAC;AAAA,kBAC5E,IAAI+c,EAAY,OAAO,CAAC;AAAA,kBACxB,OAAA9P;AAAA,gBACd,CAAa;AAAA,cACH,EAAC;AAED,kBAAI2P,MAAS,WAAY;AAAA,YAC3B;AAAA;AAAA,QACF;AAAA;AAAA,IACF,CAAC;AAAA,EACH;AAEF,GAEIlC,KAAqB,CAAC9V,GAAQ6B,MAAS;AACzC,MAAIG,EAAQ,UAAUH,CAAI,GAAG;AAC3B,QAAIiG,IAAUjG;AAEd,WAAI1B,EAAO,OAAOH,GAAQ6B,CAAI,IACrB,KACEiG,EAAQ,SAAS,WAAW,IAC9BgO,GAAmB9V,GAAQ8H,EAAQ,SAAS,CAAC,CAAC,IAE9C;AAAA,EAEX,MAAO,QAAI,CAAA3H,EAAO,SAAS0B,CAAI;AAKjC,GAMIkV,KAAc,CAAC/W,GAAQ0I,MAAU;AACnC,MAAIpH,EAAM,YAAYoH,CAAK;AACzB,WAAOA,EAAM;AAEb,MAAI,CAAA,EAAGrC,CAAG,IAAI/E,EAAM,MAAMoH,CAAK,GAC3BuM,IAAW9U,EAAO,SAASH,GAAQqG,CAAG;AAC1C,SAAAjF,EAAW,OAAOpB,GAAQ;AAAA,IACxB,IAAI0I;AAAA,EACV,CAAK,GACMuM,EAAS,MAAK;AAEzB,GAEII,KAAY,CAACrV,GAAQc,MAAS;AAChC,MAAI,CAACe,CAAI,IAAI1B,EAAO,KAAKH,GAAQc,CAAI;AACrC,SAAO,OAAK,MAAMe;AACpB;AAEA,SAASwW,GAAU9Y,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAAS6Y,GAAgBzY,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAK+c,GAAU,OAAOvY,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAYuY,GAAU,OAAOvY,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAC3hB,IAAI0Y,KAAsB;AAAA;AAAA;AAAA;AAAA,EAIxB,SAASvY,GAAQ;AACf,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,MAAAiD,IAAO;AAAA,IACb,IAAQjD,GACA;AAAA,MACF,WAAA/G;AAAA,IACN,IAAQrB;AAEJ,QAAKqB;AAEE,UAAIgK,MAAS;AAClB,QAAAjK,EAAW,OAAOpB,GAAQqB,EAAU,MAAM;AAAA,eACjCgK,MAAS;AAClB,QAAAjK,EAAW,OAAOpB,GAAQqB,EAAU,KAAK;AAAA,eAChCgK,MAAS,SAAS;AAC3B,YAAI,CAAClC,CAAK,IAAI7H,EAAM,MAAMD,CAAS;AACnC,QAAAD,EAAW,OAAOpB,GAAQmJ,CAAK;AAAA,MACjC,WAAWkC,MAAS,OAAO;AACzB,YAAI,CAAA,EAAGhF,CAAG,IAAI/E,EAAM,MAAMD,CAAS;AACnC,QAAAD,EAAW,OAAOpB,GAAQqG,CAAG;AAAA,MAC/B;AAAA,UAXE;AAAA,EAYJ;AAAA;AAAA;AAAA;AAAA,EAKA,SAASrG,GAAQ;AACf,QAAI;AAAA,MACF,WAAAqB;AAAA,IACN,IAAQrB;AAEJ,IAAIqB,KACFrB,EAAO,MAAM;AAAA,MACX,MAAM;AAAA,MACN,YAAYqB;AAAA,MACZ,eAAe;AAAA,IACvB,CAAO;AAAA,EAEL;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKrB,GAAQ;AACX,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,WAAA/G;AAAA,IACN,IAAQrB,GACA;AAAA,MACF,UAAA6E,IAAW;AAAA,MACX,MAAApD,IAAO;AAAA,MACP,SAAA8G,IAAU;AAAA,IAChB,IAAQH,GACA;AAAA,MACF,MAAAiD,IAAO;AAAA,IACb,IAAQjD;AAEJ,QAAK/G,GAIL;AAAA,MAAIgK,MAAS,YACXA,IAAO/J,EAAM,WAAWD,CAAS,IAAI,UAAU,WAG7CgK,MAAS,UACXA,IAAO/J,EAAM,WAAWD,CAAS,IAAI,WAAW;AAGlD,UAAI;AAAA,QACF,QAAAmH;AAAA,QACA,OAAAC;AAAA,MACN,IAAQpH,GACAmX,IAAO;AAAA,QACT,UAAA3T;AAAA,QACA,MAAApD;AAAA,MACN,GACQkG,IAAQ,CAAA;AAEZ,UAAI0D,KAAQ,QAAQA,MAAS,UAAU;AACrC,YAAIvC,IAAQP,IAAUpI,EAAO,OAAOH,GAAQwI,GAAQgQ,CAAI,IAAIrY,EAAO,MAAMH,GAAQwI,GAAQgQ,CAAI;AAE7F,QAAI1P,MACFnB,EAAM,SAASmB;AAAA,MAEnB;AAEA,UAAIuC,KAAQ,QAAQA,MAAS,SAAS;AACpC,YAAIuG,IAASrJ,IAAUpI,EAAO,OAAOH,GAAQyI,GAAO+P,CAAI,IAAIrY,EAAO,MAAMH,GAAQyI,GAAO+P,CAAI;AAE5F,QAAI5G,MACFjK,EAAM,QAAQiK;AAAA,MAElB;AAEA,MAAAxQ,EAAW,aAAapB,GAAQ2H,CAAK;AAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO3H,GAAQH,GAAQ;AACrB,QAAI;AAAA,MACF,WAAAwB;AAAA,IACN,IAAQrB;AAGJ,QAFAH,IAASM,EAAO,MAAMH,GAAQH,CAAM,GAEhCwB,GAAW;AACb,MAAAD,EAAW,aAAapB,GAAQH,CAAM;AACtC;AAAA,IACF;AAEA,QAAI,CAACyB,EAAM,QAAQzB,CAAM;AACvB,YAAM,IAAI,MAAM,qIAAqI,OAAO,KAAK,UAAUA,CAAM,CAAC,CAAC;AAGrL,IAAAG,EAAO,MAAM;AAAA,MACX,MAAM;AAAA,MACN,YAAYqB;AAAA,MACZ,eAAexB;AAAA,IACrB,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,SAASG,GAAQ2H,GAAO;AACtB,QAAIS,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,WAAA/G;AAAA,IACN,IAAQrB,GACA;AAAA,MACF,MAAAqL,IAAO;AAAA,IACb,IAAQjD;AAEJ,QAAK/G,GAIL;AAAA,MAAIgK,MAAS,YACXA,IAAO/J,EAAM,WAAWD,CAAS,IAAI,UAAU,WAG7CgK,MAAS,UACXA,IAAO/J,EAAM,WAAWD,CAAS,IAAI,WAAW;AAGlD,UAAI;AAAA,QACF,QAAAmH;AAAA,QACA,OAAAC;AAAA,MACN,IAAQpH,GACAyH,IAAQuC,MAAS,WAAW7C,IAASC;AACzC,MAAArH,EAAW,aAAapB,GAAQ;AAAA,QAC9B,CAACqL,MAAS,WAAW,WAAW,OAAO,GAAGiN,GAAgBA,GAAgB,CAAA,GAAIxP,CAAK,GAAGnB,CAAK;AAAA,MACjG,CAAK;AAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa3H,GAAQ2H,GAAO;AAC1B,QAAI;AAAA,MACF,WAAAtG;AAAA,IACN,IAAQrB,GACAyY,IAAW,CAAA,GACXC,IAAW,CAAA;AAEf,QAAKrX,GAIL;AAAA,eAASzD,KAAK+J;AACZ,SAAI/J,MAAM,YAAY+J,EAAM,UAAU,QAAQ,CAACoB,EAAM,OAAOpB,EAAM,QAAQtG,EAAU,MAAM,KAAKzD,MAAM,WAAW+J,EAAM,SAAS,QAAQ,CAACoB,EAAM,OAAOpB,EAAM,OAAOtG,EAAU,KAAK,KAAKzD,MAAM,YAAYA,MAAM,WAAW+J,EAAM/J,CAAC,MAAMyD,EAAUzD,CAAC,OAC/O6a,EAAS7a,CAAC,IAAIyD,EAAUzD,CAAC,GACzB8a,EAAS9a,CAAC,IAAI+J,EAAM/J,CAAC;AAIzB,MAAI,OAAO,KAAK6a,CAAQ,EAAE,SAAS,KACjCzY,EAAO,MAAM;AAAA,QACX,MAAM;AAAA,QACN,YAAYyY;AAAA,QACZ,eAAeC;AAAA,MACvB,CAAO;AAAA;AAAA,EAEL;AAEF,GAEIC,KAAiB;AAAA;AAAA;AAAA;AAAA,EAInB,OAAO3Y,GAAQ;AACb,QAAIoI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,SAAAuI,IAAU;AAAA,QACV,MAAA9G,IAAO;AAAA,QACP,UAAAoD,IAAW;AAAA,QACX,OAAAwD,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,IAAAlC,IAAKlG,EAAO;AAAA,QACZ,SAAA+U,IAAU;AAAA,MAClB,IAAU3M;AAEJ,UAAKlC,GAQL;AAAA,YAJI5E,EAAM,QAAQ4E,CAAE,KAAK5E,EAAM,YAAY4E,CAAE,MAC3CA,IAAKA,EAAG,SAGN6C,EAAM,QAAQ7C,CAAE,GAAG;AACrB,cAAI0S,IAAezY,EAAO,KAAKH,GAAQ;AAAA,YACrC,IAAAkG;AAAA,YACA,MAAM;AAAA,UAChB,CAAS;AAED,cAAI,CAACmC,KAASuQ,GAAc;AAC1B,gBAAI,CAAA,EAAGvB,CAAQ,IAAIuB;AACnB,YAAA1S,IAAKmR;AAAA,UACP,OAAO;AACL,gBAAImB,IAAO;AAAA,cACT,MAAA/W;AAAA,cACA,UAAAoD;AAAA,YACZ,GACchF,IAAS0I,IAAUpI,EAAO,OAAOH,GAAQkG,GAAIsS,CAAI,KAAKrY,EAAO,MAAMH,GAAQ,CAAA,CAAE,IAAIG,EAAO,MAAMH,GAAQkG,GAAIsS,CAAI,KAAKrY,EAAO,IAAIH,GAAQ,EAAE;AAC5I,YAAAkG,IAAK;AAAA,cACH,QAAQA;AAAA,cACR,OAAOrG;AAAA,YACnB,GACUkV,IAAU;AAAA,UACZ;AAAA,QACF;AAEA,YAAIhU,EAAK,OAAOmF,CAAE,GAAG;AACnB,UAAA9E,EAAW,YAAYpB,GAAQ;AAAA,YAC7B,IAAAkG;AAAA,YACA,OAAAmC;AAAA,UACV,CAAS;AACD;AAAA,QACF;AAEA,YAAI,CAAA/G,EAAM,YAAY4E,CAAE,GAIxB;AAAA,cAAI,CAAC6O,GAAS;AACZ,gBAAI,CAAA,EAAG8D,CAAI,IAAIvX,EAAM,MAAM4E,CAAE,GACzB4S,IAAW3Y,EAAO,IAAIH,GAAQ,CAAA,CAAE;AAEpC,YAAK+I,EAAM,OAAO8P,GAAMC,CAAQ,MAC9B5S,IAAK/F,EAAO,YAAYH,GAAQkG,GAAI;AAAA,cAClC,OAAAmC;AAAA,YACZ,CAAW;AAAA,UAEL;AAEA,cAAI,CAACc,GAAO9C,CAAG,IAAI/E,EAAM,MAAM4E,CAAE,GAC7B6S,IAAa5Y,EAAO,MAAMH,GAAQ;AAAA,YACpC,OAAO,CAAA5E,OAAK+E,EAAO,QAAQH,GAAQ5E,EAAC;AAAA,YACpC,IAAI+N;AAAA,YACJ,OAAAd;AAAA,UACR,CAAO,GACGiE,IAAWnM,EAAO,MAAMH,GAAQ;AAAA,YAClC,OAAO,CAAA5E,OAAK+E,EAAO,QAAQH,GAAQ5E,EAAC;AAAA,YACpC,IAAIiL;AAAA,YACJ,OAAAgC;AAAA,UACR,CAAO,GACG2Q,IAAiBD,KAAczM,KAAY,CAACvL,EAAK,OAAOgY,EAAW,CAAC,GAAGzM,EAAS,CAAC,CAAC,GAClF2M,IAAelY,EAAK,OAAOoI,EAAM,MAAM9C,EAAI,IAAI,GAC/C6S,IAAY7Q,IAAQ,OAAOlI,EAAO,KAAKH,GAAQ;AAAA,YACjD,IAAImJ;AAAA,YACJ,MAAM;AAAA,UACd,CAAO,GACGgQ,IAAU9Q,IAAQ,OAAOlI,EAAO,KAAKH,GAAQ;AAAA,YAC/C,IAAIqG;AAAA,YACJ,MAAM;AAAA,UACd,CAAO;AAED,cAAI6S,GAAW;AACb,gBAAI3M,IAASpM,EAAO,OAAOH,GAAQmJ,CAAK;AAExC,YAAIoD,KAAUwM,KAAchY,EAAK,WAAWgY,EAAW,CAAC,GAAGxM,EAAO,IAAI,MACpEpD,IAAQoD;AAAA,UAEZ;AAEA,cAAI4M,GAAS;AACX,gBAAI7H,IAAQnR,EAAO,MAAMH,GAAQqG,CAAG;AAEpC,YAAIiL,KAAShF,KAAYvL,EAAK,WAAWuL,EAAS,CAAC,GAAGgF,EAAM,IAAI,MAC9DjL,IAAMiL;AAAA,UAEV;AAIA,cAAIjH,IAAU,CAAA,GACVkB;AAEJ,mBAASxJ,KAAS5B,EAAO,MAAMH,GAAQ;AAAA,YACrC,IAAAkG;AAAA,YACA,OAAAmC;AAAA,UACR,CAAO,GAAG;AACF,gBAAI,CAACxG,GAAMf,CAAI,IAAIiB;AAEnB,YAAIwJ,KAAYxK,EAAK,QAAQD,GAAMyK,CAAQ,MAAM,MAI7C,CAAClD,KAASlI,EAAO,OAAOH,GAAQ6B,CAAI,KAAK,CAACd,EAAK,SAASD,GAAMqI,EAAM,IAAI,KAAK,CAACpI,EAAK,SAASD,GAAMuF,EAAI,IAAI,OAC5GgE,EAAQ,KAAKtI,CAAK,GAClBwJ,IAAWzK;AAAA,UAEf;AAEA,cAAI4K,IAAW,MAAM,KAAKrB,GAAS,CAAAhK,OAAQ;AACzC,gBAAI,CAAA,EAAG/D,EAAC,IAAI+D;AACZ,mBAAOF,EAAO,QAAQH,GAAQ1D,EAAC;AAAA,UACjC,CAAC,GACG8c,IAAWjZ,EAAO,SAASH,GAAQmJ,CAAK,GACxCkQ,IAASlZ,EAAO,SAASH,GAAQqG,CAAG;AAExC,cAAI,CAAC4S,KAAgB,CAACC,GAAW;AAC/B,gBAAItH,IAASwH,EAAS,SAClB,CAAChQ,CAAK,IAAIjJ,EAAO,KAAKH,GAAQ4R,CAAM,GACpC;AAAA,cACF,MAAMzQ;AAAA,YAChB,IAAYyQ,GACA;AAAA,cACF,QAAApC;AAAA,YACV,IAAYrG,GAEArH,KAAOsH,EAAM,KAAK,MAAMoG,CAAM;AAElC,YAAI1N,GAAK,SAAS,KAAG9B,EAAO,MAAM;AAAA,cAChC,MAAM;AAAA,cACN,MAAMmB;AAAA,cACN,QAAAqO;AAAA,cACA,MAAA1N;AAAA,YACV,CAAS;AAAA,UACH;AAEA,mBAASqT,MAAWzJ,GAAU;AAC5B,gBAAIhJ,KAASyS,GAAQ,MAAK;AAE1B,YAAA/T,EAAW,YAAYpB,GAAQ;AAAA,cAC7B,IAAI0C;AAAA,cACJ,OAAA2F;AAAA,YACV,CAAS;AAAA,UACH;AAEA,cAAI,CAAC8Q,GAAS;AACZ,gBAAInH,KAAUqH,EAAO,SACjB,CAACxH,CAAM,IAAI1R,EAAO,KAAKH,GAAQgS,EAAO,GACtC;AAAA,cACF,MAAMlP;AAAA,YAChB,IAAYkP,IAEAc,KAAUmG,IAAe9P,EAAM,SAAS,GAExC4J,KAAQlB,EAAO,KAAK,MAAMiB,IAASzM,EAAI,MAAM;AAEjD,YAAI0M,GAAM,SAAS,KAAG/S,EAAO,MAAM;AAAA,cACjC,MAAM;AAAA,cACN,MAAM8C;AAAA,cACN,QAAQgQ;AAAA,cACR,MAAMC;AAAA,YAChB,CAAS;AAAA,UACH;AAEA,UAAI,CAACkG,KAAgBD,KAAkBK,EAAO,WAAWD,EAAS,WAChEhY,EAAW,WAAWpB,GAAQ;AAAA,YAC5B,IAAIqZ,EAAO;AAAA,YACX,SAAS;AAAA,YACT,OAAAhR;AAAA,UACV,CAAS;AAGH,cAAIS,KAAQP,IAAU6Q,EAAS,MAAK,KAAMC,EAAO,MAAK,IAAKA,EAAO,WAAWD,EAAS,MAAK;AAE3F,UAAIhR,EAAQ,MAAM,QAAQU,MACxB1H,EAAW,OAAOpB,GAAQ8I,EAAK;AAAA;AAAA;AAAA,IAEnC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe9I,GAAQ4B,GAAU;AAC/B,QAAIwG,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,SAAA+U,IAAU;AAAA,QACV,OAAA1M,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,IAAAlC,IAAKlG,EAAO;AAAA,MACpB,IAAUoI;AAEJ,UAAKxG,EAAS,QAId;AAAA,YAAKsE;AAEE,cAAI5E,EAAM,QAAQ4E,CAAE;AAKzB,gBAJK6O,MACH7O,IAAK/F,EAAO,YAAYH,GAAQkG,CAAE,IAGhC5E,EAAM,YAAY4E,CAAE;AACtB,cAAAA,IAAKA,EAAG;AAAA,iBACH;AACL,kBAAI,CAAA,EAAGG,CAAG,IAAI/E,EAAM,MAAM4E,CAAE;AAE5B,kBAAI,CAACmC,KAASlI,EAAO,KAAKH,GAAQ;AAAA,gBAChC,IAAIqG;AAAA,cAChB,CAAW;AACC;AAGF,kBAAI4O,IAAW9U,EAAO,SAASH,GAAQqG,CAAG;AAC1C,cAAAjF,EAAW,OAAOpB,GAAQ;AAAA,gBACxB,IAAAkG;AAAA,cACZ,CAAW,GACDA,IAAK+O,EAAS,MAAK;AAAA,YACrB;AAAA,cACK,CAAIlU,EAAK,OAAOmF,CAAE,MACvBA,IAAK/F,EAAO,MAAMH,GAAQkG,CAAE;AAAA,YAxB5B;AA2BF,YAAI,GAACmC,KAASlI,EAAO,KAAKH,GAAQ;AAAA,UAChC,IAAAkG;AAAA,QACR,CAAO,IAMD;AAAA,cAAIoT,IAAqBnZ,EAAO,MAAMH,GAAQ;AAAA,YAC5C,IAAAkG;AAAA,YACA,OAAO,CAAA9K,MAAK+E,EAAO,SAASH,GAAQ5E,CAAC;AAAA,YACrC,MAAM;AAAA,YACN,OAAAiN;AAAA,UACR,CAAO;AAED,cAAIiR,GAAoB;AACtB,gBAAI,CAAA,EAAGC,CAAW,IAAID;AAEtB,gBAAInZ,EAAO,MAAMH,GAAQkG,GAAIqT,CAAW,GAAG;AACzC,kBAAIjI,IAAQnR,EAAO,MAAMH,GAAQuZ,CAAW;AAC5C,cAAArT,IAAKoL;AAAA,YACP,WAAWnR,EAAO,QAAQH,GAAQkG,GAAIqT,CAAW,GAAG;AAClD,kBAAIhN,IAASpM,EAAO,OAAOH,GAAQuZ,CAAW;AAC9C,cAAArT,IAAKqG;AAAA,YACP;AAAA,UACF;AAEA,cAAIiN,IAAarZ,EAAO,MAAMH,GAAQ;AAAA,YACpC,OAAO,CAAA5E,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAAA,YACpC,IAAA8K;AAAA,YACA,OAAAmC;AAAA,UACR,CAAO,GACG,CAAA,EAAGoB,CAAS,IAAI+P,GAChBC,IAAetZ,EAAO,QAAQH,GAAQkG,GAAIuD,CAAS,GACnDiQ,IAAavZ,EAAO,MAAMH,GAAQkG,GAAIuD,CAAS,GAC/CkQ,IAAeF,KAAgBC,GAC/BE,IAAa,CAACH,KAAgBA,KAAgBC,GAC9CG,IAAW,CAACH,GACZ,GAAGpO,CAAS,IAAI3J,EAAK,MAAM;AAAA,YAC7B,UAAUC;AAAA,UAClB,GAAS,EAAE,GACD,GAAG2J,CAAQ,IAAI5J,EAAK,KAAK;AAAA,YAC3B,UAAUC;AAAA,UAClB,GAAS,EAAE,GACDyI,IAAU,CAAA,GAEVyP,IAAU,CAAAvZ,MAAS;AACrB,gBAAI,CAACnF,IAAGkB,EAAC,IAAIiE,GACTwZ,KAASzd,GAAE,WAAW;AAE1B,mBAAIyd,KACK,KAGLJ,IACK,KAGL,EAAAC,KAAc7Y,EAAK,WAAWzE,IAAGgP,CAAS,KAAKtJ,EAAQ,UAAU5G,EAAC,KAAK,CAAC4E,EAAO,OAAO5E,EAAC,KAAK,CAAC4E,EAAO,SAAS5E,EAAC,KAI9Gye,KAAY9Y,EAAK,WAAWzE,IAAGiP,CAAQ,KAAKvJ,EAAQ,UAAU5G,EAAC,KAAK,CAAC4E,EAAO,OAAO5E,EAAC,KAAK,CAAC4E,EAAO,SAAS5E,EAAC;AAAA,UAKjH;AAEA,mBAAS2G,KAASJ,EAAK,MAAM;AAAA,YAC3B,UAAUC;AAAA,UAClB,GAAS;AAAA,YACD,MAAMkY;AAAA,UACd,CAAO;AACC,YAAIA,EAAQ/X,CAAK,KACfsI,EAAQ,KAAKtI,CAAK;AAItB,cAAIiY,IAAS,CAAA,GACTC,IAAU,CAAA,GACVC,IAAO,CAAA,GACPC,IAAW,IACXC,IAAY;AAEhB,mBAAS,CAACvY,CAAI,KAAKwI;AACjB,YAAIrI,EAAQ,UAAUH,CAAI,KAAK,CAAC7B,EAAO,SAAS6B,CAAI,KAClDsY,IAAW,IACXC,IAAY,IACZH,EAAQ,KAAKpY,CAAI,KACRsY,IACTH,EAAO,KAAKnY,CAAI,IAEhBqY,EAAK,KAAKrY,CAAI;AAIlB,cAAI,CAACwY,CAAW,IAAIla,EAAO,MAAMH,GAAQ;AAAA,YACvC,IAAAkG;AAAA,YACA,OAAO,CAAA9K,MAAKmG,EAAK,OAAOnG,CAAC,KAAK+E,EAAO,SAASH,GAAQ5E,CAAC;AAAA,YACvD,MAAM;AAAA,YACN,OAAAiN;AAAA,UACR,CAAO,GACG,CAAA,EAAGiS,CAAU,IAAID,GACjBE,IAAgBpa,EAAO,QAAQH,GAAQkG,GAAIoU,CAAU,GACrDE,IAAcra,EAAO,MAAMH,GAAQkG,GAAIoU,CAAU,GACjDG,KAAYta,EAAO,QAAQH,GAAQ0Z,IAAa3Y,EAAK,KAAK0I,CAAS,IAAIA,CAAS,GAChF4P,IAASlZ,EAAO,QAAQH,GAAQwa,IAAczZ,EAAK,KAAKuZ,CAAU,IAAIA,CAAU,GAChFI,KAAeva,EAAO,QAAQH,GAAQyJ,CAAS;AACnD,UAAArI,EAAW,WAAWpB,GAAQ;AAAA,YAC5B,IAAAkG;AAAA,YACA,OAAO,CAAA9K,MAAKgf,IAAYja,EAAO,QAAQH,GAAQ5E,CAAC,IAAImG,EAAK,OAAOnG,CAAC,KAAK+E,EAAO,SAASH,GAAQ5E,CAAC;AAAA,YAC/F,MAAMgf,IAAY,WAAW;AAAA,YAC7B,OAAA/R;AAAA,UACR,CAAO;AACD,cAAI+Q,KAAWjZ,EAAO,QAAQH,GAAQ,CAACua,KAAiBA,KAAiBC,IAAczZ,EAAK,KAAKuZ,CAAU,IAAIA,CAAU;AA4BzH,cA3BAlZ,EAAW,YAAYpB,GAAQga,GAAQ;AAAA,YACrC,IAAIZ,GAAS;AAAA,YACb,OAAO,CAAAhe,MAAKmG,EAAK,OAAOnG,CAAC,KAAK+E,EAAO,SAASH,GAAQ5E,CAAC;AAAA,YACvD,MAAM;AAAA,YACN,OAAAiN;AAAA,UACR,CAAO,GAEGsR,KAAgBM,EAAQ,UAC1B7Y,EAAW,OAAOpB,GAAQ;AAAA,YACxB,IAAI0a,GAAa,MAAK;AAAA,YACtB,OAAArS;AAAA,UACV,CAAS,GAGHjH,EAAW,YAAYpB,GAAQia,GAAS;AAAA,YACtC,IAAIQ,GAAU;AAAA,YACd,OAAO,CAAArf,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAAA,YACpC,MAAM;AAAA,YACN,OAAAiN;AAAA,UACR,CAAO,GACDjH,EAAW,YAAYpB,GAAQka,GAAM;AAAA,YACnC,IAAIb,EAAO;AAAA,YACX,OAAO,CAAAje,MAAKmG,EAAK,OAAOnG,CAAC,KAAK+E,EAAO,SAASH,GAAQ5E,CAAC;AAAA,YACvD,MAAM;AAAA,YACN,OAAAiN;AAAA,UACR,CAAO,GAEG,CAACD,EAAQ,IAAI;AACf,gBAAItH;AAEJ,YAAIoZ,EAAK,SAAS,IAChBpZ,KAAOC,EAAK,SAASsY,EAAO,OAAO,IAC1BY,EAAQ,SAAS,IAC1BnZ,KAAOC,EAAK,SAAS0Z,GAAU,OAAO,IAEtC3Z,KAAOC,EAAK,SAASqY,GAAS,OAAO;AAGvC,gBAAIuB,KAAQxa,EAAO,IAAIH,GAAQc,EAAI;AAEnC,YAAAM,EAAW,OAAOpB,GAAQ2a,EAAK;AAAA,UACjC;AAEA,UAAAvB,GAAS,MAAK,GACdqB,GAAU,MAAK,GACfpB,EAAO,MAAK;AAAA;AAAA;AAAA,IACd,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWrZ,GAAQ8B,GAAM;AACvB,QAAIsG,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,IAAAjI,EAAO,mBAAmBH,GAAQ,MAAM;AACtC,UAAI;AAAA,QACF,OAAAqI,IAAQ;AAAA,MAChB,IAAUD,GACA;AAAA,QACF,IAAAlC,IAAKlG,EAAO;AAAA,MACpB,IAAUoI;AAEJ,UAAKlC,GAQL;AAAA,YAJInF,EAAK,OAAOmF,CAAE,MAChBA,IAAK/F,EAAO,MAAMH,GAAQkG,CAAE,IAG1B5E,EAAM,QAAQ4E,CAAE;AAClB,cAAI5E,EAAM,YAAY4E,CAAE;AACtB,YAAAA,IAAKA,EAAG;AAAA,eACH;AACL,gBAAIG,IAAM/E,EAAM,IAAI4E,CAAE;AAEtB,gBAAI,CAACmC,KAASlI,EAAO,KAAKH,GAAQ;AAAA,cAChC,IAAIqG;AAAA,YAChB,CAAW;AACC;AAGF,gBAAI4O,IAAW9U,EAAO,SAASH,GAAQqG,CAAG;AAC1C,YAAAjF,EAAW,OAAOpB,GAAQ;AAAA,cACxB,IAAAkG;AAAA,cACA,OAAAmC;AAAA,YACZ,CAAW,GACDnC,IAAK+O,EAAS,MAAK,GACnB7T,EAAW,aAAapB,GAAQ;AAAA,cAC9B,QAAQkG;AAAA,cACR,OAAOA;AAAA,YACnB,CAAW;AAAA,UACH;AAGF,YAAI,GAACmC,KAASlI,EAAO,KAAKH,GAAQ;AAAA,UAChC,IAAAkG;AAAA,QACR,CAAO,IAID;AAAA,cAAI;AAAA,YACF,MAAApF;AAAA,YACA,QAAA0O;AAAA,UACR,IAAUtJ;AACJ,UAAIpE,EAAK,SAAS,KAAG9B,EAAO,MAAM;AAAA,YAChC,MAAM;AAAA,YACN,MAAAc;AAAA,YACA,QAAA0O;AAAA,YACA,MAAA1N;AAAA,UACR,CAAO;AAAA;AAAA;AAAA,IACH,CAAC;AAAA,EACH;AAEF;AAEA,SAAS8Y,GAAQrb,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAExV,SAASob,GAAchb,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKsf,GAAQ,OAAO9a,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAEF,MAAAA,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY8a,GAAQ,OAAO9a,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AACrhB,IAAIuB,IAAayZ,gBAAAA,GAAcA,gBAAAA,GAAcA,gBAAAA,GAAcA,gBAAAA,GAAc,CAAA,GAAIxG,EAAiB,GAAGQ,EAAc,GAAG0D,EAAmB,GAAGI,EAAc;;;UCjwLtJmC,KAAiBpZ;AAEjB,MAAIqZ,IAAM,aACNC,IACF,mCAIEC,IAAM,IAAI,OAAO,QAAQD,IAAM,QAAQD,IAAM,GAAG,GAChDG,IAAM,IAAI,OAAO,QAAQH,IAAM,QAAQC,IAAM,GAAG;AAEpD,WAAStZ,EAAU5C,GAAO;AAGxB,WAFAA,IAAQ,OAAOA,KAAS,EAAE,GAEtBmc,EAAI,KAAKnc,CAAK,IACT,QAGLoc,EAAI,KAAKpc,CAAK,IACT,QAGF;AAAA,EACT;;;;;;;;;ACAA,WAAS/D,EAAS+D,GAAO;AACvB,QAAIoG,IAAO,OAAOpG;AAClB,WAAOA,KAAS,SAASoG,KAAQ,YAAYA,KAAQ;AAAA,EACvD;AAEA,SAAAiW,KAAiBpgB;;;;;;AC7BjB,MAAIqgB,IAAa,OAAOC,MAAU,YAAYA,MAAUA,GAAO,WAAW,UAAUA;AAEpF,SAAAC,KAAiBF;;;;;;ACHjB,MAAIA,IAAaG,GAAA,GAGbC,IAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU,MAGxE5O,IAAOwO,KAAcI,KAAY,SAAS,aAAa,EAAC;AAE5D,SAAAC,KAAiB7O;;;;;;ACRjB,MAAIA,IAAO2O,GAAA,GAkBPG,IAAM,WAAW;AACnB,WAAO9O,EAAK,KAAK,IAAG;AAAA,EACtB;AAEA,SAAA+O,KAAiBD;;;;;;ACrBjB,MAAIE,IAAe;AAUnB,WAASC,EAAgBC,GAAQ;AAG/B,aAFIjP,IAAQiP,EAAO,QAEZjP,OAAW+O,EAAa,KAAKE,EAAO,OAAOjP,CAAK,CAAC;AAAG;AAC3D,WAAOA;AAAA,EACT;AAEA,SAAAkP,KAAiBF;;;;;;AClBjB,MAAIA,IAAkBN,GAAA,GAGlBS,IAAc;AASlB,WAASC,EAASH,GAAQ;AACxB,WAAOA,KACHA,EAAO,MAAM,GAAGD,EAAgBC,CAAM,IAAI,CAAC,EAAE,QAAQE,GAAa,EAAE;AAAA,EAE1E;AAEA,SAAAE,KAAiBD;;;;;;AClBjB,MAAIrP,IAAO2O,GAAA,GAGPY,IAASvP,EAAK;AAElB,SAAAwP,KAAiBD;;;;;;ACLjB,MAAIA,IAASZ,GAAA,GAGTc,IAAc,OAAO,WAGrBC,IAAiBD,EAAY,gBAO7BE,IAAuBF,EAAY,UAGnCG,IAAiBL,IAASA,EAAO,cAAc;AASnD,WAASM,EAAU3d,GAAO;AACxB,QAAI4d,IAAQJ,EAAe,KAAKxd,GAAO0d,CAAc,GACjDG,IAAM7d,EAAM0d,CAAc;AAE9B,QAAI;AACF,MAAA1d,EAAM0d,CAAc,IAAI;AACxB,UAAII,IAAW;AAAA,IACnB,QAAc;AAAA,IAAA;AAEZ,QAAIrN,IAASgN,EAAqB,KAAKzd,CAAK;AAC5C,WAAI8d,MACEF,IACF5d,EAAM0d,CAAc,IAAIG,IAExB,OAAO7d,EAAM0d,CAAc,IAGxBjN;AAAA,EACT;AAEA,SAAAsN,KAAiBJ;;;;;;AC5CjB,MAAIJ,IAAc,OAAO,WAOrBE,IAAuBF,EAAY;AASvC,WAASS,EAAehe,GAAO;AAC7B,WAAOyd,EAAqB,KAAKzd,CAAK;AAAA,EACxC;AAEA,SAAAie,KAAiBD;;;;;;ACrBjB,MAAIX,IAASZ,GAAA,GACTkB,IAAYO,GAAA,GACZF,IAAiBG,GAAA,GAGjBC,IAAU,iBACVC,IAAe,sBAGfX,IAAiBL,IAASA,EAAO,cAAc;AASnD,WAASiB,EAAWte,GAAO;AACzB,WAAIA,KAAS,OACJA,MAAU,SAAYqe,IAAeD,IAEtCV,KAAkBA,KAAkB,OAAO1d,CAAK,IACpD2d,EAAU3d,CAAK,IACfge,EAAehe,CAAK;AAAA,EAC1B;AAEA,SAAAue,KAAiBD;;;;;;ACHjB,WAASE,EAAaxe,GAAO;AAC3B,WAAOA,KAAS,QAAQ,OAAOA,KAAS;AAAA,EAC1C;AAEA,SAAAye,KAAiBD;;;;;;AC5BjB,MAAIF,IAAa7B,GAAA,GACb+B,IAAeN,GAAA,GAGfQ,IAAY;AAmBhB,WAASC,EAAS3e,GAAO;AACvB,WAAO,OAAOA,KAAS,YACpBwe,EAAaxe,CAAK,KAAKse,EAAWte,CAAK,KAAK0e;AAAA,EACjD;AAEA,SAAAE,KAAiBD;;;;;;AC5BjB,MAAIxB,IAAWV,GAAA,GACXxgB,IAAWiiB,GAAA,GACXS,IAAWR,GAAA,GAGXU,IAAM,KAGNC,IAAa,sBAGbC,IAAa,cAGbC,IAAY,eAGZC,IAAe;AAyBnB,WAASC,EAASlf,GAAO;AACvB,QAAI,OAAOA,KAAS;AAClB,aAAOA;AAET,QAAI2e,EAAS3e,CAAK;AAChB,aAAO6e;AAET,QAAI5iB,EAAS+D,CAAK,GAAG;AACnB,UAAImf,IAAQ,OAAOnf,EAAM,WAAW,aAAaA,EAAM,QAAO,IAAKA;AACnE,MAAAA,IAAQ/D,EAASkjB,CAAK,IAAKA,IAAQ,KAAMA;AAAA,IAC7C;AACE,QAAI,OAAOnf,KAAS;AAClB,aAAOA,MAAU,IAAIA,IAAQ,CAACA;AAEhC,IAAAA,IAAQmd,EAASnd,CAAK;AACtB,QAAIof,IAAWL,EAAW,KAAK/e,CAAK;AACpC,WAAQof,KAAYJ,EAAU,KAAKhf,CAAK,IACpCif,EAAajf,EAAM,MAAM,CAAC,GAAGof,IAAW,IAAI,CAAC,IAC5CN,EAAW,KAAK9e,CAAK,IAAI6e,IAAM,CAAC7e;AAAA,EACvC;AAEA,SAAAqf,KAAiBH;;;;;;AC/DjB,MAAIjjB,IAAWwgB,GAAA,GACXG,IAAMsB,GAAA,GACNgB,IAAWf,GAAA,GAGXmB,IAAkB,uBAGlBC,IAAY,KAAK,KACjBC,IAAY,KAAK;AAwDrB,WAASC,EAASC,GAAMC,GAAMrW,GAAS;AACrC,QAAIsW,GACAC,GACAC,GACArP,GACAsP,GACAC,GACAC,IAAiB,GACjBC,IAAU,IACVC,IAAS,IACTC,IAAW;AAEf,QAAI,OAAOV,KAAQ;AACjB,YAAM,IAAI,UAAUJ,CAAe;AAErC,IAAAK,IAAOT,EAASS,CAAI,KAAK,GACrB1jB,EAASqN,CAAO,MAClB4W,IAAU,CAAC,CAAC5W,EAAQ,SACpB6W,IAAS,aAAa7W,GACtBwW,IAAUK,IAASZ,EAAUL,EAAS5V,EAAQ,OAAO,KAAK,GAAGqW,CAAI,IAAIG,GACrEM,IAAW,cAAc9W,IAAU,CAAC,CAACA,EAAQ,WAAW8W;AAG1D,aAASC,EAAWC,GAAM;AACxB,UAAIC,IAAOX,GACPY,IAAUX;AAEd,aAAAD,IAAWC,IAAW,QACtBI,IAAiBK,GACjB7P,IAASiP,EAAK,MAAMc,GAASD,CAAI,GAC1B9P;AAAA,IACX;AAEE,aAASgQ,EAAYH,GAAM;AAEzB,aAAAL,IAAiBK,GAEjBP,IAAU,WAAWW,GAAcf,CAAI,GAEhCO,IAAUG,EAAWC,CAAI,IAAI7P;AAAA,IACxC;AAEE,aAASkQ,EAAcL,GAAM;AAC3B,UAAIM,IAAoBN,IAAON,GAC3Ba,IAAsBP,IAAOL,GAC7Ba,IAAcnB,IAAOiB;AAEzB,aAAOT,IACHX,EAAUsB,GAAahB,IAAUe,CAAmB,IACpDC;AAAA,IACR;AAEE,aAASC,EAAaT,GAAM;AAC1B,UAAIM,IAAoBN,IAAON,GAC3Ba,IAAsBP,IAAOL;AAKjC,aAAQD,MAAiB,UAAcY,KAAqBjB,KACzDiB,IAAoB,KAAOT,KAAUU,KAAuBf;AAAA,IACnE;AAEE,aAASY,IAAe;AACtB,UAAIJ,IAAO1D,EAAG;AACd,UAAImE,EAAaT,CAAI;AACnB,eAAOU,EAAaV,CAAI;AAG1B,MAAAP,IAAU,WAAWW,GAAcC,EAAcL,CAAI,CAAC;AAAA,IAC1D;AAEE,aAASU,EAAaV,GAAM;AAK1B,aAJAP,IAAU,QAINK,KAAYR,IACPS,EAAWC,CAAI,KAExBV,IAAWC,IAAW,QACfpP;AAAA,IACX;AAEE,aAASwQ,IAAS;AAChB,MAAIlB,MAAY,UACd,aAAaA,CAAO,GAEtBE,IAAiB,GACjBL,IAAWI,IAAeH,IAAWE,IAAU;AAAA,IACnD;AAEE,aAASmB,IAAQ;AACf,aAAOnB,MAAY,SAAYtP,IAASuQ,EAAapE,EAAG,CAAE;AAAA,IAC9D;AAEE,aAASuE,IAAY;AACnB,UAAIb,IAAO1D,EAAG,GACVwE,IAAaL,EAAaT,CAAI;AAMlC,UAJAV,IAAW,WACXC,IAAW,MACXG,IAAeM,GAEXc,GAAY;AACd,YAAIrB,MAAY;AACd,iBAAOU,EAAYT,CAAY;AAEjC,YAAIG;AAEF,8BAAaJ,CAAO,GACpBA,IAAU,WAAWW,GAAcf,CAAI,GAChCU,EAAWL,CAAY;AAAA,MAEtC;AACI,aAAID,MAAY,WACdA,IAAU,WAAWW,GAAcf,CAAI,IAElClP;AAAA,IACX;AACE,WAAA0Q,EAAU,SAASF,GACnBE,EAAU,QAAQD,GACXC;AAAA,EACT;AAEA,SAAAE,KAAiB5B;;;;;;;;AC9LjB,MAAIA,IAAWhD,GAAA,GACXxgB,IAAWiiB,GAAA,GAGXoB,IAAkB;AA8CtB,WAASgC,EAAS5B,GAAMC,GAAMrW,GAAS;AACrC,QAAI4W,IAAU,IACVE,IAAW;AAEf,QAAI,OAAOV,KAAQ;AACjB,YAAM,IAAI,UAAUJ,CAAe;AAErC,WAAIrjB,EAASqN,CAAO,MAClB4W,IAAU,aAAa5W,IAAU,CAAC,CAACA,EAAQ,UAAU4W,GACrDE,IAAW,cAAc9W,IAAU,CAAC,CAACA,EAAQ,WAAW8W,IAEnDX,EAASC,GAAMC,GAAM;AAAA,MAC1B,SAAWO;AAAA,MACX,SAAWP;AAAA,MACX,UAAYS;AAAA,IAChB,CAAG;AAAA,EACH;AAEA,SAAAmB,KAAiBD;;;;ACpEjB,SAAS1kB,GAAEA,GAAE;AAAC,SAAgB,OAAOA,KAAjB,YAA0BA,KAAN,QAAaA,EAAE,aAAN;AAAc;AAAC,SAASL,GAAEK,GAAEL,GAAE;AAAC,UAAO,CAACA,KAAcK,MAAX,aAA2BA,MAAZ,aAAwBA,MAAT;AAAU;AAAC,SAASN,GAAEM,GAAEN,GAAE;AAAC,MAAGM,EAAE,eAAaA,EAAE,gBAAcA,EAAE,cAAYA,EAAE,aAAY;AAAC,QAAIF,IAAE,iBAAiBE,GAAE,IAAI;AAAE,WAAOL,GAAEG,EAAE,WAAUJ,CAAC,KAAGC,GAAEG,EAAE,WAAUJ,CAAC,KAAG,SAASM,GAAE;AAAC,UAAIL,IAAE,SAASK,GAAE;AAAC,YAAG,CAACA,EAAE,iBAAe,CAACA,EAAE,cAAc,YAAY,QAAO;AAAK,YAAG;AAAC,iBAAOA,EAAE,cAAc,YAAY;AAAA,QAAY,QAAS;AAAC,iBAAO;AAAA,QAAI;AAAA,MAAC,EAAEA,CAAC;AAAE,aAAM,CAAC,CAACL,MAAIA,EAAE,eAAaK,EAAE,gBAAcL,EAAE,cAAYK,EAAE;AAAA,IAAY,EAAEA,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASF,GAAEE,GAAEL,GAAED,GAAEI,GAAEF,GAAEN,GAAEuB,GAAEE,GAAE;AAAC,SAAOzB,IAAEU,KAAGa,IAAElB,KAAGL,IAAEU,KAAGa,IAAElB,IAAE,IAAEL,KAAGU,KAAGe,KAAGrB,KAAGmB,KAAGlB,KAAGoB,KAAGrB,IAAEJ,IAAEU,IAAEF,IAAEe,IAAElB,KAAGoB,IAAErB,KAAGJ,IAAEU,KAAGe,IAAErB,IAAEmB,IAAElB,IAAEC,IAAE;AAAC;AAAC,IAAIA,KAAE,SAAS,GAAEA,GAAE;AAAC,MAAIN,IAAE,QAAOuB,IAAEjB,EAAE,YAAWmB,IAAEnB,EAAE,OAAMY,IAAEZ,EAAE,QAAOqB,IAAErB,EAAE,UAASU,IAAEV,EAAE,4BAA2BO,IAAc,OAAOc,KAAnB,aAAqBA,IAAE,SAASjB,IAAE;AAAC,WAAOA,OAAIiB;AAAA,EAAC;AAAE,MAAG,CAACjB,GAAE,CAAC,EAAE,OAAM,IAAI,UAAU,gBAAgB;AAAE,WAAQO,GAAEE,GAAEc,IAAE,SAAS,oBAAkB,SAAS,iBAAgBX,IAAE,CAAA,GAAG0O,IAAE,GAAEtP,GAAEsP,CAAC,KAAGnP,EAAEmP,CAAC,KAAG;AAAC,SAAIA,KAAS7O,KAAGF,IAAE+O,GAAG,kBAAf,OAA8B/O,EAAE,YAAW,EAAG,QAAM,OAAKE,OAAKc,GAAE;AAAC,MAAAX,EAAE,KAAK0O,CAAC;AAAE;AAAA,IAAK;AAAC,IAAMA,KAAN,QAASA,MAAI,SAAS,QAAM5P,GAAE4P,CAAC,KAAG,CAAC5P,GAAE,SAAS,eAAe,KAAS4P,KAAN,QAAS5P,GAAE4P,GAAEhP,CAAC,KAAGM,EAAE,KAAK0O,CAAC;AAAA,EAAC;AAAC,WAAQ5N,IAAEpC,EAAE,iBAAeA,EAAE,eAAe,QAAM,YAAWc,IAAEd,EAAE,iBAAeA,EAAE,eAAe,SAAO,aAAYoD,IAAE,OAAO,WAAS,aAAYZ,IAAE,OAAO,WAAS,aAAYZ,IAAE,EAAE,yBAAwBF,IAAEE,EAAE,QAAOiB,IAAEjB,EAAE,OAAMU,IAAEV,EAAE,KAAI0jB,IAAE1jB,EAAE,OAAMW,IAAEX,EAAE,QAAOe,IAAEf,EAAE,MAAK2jB,IAAY9jB,MAAV,WAAyBA,MAAZ,YAAca,IAAUb,MAAR,QAAUc,IAAED,IAAEZ,IAAE,GAAEuB,IAAa/B,MAAX,WAAayB,IAAEE,IAAE,IAAU3B,MAAR,QAAUokB,IAAE3iB,GAAE6iB,IAAE,CAAA,GAAG5iB,IAAE,GAAEA,IAAEtB,EAAE,QAAOsB,KAAI;AAAC,QAAIS,IAAE/B,EAAEsB,CAAC,GAAEM,IAAEG,EAAE,sBAAqB,GAAGnB,IAAEgB,EAAE,QAAO9B,IAAE8B,EAAE,OAAM3C,IAAE2C,EAAE,KAAItC,KAAEsC,EAAE,OAAMf,IAAEe,EAAE,QAAOlB,KAAEkB,EAAE;AAAK,QAAiB3B,MAAd,eAAiBe,KAAG,KAAGK,KAAG,KAAGJ,KAAGzB,KAAGwkB,KAAGljB,KAAGE,KAAG/B,KAAGgC,KAAGJ,KAAGQ,KAAGX,MAAGsjB,KAAG1kB,GAAE,QAAO4kB;AAAE,QAAI1iB,KAAE,iBAAiBO,CAAC,GAAEhC,KAAE,SAASyB,GAAE,iBAAgB,EAAE,GAAEJ,KAAE,SAASI,GAAE,gBAAe,EAAE,GAAEL,IAAE,SAASK,GAAE,kBAAiB,EAAE,GAAE2iB,KAAE,SAAS3iB,GAAE,mBAAkB,EAAE,GAAEK,KAAE,GAAEuiB,KAAE,GAAEC,KAAE,iBAAgBtiB,IAAEA,EAAE,cAAYA,EAAE,cAAYhC,KAAEoB,IAAE,GAAEJ,KAAE,kBAAiBgB,IAAEA,EAAE,eAAaA,EAAE,eAAaX,KAAE+iB,KAAE,GAAEhlB,KAAE,iBAAgB4C,IAAMA,EAAE,gBAAN,IAAkB,IAAEjC,IAAEiC,EAAE,cAAY,GAAEtB,KAAE,kBAAiBsB,IAAMA,EAAE,iBAAN,IAAmB,IAAEnB,IAAEmB,EAAE,eAAa;AAAE,QAAGpB,MAAIoB,EAAE,CAAAF,KAAY1B,MAAV,UAAY8jB,IAAU9jB,MAAR,QAAU8jB,IAAEzkB,IAAcW,MAAZ,YAAcjB,GAAEgC,GAAEA,IAAE1B,GAAEA,GAAE4B,IAAE+iB,IAAEjjB,IAAE+iB,GAAE/iB,IAAE+iB,IAAE7jB,GAAEA,CAAC,IAAE6jB,IAAEzkB,IAAE,GAAE4kB,KAAYxkB,MAAV,UAAY+B,IAAa/B,MAAX,WAAa+B,IAAEb,IAAE,IAAUlB,MAAR,QAAU+B,IAAEb,IAAE5B,GAAE4C,GAAEA,IAAEhB,GAAEA,GAAEf,IAAEoB,GAAEW,IAAEH,GAAEG,IAAEH,IAAEJ,GAAEA,CAAC,GAAEM,KAAE,KAAK,IAAI,GAAEA,KAAEX,CAAC,GAAEkjB,KAAE,KAAK,IAAI,GAAEA,KAAEtiB,CAAC;AAAA,SAAM;AAAC,MAAAD,KAAY1B,MAAV,UAAY8jB,IAAEhlB,IAAEmC,KAAUjB,MAAR,QAAU8jB,IAAEpjB,IAAEsjB,KAAEpjB,KAAcZ,MAAZ,YAAcjB,GAAED,GAAE4B,GAAED,GAAEQ,IAAE+iB,KAAEpjB,IAAEkjB,GAAEA,IAAE7jB,GAAEA,CAAC,IAAE6jB,KAAGhlB,IAAE2B,IAAE,KAAGG,KAAE,GAAEqjB,KAAYxkB,MAAV,UAAY+B,IAAEjB,KAAEX,KAAaH,MAAX,WAAa+B,KAAGjB,KAAEZ,IAAE,KAAGukB,KAAE,IAAUzkB,MAAR,QAAU+B,IAAErC,KAAE6B,IAAEkjB,KAAEnlB,GAAEwB,IAAEpB,IAAEQ,GAAEC,IAAEoB,IAAEkjB,IAAE1iB,GAAEA,IAAEJ,GAAEA,CAAC;AAAE,UAAIlC,KAAE0C,EAAE,YAAWuiB,KAAEviB,EAAE;AAAU,MAAAkiB,KAAGK,MAAGziB,KAAE,KAAK,IAAI,GAAE,KAAK,IAAIyiB,KAAEziB,KAAEpB,IAAEsB,EAAE,eAAanB,IAAEH,KAAEM,EAAC,CAAC,IAAGY,KAAGtC,MAAG+kB,KAAE,KAAK,IAAI,GAAE,KAAK,IAAI/kB,KAAE+kB,KAAEjlB,IAAE4C,EAAE,cAAYjC,IAAEX,KAAEklB,EAAC,CAAC;AAAA,IAAE;AAAC,IAAAH,EAAE,KAAK,EAAC,IAAGniB,GAAE,KAAIF,IAAE,MAAKuiB,GAAC,CAAC;AAAA,EAAC;AAAC,SAAOF;AAAC;ACC7kF,SAASK,GAAgBzY,GAAS;AAChC,SAAOA,MAAY,OAAOA,CAAO,KAAK,OAAO,KAAKA,CAAO,EAAE,WAAW;AACxE;AACA,SAAS0Y,GAAgBC,GAASC,GAAU;AAC1C,EAAIA,MAAa,WACfA,IAAW;AAEb,MAAIC,IAAmB,oBAAoB,SAAS,KAAK;AACzD,EAAAF,EAAQ,QAAQ,SAAU1gB,GAAM;AAC9B,QAAI6gB,IAAK7gB,EAAK,IACZ8gB,IAAM9gB,EAAK,KACXqE,IAAOrE,EAAK;AACd,IAAI6gB,EAAG,UAAUD,IACfC,EAAG,OAAO;AAAA,MACR,KAAKC;AAAA,MACL,MAAMzc;AAAA,MACN,UAAUsc;AAAA,IAClB,CAAO,KAEDE,EAAG,YAAYC,GACfD,EAAG,aAAaxc;AAAA,EAEpB,CAAC;AACH;AACA,SAAS0c,GAAWhZ,GAAS;AAC3B,SAAIA,MAAY,KACP;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,EACd,IAEMyY,GAAgBzY,CAAO,IAClBA,IAEF;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACA;AACA,SAASiZ,GAAexhB,GAAQuI,GAAS;AACvC,MAAIkZ,IAAmBzhB,EAAO,eAAeA,EAAO,cAAc,gBAAgB,SAASA,CAAM;AACjG,MAAIghB,GAAgBzY,CAAO,KAAK,OAAOA,EAAQ,YAAa;AAC1D,WAAOA,EAAQ,SAASkZ,IAAmBC,GAAQ1hB,GAAQuI,CAAO,IAAI,EAAE;AAE1E,MAAKkZ,GAGL;AAAA,QAAIE,IAAiBJ,GAAWhZ,CAAO;AACvC,WAAO0Y,GAAgBS,GAAQ1hB,GAAQ2hB,CAAc,GAAGA,EAAe,QAAQ;AAAA;AACjF;;;;UChDA,OAAO,eAAeC,IAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT,CAAC;AA4ED,WAtEIC,IAAS,OAAO,SAAU,OAAe,uBAAuB,KAAK,OAAO,UAAU,QAAQ,GAE9FC,IAAY;AAAA,IACd,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,KAGLC,IAAU;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK;AAAA,IACL,SAAS;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAKF,IAAS,SAAS;AAAA,IACvB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,SAAS;AAAA,KAGPG,IAAQ;AAAA,IACV,WAAW;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAM;AAAA,KAGC3lB,IAAI,GAAGA,IAAI,IAAIA;AACtB,IAAA2lB,EAAM,MAAM3lB,CAAC,IAAI,MAAMA;AAOzB,WAAS4lB,EAASC,GAAQ3Z,GAAS4Z,GAAO;AACxC,IAAI5Z,KAAW,EAAE,WAAWA,OAC1B4Z,IAAQ5Z,GACRA,IAAU,OAGP,MAAM,QAAQ2Z,CAAM,MACvBA,IAAS,CAACA,CAAM;AAGlB,QAAIE,IAAQF,EAAO,IAAI,SAAUjG,GAAQ;AACvC,aAAOoG,EAAYpG,GAAQ1T,CAAO;AAAA,IACtC,CAAG,GACG+Z,IAAQ,SAAe9mB,GAAG;AAC5B,aAAO4mB,EAAM,KAAK,SAAU1iB,GAAQ;AAClC,eAAO6iB,EAAc7iB,GAAQlE,CAAC;AAAA,MACpC,CAAK;AAAA,IACL,GACMgnB,IAAML,KAAS,OAAOG,IAAQA,EAAMH,CAAK;AAC7C,WAAOK;AAAA,EACT;AAEA,WAASC,EAAaP,GAAQC,GAAO;AACnC,WAAOF,EAASC,GAAQC,CAAK;AAAA,EAC/B;AAEA,WAASO,EAAYR,GAAQC,GAAO;AAClC,WAAOF,EAASC,GAAQ,EAAE,OAAO,GAAI,GAAIC,CAAK;AAAA,EAChD;AAMA,WAASE,EAAYH,GAAQ3Z,GAAS;AACpC,QAAIoa,IAAQpa,KAAWA,EAAQ,OAC3Bia,IAAM,CAAA;AAGV,IAAAN,IAASA,EAAO,QAAQ,MAAM,MAAM;AACpC,QAAIU,IAASV,EAAO,MAAM,GAAG,GACzB3Q,IAASqR,EAAO;AAIpB,aAAS7kB,KAAK+jB;AACZ,MAAAU,EAAIV,EAAU/jB,CAAC,CAAC,IAAI;AAGtB,QAAI8kB,IAA4B,IAC5BC,IAAoB,IACpBC,IAAiB;AAErB,QAAI;AACF,eAASC,IAAYJ,EAAO,OAAO,QAAQ,EAAC,GAAIK,GAAO,EAAEJ,KAA6BI,IAAQD,EAAU,KAAI,GAAI,OAAOH,IAA4B,IAAM;AACvJ,YAAI5jB,IAAQgkB,EAAM,OAEdC,IAAWjkB,EAAM,SAAS,GAAG,KAAKA,EAAM,SAAS;AAErD,QAAIikB,MACFjkB,IAAQA,EAAM,MAAM,GAAG,EAAE;AAG3B,YAAIkkB,IAAOC,EAAUnkB,CAAK,GACtBokB,IAAWvB,EAAUqB,CAAI;AAE7B,SAAI5R,MAAW,KAAK,CAAC8R,OACfV,IACFH,EAAI,MAAMW,IAEVX,EAAI,QAAQc,EAAUrkB,CAAK,IAI3BokB,MACFb,EAAIa,CAAQ,IAAIH,IAAW,OAAO;AAAA,MAE1C;AAAA,IACA,SAAWK,GAAK;AACZ,MAAAT,IAAoB,IACpBC,IAAiBQ;AAAA,IACrB,UAAG;AACC,UAAI;AACF,QAAI,CAACV,KAA6BG,EAAU,UAC1CA,EAAU,OAAM;AAAA,MAExB,UAAK;AACC,YAAIF;AACF,gBAAMC;AAAA,MAEd;AAAA,IACA;AAEE,WAAOP;AAAA,EACT;AAMA,WAASD,EAAc7iB,GAAQyiB,GAAO;AACpC,aAASnjB,KAAOU,GAAQ;AACtB,UAAI8jB,IAAW9jB,EAAOV,CAAG,GACrBykB,IAAS;AAEb,UAAID,KAAY,SAIZxkB,MAAQ,SAASmjB,EAAM,OAAO,OAChCsB,IAAStB,EAAM,IAAI,YAAW,IACrBnjB,MAAQ,UACjBykB,IAASD,MAAa,MAAMrB,EAAM,UAAU,KAAK,KAAKA,EAAM,QAE5DsB,IAAStB,EAAMnjB,CAAG,GAGhB,EAAAykB,KAAU,QAAQD,MAAa,OAI/BC,MAAWD;AACb,eAAO;AAAA,IAEb;AAEE,WAAO;AAAA,EACT;AAMA,WAASF,EAAUH,GAAM;AACvB,IAAAA,IAAOC,EAAUD,CAAI;AACrB,QAAI/d,IAAO4c,EAAMmB,CAAI,KAAKA,EAAK,YAAW,EAAG,WAAW,CAAC;AACzD,WAAO/d;AAAA,EACT;AAEA,WAASge,EAAUD,GAAM;AACvB,WAAAA,IAAOA,EAAK,YAAW,GACvBA,IAAOpB,EAAQoB,CAAI,KAAKA,GACjBA;AAAA,EACT;AAMAvB,SAAAA,GAAA,UAAkBK,GAClBL,GAAA,WAAmBK,GACnBL,GAAA,eAAuBa,GACvBb,GAAA,cAAsBc,GACtBd,GAAA,cAAsBS,GACtBT,GAAA,gBAAwBW,GACxBX,GAAA,YAAoB0B,GACpB1B,GAAA,YAAoBwB;;;AC3OpB,SAAStkB,GAAgBC,GAAKC,GAAKC,GAAO;AACxC,SAAID,KAAOD,IACT,OAAO,eAAeA,GAAKC,GAAK;AAAA,IAC9B,OAAOC;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EAChB,CAAK,IAEDF,EAAIC,CAAG,IAAIC,GAGNF;AACT;AAEA,SAASmF,GAA8BjE,GAAQkE,GAAU;AACvD,MAAIlE,KAAU,KAAM,QAAO,CAAA;AAC3B,MAAID,IAAS,CAAA,GACToE,IAAa,OAAO,KAAKnE,CAAM,GAC/BjB,GAAKvD;AAET,OAAKA,IAAI,GAAGA,IAAI2I,EAAW,QAAQ3I;AAEjC,IADAuD,IAAMoF,EAAW3I,CAAC,GACd,EAAA0I,EAAS,QAAQnF,CAAG,KAAK,OAC7BgB,EAAOhB,CAAG,IAAIiB,EAAOjB,CAAG;AAG1B,SAAOgB;AACT;AAEA,SAASqE,GAAyBpE,GAAQkE,GAAU;AAClD,MAAIlE,KAAU,KAAM,QAAO,CAAA;AAC3B,MAAID,IAASkE,GAA8BjE,GAAQkE,CAAQ,GACvDnF,GAAKvD;AAET,MAAI,OAAO,uBAAuB;AAChC,QAAI6I,IAAmB,OAAO,sBAAsBrE,CAAM;AAE1D,SAAKxE,IAAI,GAAGA,IAAI6I,EAAiB,QAAQ7I;AAEvC,MADAuD,IAAMsF,EAAiB7I,CAAC,GACpB,EAAA0I,EAAS,QAAQnF,CAAG,KAAK,MACxB,OAAO,UAAU,qBAAqB,KAAKiB,GAAQjB,CAAG,MAC3DgB,EAAOhB,CAAG,IAAIiB,EAAOjB,CAAG;AAAA,EAE5B;AAEA,SAAOgB;AACT;AAEA,IAAI0jB,KAAS,OAAO,YAAc,OAAe,OAAO,SAAW,OAAe,mCAAmB,KAAK,UAAU,SAAS,KAAK,CAAC,OAAO,UACtIC,KAAW,OAAO,YAAc,OAAe,2BAAW,KAAK,UAAU,SAAS,GAClFC,KAAa,OAAO,YAAc,OAAe,0BAAU,KAAK,UAAU,SAAS,GACnFC,KAAa,OAAO,YAAc,OAAe,mDAAmC,KAAK,UAAU,SAAS,GAC5GC,KAAY,OAAO,YAAc,OAAe,2CAA2B,KAAK,UAAU,SAAS,GAEnGC,KAAiB,OAAO,YAAc,OAAe,wDAAwC,KAAK,UAAU,SAAS,GACrHC,KAAY,OAAO,YAAc,OAAe,0BAAU,KAAK,UAAU,SAAS,GAGlFC,KAAmB,OAAO,YAAc,OAAe,0DAA0C,KAAK,UAAU,SAAS,GAEzHC,KAAoB,OAAO,YAAc,OAAe,8EAA8D,KAAK,UAAU,SAAS,GAE9IC,KAAe,OAAO,YAAc,OAAe,8BAAc,KAAK,UAAU,SAAS,GAEzFC,KAAe,OAAO,YAAc,OAAe,8BAAc,KAAK,UAAU,SAAS,GAEzFC,KAAmB,OAAO,YAAc,OAAe,2BAAW,KAAK,UAAU,SAAS,GAG1FC,KAAiB,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,SAAS,gBAAkB,KAGrIC,KAA2B,CAACN,MAAoB,CAACF;AACrD,OAAO,aAAe,OAAe,WAAW;AAChD,OAAO,WAAW,WAAW,UAAU,mBAAoB,YAMvDS,KAA4BF,KAAcG,KAAkBC,IAM5DC,KAAS,CAAA7c,MAAS;AACpB,MAAI;AAAA,IACF,QAAArF;AAAA,IACA,MAAA6K;AAAA,IACA,QAAArD;AAAA,IACA,MAAAhI;AAAA,EACJ,IAAM6F,GACA3H,IAASykB,GAAc,GACvB3jB,IAAO4jB,EAAY,SAAS1kB,GAAQ8B,CAAI,GACxCqJ,IAAapK,EAAK,OAAOD,CAAI;AAGjC,SAAId,EAAO,OAAO8J,CAAM,IACF6a,gBAAAA,EAAM,cAAcC,IAAiB;AAAA,IACvD,QAAQjjB,EAAK,OAAOmI,CAAM,EAAE;AAAA,EAClC,CAAK,IAMCqD,EAAK,SAAS,MAAMrD,EAAO,SAASA,EAAO,SAAS,SAAS,CAAC,MAAMhI,KAAQ,CAAC9B,EAAO,SAAS8J,CAAM,KAAK3J,EAAO,OAAOH,GAAQmL,CAAU,MAAM,KAC5HwZ,gBAAAA,EAAM,cAAcC,IAAiB;AAAA,IACvD,aAAa;AAAA,EACnB,CAAK,IAMCzX,EAAK,SAAS,KACIwX,gBAAAA,EAAM,cAAcC,IAAiB,IAAI,IAK3DtiB,KAAU6K,EAAK,KAAK,MAAM,EAAE,MAAM;AAAA,IAChBwX,gBAAAA,EAAM,cAAcE,IAAY;AAAA,IAClD,YAAY;AAAA,IACZ,MAAM1X,EAAK;AAAA,EACjB,CAAK,IAGiBwX,gBAAAA,EAAM,cAAcE,IAAY;AAAA,IAClD,MAAM1X,EAAK;AAAA,EACf,CAAG;AACH,GAMI0X,KAAa,CAAAld,MAAS;AACxB,MAAI;AAAA,IACF,MAAA7F;AAAA,IACA,YAAAgjB,IAAa;AAAA,EACjB,IAAMnd,GACAzH,IAAM6kB,GAAO,IAAI,GAEjBC,IAAiB,MACZ,GAAG,OAAOljB,KAA0C,EAAE,EAAE,OAAOgjB,IAAa;AAAA,IAAO,EAAE;AAuB9F,SAZAT,GAA0B,MAAM;AAE9B,QAAIY,IAAmBD,EAAc;AAErC,IAAI9kB,EAAI,WAAWA,EAAI,QAAQ,gBAAgB+kB,MAC7C/kB,EAAI,QAAQ,cAAc+kB;AAAA,EAI9B,CAAC,GAGI/kB,EAAI,UAQWykB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC9C,qBAAqB;AAAA,IACrB,KAAKzkB;AAAA,EACT,CAAG,IAVqBykB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC9C,qBAAqB;AAAA,IACrB,KAAKzkB;AAAA,EACX,GAAO8kB,EAAc,CAAE;AAQvB,GAMIJ,KAAkB,CAAAjd,MAAS;AAC7B,MAAI;AAAA,IACF,QAAAyJ,IAAS;AAAA,IACT,aAAA8T,IAAc;AAAA,EAClB,IAAMvd;AACJ,SAAoBgd,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC9C,yBAAyBO,IAAc,MAAM;AAAA,IAC7C,qBAAqB9T;AAAA,EACzB,GAAK,UAAU8T,IAA2BP,gBAAAA,EAAM,cAAc,MAAM,IAAI,IAAI,IAAI;AAChF,GAMIQ,KAAgB,oBAAI,QAAO,GAC3BC,KAAiB,oBAAI,QAAO,GAM5BC,KAAmB,oBAAI,QAAO,GAC9BC,KAAoB,oBAAI,QAAO,GAC/BC,KAAkB,oBAAI,QAAO,GAC7BC,KAAkB,oBAAI,QAAO,GAC7BC,KAAc,oBAAI,QAAO,GACzBC,KAA2B,oBAAI,QAAO,GAKtCC,KAAe,oBAAI,QAAO,GAC1BC,KAAa,oBAAI,QAAO,GACxBC,KAAe,oBAAI,QAAO,GAC1BC,KAAwB,oBAAI,QAAO,GAKnCC,KAA6B,oBAAI,QAAO,GAKxCC,KAAsB,oBAAI,QAAO,GACjCC,KAAsB,oBAAI,QAAO,GAKjCC,KAAqB,uBAAO,aAAa,GAMzCC,KAAO,CAAAxe,MAAS;AAClB,MAAI;AAAA,IACF,MAAAwF;AAAA,IACA,QAAA7K;AAAA,IACA,MAAAR;AAAA,IACA,QAAAgI;AAAA,IACA,mBAAAsc;AAAA,IACA,YAAAC,IAAa,CAAA1e,MAAsBgd,gBAAAA,EAAM,cAAc2B,IAAa,OAAO,OAAO,CAAA,GAAI3e,CAAK,CAAC;AAAA,EAChG,IAAMA,GACA4e,IAAiBxB,GAAO,IAAI;AAChC,EAAAR,GAAU,MAAM;AACd,QAAIiC,IAAgFD,GAAe,SAC/FE,IAAW,SAAS,cAAc,4BAA4B;AAElE,QAAI,GAACD,KAAiB,CAACC;AAIvB,aAAAA,EAAS,MAAM,YAAY,GAAG,OAAOD,EAAc,cAAc,IAAI,GAC9D,MAAM;AACX,QAAAC,EAAS,MAAM,YAAY;AAAA,MAC7B;AAAA,EACF,GAAG,CAACF,GAAgBpZ,CAAI,CAAC;AACzB,MAAInE,IAAwB2b,gBAAAA,EAAM,cAAcH,IAAQ;AAAA,IACtD,QAAQliB;AAAA,IACR,MAAM6K;AAAA,IACN,QAAQrD;AAAA,IACR,MAAMhI;AAAA,EACV,CAAG;AAED,MAAIqL,EAAK+Y,EAAkB,GAAG;AAC5B,QAAIQ,IAAmB;AAAA,MACrB,UAAUvZ,EAAK;AAAA,MACf,YAAY;AAAA,QACV,0BAA0B;AAAA,QAC1B,OAAO;AAAA,UACL,UAAU;AAAA,UACV,eAAe;AAAA,UACf,OAAO;AAAA,UACP,UAAU;AAAA,UACV,SAAS;AAAA,UACT,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QAC1B;AAAA,QACQ,iBAAiB;AAAA,QACjB,KAAKoZ;AAAA,MACb;AAAA,IACA;AACI,IAAAvd,IAAwB2b,gBAAAA,EAAM,cAAcA,EAAM,UAAU,MAAMyB,EAAkBM,CAAgB,GAAG1d,CAAQ;AAAA,EACjH;AAKA,MAAI2d,IAAa;AAAA,IACf,mBAAmB;AAAA,EACvB;AACE,SAAON,EAAW;AAAA,IAChB,YAAAM;AAAA,IACA,UAAA3d;AAAA,IACA,MAAAmE;AAAA,IACA,MAAArL;AAAA,EACJ,CAAG;AACH,GAEI8kB,KAA4BjC,gBAAAA,EAAM,KAAKwB,IAAM,CAAC9jB,GAAM0H,MAC/CA,EAAK,WAAW1H,EAAK,UAAU0H,EAAK,WAAW1H,EAAK,UAAU0H,EAAK,eAAe1H,EAAK,cAAc0H,EAAK,sBAAsB1H,EAAK,qBAAqB0H,EAAK,SAAS1H,EAAK,QAAQwkB,EAAO,OAAO9c,EAAK,MAAM1H,EAAK,IAAI,KAAK0H,EAAK,KAAKmc,EAAkB,MAAM7jB,EAAK,KAAK6jB,EAAkB,CAClS,GACGI,KAAc,CAAA3e,MAAS;AACzB,MAAI;AAAA,IACF,YAAAgf;AAAA,IACA,UAAA3d;AAAA,EACJ,IAAMrB;AACJ,SAAoBgd,gBAAAA,EAAM,cAAc,QAAQ,OAAO,OAAO,CAAA,GAAIgC,CAAU,GAAG3d,CAAQ;AACzF,GAEIyD,KAAc,CAAC,UAAU,OAAO,GAChCiI,KAAa,CAAC,UAAU,OAAO,GAC/BoS,KAAiB,CAACC,GAAMC,MAAS,OAAO,KAAKD,CAAI,EAAE,WAAW,OAAO,KAAKC,CAAI,EAAE,UAAU,OAAO,KAAKD,CAAI,EAAE,MAAM,CAAAloB,MAAOmoB,EAAK,eAAenoB,CAAG,KAAKkoB,EAAKloB,CAAG,MAAMmoB,EAAKnoB,CAAG,CAAC,GAS5KooB,KAA4B,CAACtY,GAAM5B,MAAY;AACjD,MAAI4B,EAAK,WAAW5B,EAAQ;AAC1B,WAAO;AAGT,WAASzR,IAAI,GAAGA,IAAIqT,EAAK,QAAQrT,KAAK;AACpC,QAAIoN,IAAQiG,EAAKrT,CAAC,GACd2iB,IAAQlR,EAAQzR,CAAC,GAEjB4rB,IAAgBhjB,GAAyBwE,GAAO+D,EAAW,GAE3D0a,IAAgBjjB,GAAyB+Z,GAAOvJ,EAAU;AAE9D,QAAI,CAACpT,EAAM,OAAOoH,GAAOuV,CAAK,KAAKvV,EAAMwd,EAAkB,MAAMjI,EAAMiI,EAAkB,KAAK,CAACY,GAAeI,GAAeC,CAAa;AACxI,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAEA,SAASC,GAAcvlB,GAAM;AAC3B,MAAIwlB,IAAgBtC,GAAO,CAAC,GACxBuC,IAA0BvC,GAAO,IAAI,GACrC,GAAGwC,CAAuB,IAAIC,GAAS,CAAC;AAC5C,SAAAjD,GAAU,OACR0B,GAAoB,IAAIpkB,GAAM,MAAM;AAElC,IAAIylB,EAAwB,YAI5BA,EAAwB,UAAU,sBAAsB,MAAM;AAC5D,MAAAC,EAAwB,CAAAE,MAASA,IAAQ,CAAC,GAC1CH,EAAwB,UAAU;AAAA,IACpC,CAAC,GACDD,EAAc;AAAA,EAChB,CAAC,GACM,MAAM;AACX,IAAApB,GAAoB,OAAOpkB,CAAI;AAAA,EACjC,IACC,CAACA,CAAI,CAAC,GAELylB,EAAwB,YAC1B,qBAAqBA,EAAwB,OAAO,GACpDA,EAAwB,UAAU,OAG7BD,EAAc;AACvB;AAMA,IAAI9lB,KAAO,CAAAoG,MAAS;AAelB,WAdI;AAAA,IACF,aAAAsJ;AAAA,IACA,QAAA3O;AAAA,IACA,QAAAwH;AAAA,IACA,mBAAAsc;AAAA,IACA,YAAAC;AAAA,IACA,MAAAvkB;AAAA,EACJ,IAAM6F,GACA3H,IAASykB,GAAc,GACvBvkB,IAAM6kB,GAAO,IAAI,GACjB7T,IAAS2V,EAAO,YAAY/kB,GAAMmP,CAAW,GAC7CpS,IAAM6lB,EAAY,QAAQ1kB,GAAQ8B,CAAI,GACtCkH,IAAW,CAAA,GAEN1N,IAAI,GAAGA,IAAI4V,EAAO,QAAQ5V,KAAK;AACtC,QAAI6R,IAAO+D,EAAO5V,CAAC;AACnB,IAAA0N,EAAS,KAAmB2b,gBAAAA,EAAM,cAAciC,IAAc;AAAA,MAC5D,QAAQtkB,KAAUhH,MAAM4V,EAAO,SAAS;AAAA,MACxC,KAAK,GAAG,OAAOrS,EAAI,IAAI,GAAG,EAAE,OAAOvD,CAAC;AAAA,MACpC,mBAAmB8qB;AAAA,MACnB,MAAMjZ;AAAA,MACN,MAAMrL;AAAA,MACN,QAAQgI;AAAA,MACR,YAAYuc;AAAA,IAClB,CAAK,CAAC;AAAA,EACJ;AAGA,EAAAhC,GAA0B,MAAM;AAC9B,QAAIqD,IAAiBhC,GAAyB,IAAI1lB,CAAM;AAExD,IAAIE,EAAI,WAC0DwnB,GAAe,IAAI7oB,GAAKqB,EAAI,OAAO,GACnGslB,GAAgB,IAAI1jB,GAAM5B,EAAI,OAAO,GACrCqlB,GAAgB,IAAIrlB,EAAI,SAAS4B,CAAI,MAE2B4lB,GAAe,OAAO7oB,CAAG,GACzF2mB,GAAgB,OAAO1jB,CAAI;AAAA,EAE/B,CAAC;AACD,MAAI6lB,IAAalE,KAAa2D,GAActlB,CAAI,IAAI;AACpD,SAAoB6iB,gBAAAA,EAAM,cAAc,QAAQ;AAAA,IAC9C,mBAAmB;AAAA,IACnB,KAAKzkB;AAAA,IACL,KAAKynB;AAAA,EACT,GAAK3e,CAAQ;AACb,GAEI4e,KAA4BjD,gBAAAA,EAAM,KAAKpjB,IAAM,CAACc,GAAM0H,MAC/CA,EAAK,WAAW1H,EAAK,UAAU0H,EAAK,WAAW1H,EAAK,UAAU0H,EAAK,eAAe1H,EAAK,cAAc0H,EAAK,SAAS1H,EAAK,QAAQ4kB,GAA0Bld,EAAK,aAAa1H,EAAK,WAAW,CACpM,GAMGL,KAAU,CAAA2F,MAAS;AACrB,MAAI;AAAA,IACF,aAAAsJ;AAAA,IACA,SAAAnJ;AAAA,IACA,eAAA+f,IAAgB,CAAAvrB,MAAkBqoB,gBAAAA,EAAM,cAAcmD,IAAgB,OAAO,OAAO,IAAIxrB,CAAC,CAAC;AAAA,IAC1F,mBAAA8pB;AAAA,IACA,YAAAC;AAAA,IACA,WAAAhlB;AAAA,EACJ,IAAMsG,GACAzH,IAAM6kB,GAAO,IAAI,GACjB/kB,IAASykB,GAAc,GACvBsD,IAAWC,GAAW,GACtBC,IAAWjoB,EAAO,SAAS8H,CAAO,GAClCjJ,IAAM6lB,EAAY,QAAQ1kB,GAAQ8H,CAAO,GACzCkB,IAAWkf,GAAY;AAAA,IACzB,aAAAjX;AAAA,IACA,MAAMnJ;AAAA,IACN,eAAA+f;AAAA,IACA,mBAAAzB;AAAA,IACA,YAAAC;AAAA,IACA,WAAAhlB;AAAA,EACJ,CAAG,GAGGslB,IAAa;AAAA,IACf,mBAAmB;AAAA,IACnB,KAAAzmB;AAAA,EACJ;AAQE,MANI+nB,MACFtB,EAAW,mBAAmB,IAAI,KAKhC,CAACsB,KAAY9nB,EAAO,WAAWH,GAAQ8H,CAAO,GAAG;AACnD,QAAIhG,IAAOH,EAAK,OAAOmG,CAAO,GAC1BqgB,IAAMC,GAAatmB,CAAI;AAE3B,IAAIqmB,MAAQ,UACVxB,EAAW,MAAMwB;AAAA,EAErB;AAGA,MAAIhoB,EAAO,OAAOH,GAAQ8H,CAAO,GAAG;AAClC,IAAA6e,EAAW,iBAAiB,IAAI,IAE5B,CAACoB,KAAYE,MACftB,EAAW,kBAAkB;AAG/B,QAAI0B,IAAMJ,IAAW,SAAS,OAC1B,CAAC,CAAClV,CAAK,CAAC,IAAIpR,EAAK,MAAMmG,CAAO;AAClC,IAAAkB,IAAwB2b,gBAAAA,EAAM,cAAc0D,GAAK;AAAA,MAC/C,qBAAqB;AAAA,MACrB,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,MAClB;AAAA,IACA,GAAoB1D,gBAAAA,EAAM,cAAciD,IAAc;AAAA,MAChD,mBAAmBxB;AAAA,MACnB,aAAa,CAAA;AAAA,MACb,QAAQ;AAAA,MACR,QAAQte;AAAA,MACR,MAAMiL;AAAA,IACZ,CAAK,CAAC,GACFoS,GAAc,IAAIpS,GAAO,CAAC,GAC1BqS,GAAe,IAAIrS,GAAOjL,CAAO;AAAA,EACnC;AAGA,EAAAuc,GAA0B,MAAM;AAC9B,QAAIqD,IAAiBhC,GAAyB,IAAI1lB,CAAM;AAExD,IAAIE,EAAI,WAC0DwnB,GAAe,IAAI7oB,GAAKqB,EAAI,OAAO,GACnGslB,GAAgB,IAAI1d,GAAS5H,EAAI,OAAO,GACxCqlB,GAAgB,IAAIrlB,EAAI,SAAS4H,CAAO,MAEwB4f,GAAe,OAAO7oB,CAAG,GACzF2mB,GAAgB,OAAO1d,CAAO;AAAA,EAElC,CAAC;AACD,MAAIwgB,IAAUT,EAAc;AAAA,IAC1B,YAAAlB;AAAA,IACA,UAAA3d;AAAA,IACA,SAAAlB;AAAA,EACJ,CAAG;AAED,MAAI2b,IAAY;AACd,QAAIkE,IAAaP,GAActf,CAAO;AACtC,WAAoB6c,gBAAAA,EAAM,cAAc4D,IAAU;AAAA,MAChD,KAAKZ;AAAA,IACX,GAAOW,CAAO;AAAA,EACZ;AAEA,SAAOA;AACT,GAEIE,KAA+B7D,gBAAAA,EAAM,KAAK3iB,IAAS,CAACK,GAAM0H,MACrD1H,EAAK,YAAY0H,EAAK,WAAW1H,EAAK,kBAAkB0H,EAAK,iBAAiB1H,EAAK,eAAe0H,EAAK,cAAckd,GAA0B5kB,EAAK,aAAa0H,EAAK,WAAW,MAAM1H,EAAK,cAAc0H,EAAK,aAAa,CAAC,CAAC1H,EAAK,aAAa,CAAC,CAAC0H,EAAK,aAAazI,EAAM,OAAOe,EAAK,WAAW0H,EAAK,SAAS,EACvT,GAKG+d,KAAiB,CAAAngB,MAAS;AAC5B,MAAI;AAAA,IACF,YAAAgf;AAAA,IACA,UAAA3d;AAAA,IACA,SAAAlB;AAAA,EACJ,IAAMH,GACA3H,IAASykB,GAAc,GACvB4D,IAAMroB,EAAO,SAAS8H,CAAO,IAAI,SAAS;AAC9C,SAAoB6c,gBAAAA,EAAM,cAAc0D,GAAK,OAAO,OAAO,CAAA,GAAI1B,GAAY;AAAA,IACzE,OAAO;AAAA,MACL,UAAU;AAAA,IAChB;AAAA,EACA,CAAG,GAAG3d,CAAQ;AACd,GAMIyf,KAA6B,gBAAAC,GAAc,IAAI,GAK/CjE,KAAiB,MAAM;AACzB,MAAIzkB,IAAS2oB,GAAWF,EAAa;AAErC,MAAI,CAACzoB;AACH,UAAM,IAAI,MAAM,gFAAgF;AAGlG,SAAOA;AACT,GAMI4oB,KAA+B,gBAAAF,GAAc,MAAM,EAAE,GAKrDG,KAAc,MACTF,GAAWC,EAAe,GAO/BE,KAA+B,gBAAAJ,GAAc,EAAK,GAalDR,KAAc,CAAAvgB,MAAS;AACzB,MAAI;AAAA,IACF,aAAAsJ;AAAA,IACA,MAAApP;AAAA,IACA,eAAAgmB;AAAA,IACA,mBAAAzB;AAAA,IACA,YAAAC;AAAA,IACA,WAAAhlB;AAAA,EACJ,IAAMsG;AACJ,EAAAkhB,GAAW;AA2CX,WA1CI7oB,IAASykB,GAAc,GACvB3jB,IAAO4jB,EAAY,SAAS1kB,GAAQ6B,CAAI,GACxCmH,IAAW,CAAA,GACX+f,IAAcC,EAAU,UAAUnnB,CAAI,KAAK,CAAC7B,EAAO,SAAS6B,CAAI,KAAK1B,EAAO,WAAWH,GAAQ6B,CAAI,GAEnGgW,IAAQ,SAAevc,GAAG;AAC5B,QAAIgB,IAAIwE,EAAK,OAAOxF,CAAC,GACjBF,IAAIyG,EAAK,SAASvG,CAAC,GACnBuD,IAAM6lB,EAAY,QAAQ1kB,GAAQ5E,CAAC,GACnCsN,IAAQvI,EAAO,MAAMH,GAAQ1D,CAAC,GAC9B2sB,IAAM5nB,KAAaC,EAAM,aAAaoH,GAAOrH,CAAS,GACtD6nB,IAAKjY,EAAY,OAAO,CAAAE,MAAO7P,EAAM,aAAa6P,GAAKzI,CAAK,CAAC;AAEjE,IAAIsgB,EAAU,UAAU5tB,CAAC,IACvB4N,EAAS,KAAmB2b,gBAAAA,EAAM,cAAcmE,GAAgB,UAAU;AAAA,MACxE,KAAK,YAAY,OAAOjqB,EAAI,EAAE;AAAA,MAC9B,OAAO,CAAC,CAACoqB;AAAA,IACjB,GAAsBtE,gBAAAA,EAAM,cAAc6D,IAAiB;AAAA,MACnD,aAAaU;AAAA,MACb,SAAS9tB;AAAA,MACT,KAAKyD,EAAI;AAAA,MACT,eAAegpB;AAAA,MACf,mBAAmBzB;AAAA,MACnB,YAAYC;AAAA,MACZ,WAAW4C;AAAA,IACnB,CAAO,CAAC,CAAC,IAEHjgB,EAAS,KAAmB2b,gBAAAA,EAAM,cAAciD,IAAc;AAAA,MAC5D,aAAasB;AAAA,MACb,KAAKrqB,EAAI;AAAA,MACT,QAAQkqB,KAAeztB,MAAMuG,EAAK,SAAS,SAAS;AAAA,MACpD,QAAQA;AAAA,MACR,mBAAmBukB;AAAA,MACnB,YAAYC;AAAA,MACZ,MAAMjrB;AAAA,IACd,CAAO,CAAC,GAGJ+pB,GAAc,IAAI/pB,GAAGE,CAAC,GACtB8pB,GAAe,IAAIhqB,GAAGyG,CAAI;AAAA,EAC5B,GAESvG,IAAI,GAAGA,IAAIuG,EAAK,SAAS,QAAQvG;AACxC,IAAAuc,EAAMvc,CAAC;AAGT,SAAO0N;AACT,GAMImgB,KAAU;AAAA,EACZ,MAAM;AAAA,EACN,SAAS,CAAC,QAAQ,QAAQ,SAAS,MAAM,aAAa,OAAO;AAAA,EAC7D,cAAc;AAAA,EACd,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AACR,GACIC,KAAgB;AAAA,EAClB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,gBAAgB,CAAC,kBAAkB,QAAQ;AAAA,EAC3C,eAAe,CAAC,eAAe,QAAQ;AAAA,EACvC,oBAAoB;AAAA,EACpB,mBAAmB,CAAC,qBAAqB,QAAQ;AAAA,EACjD,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,oBAAoB;AACtB,GACIC,KAAkB;AAAA,EACpB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,MAAM,CAAC,UAAU,cAAc;AACjC,GAKIC,IAAS,CAAAzqB,MAAO;AAClB,MAAI0qB,IAAUJ,GAAQtqB,CAAG,GACrB2qB,IAAQJ,GAAcvqB,CAAG,GACzB4qB,IAAUJ,GAAgBxqB,CAAG,GAC7B6qB,IAAYH,KAAWhH,GAAAA,YAAYgH,CAAO,GAC1CI,IAAUH,KAASjH,GAAAA,YAAYiH,CAAK,GACpCI,IAAYH,KAAWlH,GAAAA,YAAYkH,CAAO;AAC9C,SAAO,CAAAzH,MACD,GAAA0H,KAAaA,EAAU1H,CAAK,KAC5BwB,MAAYmG,KAAWA,EAAQ3H,CAAK,KACpC,CAACwB,MAAYoG,KAAaA,EAAU5H,CAAK;AAGjD,GAMI6H,KAAU;AAAA,EACZ,QAAQ,gBAAAP,EAAO,MAAM;AAAA,EACrB,WAAW,gBAAAA,EAAO,SAAS;AAAA,EAC3B,gBAAgB,gBAAAA,EAAO,cAAc;AAAA,EACrC,eAAe,gBAAAA,EAAO,aAAa;AAAA,EACnC,kBAAkB,gBAAAA,EAAO,gBAAgB;AAAA,EACzC,iBAAiB,gBAAAA,EAAO,eAAe;AAAA,EACvC,sBAAsB,gBAAAA,EAAO,oBAAoB;AAAA,EACjD,qBAAqB,gBAAAA,EAAO,mBAAmB;AAAA,EAC/C,sBAAsB,gBAAAA,EAAO,oBAAoB;AAAA,EACjD,qBAAqB,gBAAAA,EAAO,mBAAmB;AAAA,EAC/C,kBAAkB,gBAAAA,EAAO,gBAAgB;AAAA,EACzC,iBAAiB,gBAAAA,EAAO,eAAe;AAAA,EACvC,sBAAsB,gBAAAA,EAAO,oBAAoB;AAAA,EACjD,qBAAqB,gBAAAA,EAAO,mBAAmB;AAAA,EAC/C,UAAU,gBAAAA,EAAO,QAAQ;AAAA,EACzB,oBAAoB,gBAAAA,EAAO,kBAAkB;AAAA,EAC7C,mBAAmB,gBAAAA,EAAO,iBAAiB;AAAA,EAC3C,oBAAoB,gBAAAA,EAAO,kBAAkB;AAAA,EAC7C,mBAAmB,gBAAAA,EAAO,iBAAiB;AAAA,EAC3C,QAAQ,gBAAAA,EAAO,MAAM;AAAA,EACrB,cAAc,gBAAAA,EAAO,YAAY;AAAA,EACjC,sBAAsB,gBAAAA,EAAO,oBAAoB;AAAA,EACjD,QAAQ,gBAAAA,EAAO,MAAM;AACvB,GAMIQ,KAA+B,gBAAApB,GAAc,EAAK,GAKlDV,KAAc,MACTW,GAAWmB,EAAe,GAQ/BC,KAA4B,gBAAArB,GAAc,IAAI,GAK9CsB,KAAW,MAAM;AACnB,MAAIC,IAAUtB,GAAWoB,EAAY;AAErC,MAAI,CAACE;AACH,UAAM,IAAI,MAAM,0EAA0E;AAG5F,MAAI,CAACjqB,CAAM,IAAIiqB;AACf,SAAOjqB;AACT,GASIkqB,KAAiB,CAAAprB,MACZA,KAASA,EAAM,iBAAiBA,EAAM,cAAc,eAAe,MAMxEqrB,KAAe,CAAArrB,MACVsrB,GAAUtrB,CAAK,KAAKA,EAAM,aAAa,GAM5CurB,KAAe,CAAAvrB,MACVsrB,GAAUtrB,CAAK,KAAKA,EAAM,aAAa,GAM5CsrB,KAAY,CAAAtrB,MAAS;AACvB,MAAIwrB,IAASJ,GAAeprB,CAAK;AACjC,SAAO,CAAC,CAACwrB,KAAUxrB,aAAiBwrB,EAAO;AAC7C,GAKIC,KAAiB,CAAAzrB,MAAS;AAC5B,MAAIwrB,IAASxrB,KAASA,EAAM,cAAcorB,GAAeprB,EAAM,UAAU;AACzE,SAAO,CAAC,CAACwrB,KAAUxrB,aAAiBwrB,EAAO;AAC7C,GAKIE,KAAY,CAAA1rB,MACPsrB,GAAUtrB,CAAK,KAAKA,EAAM,aAAa,GAM5C2rB,KAAuB,CAAAzI,MAClBA,EAAM,iBAAiBA,EAAM,cAAc,QAAQ,YAAY,MAAM,MAAMA,EAAM,cAAc,MAAM,WAAW,GAMrH0I,KAAoB,CAAAC,MAAY;AAClC,MAAI,CAAC9oB,GAAM2N,CAAM,IAAImb;AAGrB,MAAIN,GAAaxoB,CAAI,KAAKA,EAAK,WAAW,QAAQ;AAChD,QAAIS,IAASkN,MAAW3N,EAAK,WAAW,QACpCgL,IAAQvK,IAASkN,IAAS,IAAIA;AAMlC,SALA,CAAC3N,GAAMgL,CAAK,IAAI+d,GAAyB/oB,GAAMgL,GAAOvK,IAAS,aAAa,SAAS,GAErFA,IAASuK,IAAQ2C,GAGV6a,GAAaxoB,CAAI,KAAKA,EAAK,WAAW,UAAQ;AACnD,UAAIvG,IAAIgH,IAAST,EAAK,WAAW,SAAS,IAAI;AAC9C,MAAAA,IAAOgpB,GAAiBhpB,GAAMvG,GAAGgH,IAAS,aAAa,SAAS;AAAA,IAClE;AAGA,IAAAkN,IAASlN,KAAUT,EAAK,eAAe,OAAOA,EAAK,YAAY,SAAS;AAAA,EAC1E;AAGA,SAAO,CAACA,GAAM2N,CAAM;AACtB,GAKIsb,KAAgB,MACX,CAAC,EAAE,OAAO,SAAS,iBAAiB,OAAO,SAAS,cAAc,aAOvEF,KAA2B,CAAC9gB,GAAQ+C,GAAOnL,MAAc;AAU3D,WATI;AAAA,IACF,YAAAqpB;AAAA,EACJ,IAAMjhB,GACA7H,IAAQ8oB,EAAWle,CAAK,GACxBvR,IAAIuR,GACJme,IAAe,IACfC,IAAgB,KAGbd,GAAaloB,CAAK,KAAKooB,GAAapoB,CAAK,KAAKA,EAAM,WAAW,WAAW,KAAKooB,GAAapoB,CAAK,KAAKA,EAAM,aAAa,iBAAiB,MAAM,YACjJ,EAAA+oB,KAAgBC,MAD0I;AAK9J,QAAI3vB,KAAKyvB,EAAW,QAAQ;AAC1B,MAAAC,IAAe,IACf1vB,IAAIuR,IAAQ,GACZnL,IAAY;AACZ;AAAA,IACF;AAEA,QAAIpG,IAAI,GAAG;AACT,MAAA2vB,IAAgB,IAChB3vB,IAAIuR,IAAQ,GACZnL,IAAY;AACZ;AAAA,IACF;AAEA,IAAAO,IAAQ8oB,EAAWzvB,CAAC,GACpBuR,IAAQvR,GACRA,KAAKoG,MAAc,YAAY,IAAI;AAAA,EACrC;AAEA,SAAO,CAACO,GAAO4K,CAAK;AACtB,GAMIge,KAAmB,CAAC/gB,GAAQ+C,GAAOnL,MAAc;AACnD,MAAI,CAACO,CAAK,IAAI2oB,GAAyB9gB,GAAQ+C,GAAOnL,CAAS;AAC/D,SAAOO;AACT,GAQIipB,KAAe,CAAAC,MAAW;AAC5B,MAAIrpB,IAAO;AAEX,MAAI0oB,GAAUW,CAAO,KAAKA,EAAQ;AAChC,WAAOA,EAAQ;AAGjB,MAAId,GAAac,CAAO,GAAG;AACzB,aAASC,KAAa,MAAM,KAAKD,EAAQ,UAAU;AACjD,MAAArpB,KAAQopB,GAAaE,CAAS;AAGhC,QAAIC,IAAU,iBAAiBF,CAAO,EAAE,iBAAiB,SAAS;AAElE,KAAIE,MAAY,WAAWA,MAAY,UAAUF,EAAQ,YAAY,UACnErpB,KAAQ;AAAA;AAAA,EAEZ;AAEA,SAAOA;AACT,GAKIwpB,KAAqB,gCACrBC,KAA4B,CAAAC,MAAgB;AAC9C,MAAIC,IAAWD,EAAa,QAAQ,WAAW,GAC3C,CAAA,EAAG5pB,CAAQ,IAAI6pB,EAAS,MAAMH,EAAkB,KAAK,CAAA;AACzD,SAAO1pB;AACT,GAMI8pB,KAAmB,CAAAF,MAAgB;AACrC,MAAI,CAACA,EAAa,QAAQ,8BAA8B,GAAG;AACzD,QAAI5pB,IAAW2pB,GAA0BC,CAAY;AAErD,QAAI5pB,GAAU;AACZ,UAAI+pB,IAAgB,IAAI,aAAY;AACpC,aAAAH,EAAa,MAAM,QAAQ,CAAAtmB,MAAQ;AACjC,QAAAymB,EAAc,QAAQzmB,GAAMsmB,EAAa,QAAQtmB,CAAI,CAAC;AAAA,MACxD,CAAC,GACDymB,EAAc,QAAQ,gCAAgC/pB,CAAQ,GACvD+pB;AAAA,IACT;AAAA,EACF;AAEA,SAAOH;AACT,GAEI/b,KAAc,CAAC,aAAa,YAAY,oBAAoB,eAAe,YAAY,iBAAiB,cAAc,qBAAqB,2BAA2B,SAAS,IAAI;AAEvL,SAAS4I,GAAU9Y,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAE1V,SAAS6Y,GAAgBzY,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAK+c,GAAU,OAAOvY,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAE,MAAAF,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAYuY,GAAU,OAAOvY,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAE3hB,IAAI+rB,KAAW,CAAAjkB,MAAsBgd,gBAAAA,EAAM,cAAcA,EAAM,UAAU,MAAMuD,GAAYvgB,CAAK,CAAC,GAM7FkkB,KAAa,CAAAlkB,MAAS;AACxB,MAAI;AAAA,IACF,WAAAmkB;AAAA,IACA,UAAAC,IAAWC;AAAA,IACX,kBAAkBC;AAAA,IAClB,aAAAC;AAAA,IACA,UAAAnE,IAAW;AAAA,IACX,eAAAF;AAAA,IACA,YAAAxB;AAAA,IACA,mBAAAD,IAAoB,CAAAze,MAAsBgd,gBAAAA,EAAM,cAAcwH,IAAoB,OAAO,OAAO,IAAIxkB,CAAK,CAAC;AAAA,IAC1G,yBAAAykB,IAA0BC;AAAA,IAC1B,OAAAC,IAAQ,CAAA;AAAA,IACR,IAAIC,IAAY;AAAA,EACpB,IAAM5kB,GACAgf,IAAaziB,GAAyByD,GAAO8H,EAAW,GAExDzP,IAASgqB,MAET,CAACwC,GAAaC,CAAc,IAAIjF,GAAS,EAAK,GAC9CtnB,IAAM6kB,GAAO,IAAI,GACjB2H,IAAqB3H,GAAO,CAAA,CAAE;AAElC,EAAAY,GAAa,IAAI3lB,GAAQ+nB,CAAQ;AAEjC,MAAIN,IAAQkF,GAAQ,OAAO;AAAA,IACzB,aAAa;AAAA,IACb,6BAA6B;AAAA,IAC7B,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,IACrB,eAAe;AAAA,EACnB,IAAM,CAAA,CAAE;AAEN,EAAAtI,GAA0B,MAAM;AAE9B,QAAIiG;AAEJ,IAAIpqB,EAAI,YAAYoqB,IAASJ,GAAehqB,EAAI,OAAO,MACrDmlB,GAAiB,IAAIrlB,GAAQsqB,CAAM,GACnChF,GAAkB,IAAItlB,GAAQE,EAAI,OAAO,GACzCslB,GAAgB,IAAIxlB,GAAQE,EAAI,OAAO,GACvCqlB,GAAgB,IAAIrlB,EAAI,SAASF,CAAM,KAEvCwlB,GAAgB,OAAOxlB,CAAM;AAI/B,QAAI;AAAA,MACF,WAAAqB;AAAA,IACN,IAAQrB,GACA4M,IAAO8X,EAAY,yBAAyB1kB,CAAM,GAClD4sB,IAAehgB,EAAK,aAAY;AAEpC,QAAI,EAAA6a,EAAM,eAAe,CAACmF,KAAgB,CAAClI,EAAY,UAAU1kB,CAAM,IAIvE;AAAA,UAAI6sB,IAAkBD,EAAa,SAAS;AAE5C,UAAI,GAACvrB,KAAa,CAACwrB,IAKnB;AAAA,YAAIC,IAAgBxH,GAAkB,IAAItlB,CAAM,GAC5C+sB,IAA0B;AAO9B,YALID,EAAc,SAASF,EAAa,UAAU,KAAKE,EAAc,SAASF,EAAa,SAAS,MAClGG,IAA0B,KAIxBF,KAAmBE,KAA2B1rB,GAAW;AAC3D,cAAI2rB,IAAatI,EAAY,aAAa1kB,GAAQ4sB,GAAc;AAAA,YAC9D,YAAY;AAAA;AAAA;AAAA,YAGZ,eAAe;AAAA,UACvB,CAAO;AAED,cAAII,KAAc1rB,EAAM,OAAO0rB,GAAY3rB,CAAS;AAClD;AAAA,QAEJ;AAMA,YAAIA,KAAa,CAACqjB,EAAY,SAAS1kB,GAAQqB,CAAS,GAAG;AACzD,UAAArB,EAAO,YAAY0kB,EAAY,aAAa1kB,GAAQ4sB,GAAc;AAAA,YAChE,YAAY;AAAA,YACZ,eAAe;AAAA,UACvB,CAAO;AACD;AAAA,QACF;AAGA,QAAAnF,EAAM,sBAAsB;AAC5B,YAAIwF,IAAc5rB,KAAaqjB,EAAY,WAAW1kB,GAAQqB,CAAS;AAEvE,QAAI4rB,KACE3rB,EAAM,WAAWD,CAAS,IAC5BurB,EAAa,iBAAiBK,EAAY,cAAcA,EAAY,WAAWA,EAAY,gBAAgBA,EAAY,WAAW,IAElIL,EAAa,iBAAiBK,EAAY,gBAAgBA,EAAY,aAAaA,EAAY,cAAcA,EAAY,SAAS,GAGpIb,EAAwBpsB,GAAQitB,CAAW,KAE3CL,EAAa,gBAAe,GAG9B,WAAW,MAAM;AAGf,cAAIK,KAAevJ,IAAY;AAC7B,gBAAIxC,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM;AAC7C,YAAAkhB,EAAG,MAAK;AAAA,UACV;AAEA,UAAAuG,EAAM,sBAAsB;AAAA,QAC9B,CAAC;AAAA;AAAA;AAAA,EACH,CAAC,GAGDlD,GAAU,MAAM;AACd,IAAIrkB,EAAI,WAAW4rB,KACjB5rB,EAAI,QAAQ,MAAK;AAAA,EAErB,GAAG,CAAC4rB,CAAS,CAAC;AAMd,MAAIoB,IAAuBC,EAAY/M,GAAS,MAAM;AACpD,QAAI,CAACqH,EAAM,eAAe,CAACA,EAAM,uBAAuB,CAACA,EAAM,sBAAsB;AACnF,UAAI7a,IAAO8X,EAAY,yBAAyB1kB,CAAM,GAClD;AAAA,QACF,eAAAotB;AAAA,MACR,IAAUxgB,GACAsU,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM,GACzC4sB,IAAehgB,EAAK,aAAY;AASpC,UAPIwgB,MAAkBlM,KACpBuG,EAAM,gBAAgB2F,GACtBxH,GAAW,IAAI5lB,GAAQ,EAAI,KAE3B4lB,GAAW,OAAO5lB,CAAM,GAGtB,CAAC4sB;AACH,eAAOxrB,EAAW,SAASpB,CAAM;AAGnC,UAAI;AAAA,QACF,YAAAqtB;AAAA,QACA,WAAAC;AAAA,MACR,IAAUV,GACAW,IAAuBC,EAAkBxtB,GAAQqtB,CAAU,KAAKI,GAA8BztB,GAAQqtB,CAAU,GAChHK,IAAsBF,EAAkBxtB,GAAQstB,CAAS,KAAKG,GAA8BztB,GAAQstB,CAAS;AAEjH,UAAIC,KAAwBG,GAAqB;AAC/C,YAAIhlB,IAAQgc,EAAY,aAAa1kB,GAAQ4sB,GAAc;AAAA,UACzD,YAAY;AAAA,UACZ,eAAe;AAAA,QACzB,CAAS;AACD,QAAAxrB,EAAW,OAAOpB,GAAQ0I,CAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,GAAG,GAAG,CAACqf,CAAQ,CAAC,GACf4F,IAA+BhB,GAAQ,MAAMpO,GAAS2O,GAAsB,CAAC,GAAG,CAACA,CAAoB,CAAC,GAKtGU,IAAmBT,EAAY,CAAAnL,MAAS;AAC1C,QAAI,CAAC+F,KAAYyF,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAAC6L,GAAkB7L,GAAOiK,CAAqB,GAAG;AAI5G,MAAA0B,EAA6B,MAAK,GAClCT,EAAqB,MAAK;AAC1B,UAAI;AAAA,QACF,WAAA7rB;AAAA,MACR,IAAUrB,GACA;AAAA,QACF,WAAWkF;AAAA,MACnB,IAAU8c,GACA8L,IAAO9L,EAAM,gBAAgBA,EAAM,QAAQ;AAG/C,UAAI9c,MAAS,2BAA2BA,MAAS;AAC/C;AAGF,UAAI6oB,IAAS;AAEb,UAAI7oB,MAAS,gBAAgB7D,KAAaC,EAAM,YAAYD,CAAS;AAAA;AAAA;AAAA,MAGrE2gB,EAAM,QAAQA,EAAM,KAAK,WAAW,KAAK,UAAU,KAAKA,EAAM,IAAI;AAAA;AAAA;AAAA,MAGlE3gB,EAAU,OAAO,WAAW,GAAG;AAC7B,QAAA0sB,IAAS,IAGL/tB,EAAO,UACT+tB,IAAS;AAKX,YAAI;AAAA,UACF,QAAAvlB;AAAA,QACV,IAAYnH,GACA2sB,IAAS7tB,EAAO,MAAMH,GAAQ;AAAA,UAChC,IAAIwI;AAAA,UACJ,OAAO,CAAApN,OAAK+E,EAAO,SAASH,GAAQ5E,EAAC;AAAA,UACrC,MAAM;AAAA,QAChB,CAAS;AAED,YAAI4yB,GAAQ;AACV,cAAI,CAAA,EAAG1T,CAAU,IAAI0T;AAErB,UAAI7tB,EAAO,MAAMH,GAAQqB,EAAU,QAAQiZ,CAAU,MACnDyT,IAAS;AAAA,QAEb;AAAA,MACF;AASA,UAPKA,KACH/L,EAAM,eAAc,GAMlB,CAAC9c,EAAK,WAAW,QAAQ,KAAKA,EAAK,WAAW,UAAU,GAAG;AAC7D,YAAI,CAAC+oB,CAAW,IAAIjM,EAAM,gBAAe;AAEzC,YAAIiM,GAAa;AACf,cAAIvlB,IAAQgc,EAAY,aAAa1kB,GAAQiuB,GAAa;AAAA,YACxD,YAAY;AAAA,YACZ,eAAe;AAAA,UAC3B,CAAW;AAED,WAAI,CAAC5sB,KAAa,CAACC,EAAM,OAAOD,GAAWqH,CAAK,MAC9CtH,EAAW,OAAOpB,GAAQ0I,CAAK;AAAA,QAEnC;AAAA,MACF;AAIA,UAAIrH,KAAaC,EAAM,WAAWD,CAAS,KAAK6D,EAAK,WAAW,QAAQ,GAAG;AACzE,YAAIxD,KAAYwD,EAAK,SAAS,UAAU,IAAI,aAAa;AACzD,QAAA/E,EAAO,eAAeH,GAAQ;AAAA,UAC5B,WAAA0B;AAAA,QACV,CAAS;AACD;AAAA,MACF;AAEA,cAAQwD,GAAI;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,gBACH;AACE,UAAA/E,EAAO,eAAeH,CAAM;AAC5B;AAAA,QACF;AAAA,QAEF,KAAK;AAAA,QACL,KAAK,wBACH;AACE,UAAAG,EAAO,cAAcH,CAAM;AAC3B;AAAA,QACF;AAAA,QAEF,KAAK,yBACH;AACE,UAAAG,EAAO,eAAeH,CAAM;AAC5B;AAAA,QACF;AAAA,QAEF,KAAK,wBACH;AACE,UAAAG,EAAO,eAAeH,GAAQ;AAAA,YAC5B,MAAM;AAAA,UACpB,CAAa,GACDG,EAAO,cAAcH,GAAQ;AAAA,YAC3B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK,0BACH;AACE,UAAAG,EAAO,eAAeH,GAAQ;AAAA,YAC5B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK,0BACH;AACE,UAAAG,EAAO,eAAeH,GAAQ;AAAA,YAC5B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK,yBACH;AACE,UAAAG,EAAO,cAAcH,GAAQ;AAAA,YAC3B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK,yBACH;AACE,UAAAG,EAAO,cAAcH,GAAQ;AAAA,YAC3B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK,sBACH;AACE,UAAAG,EAAO,eAAeH,GAAQ;AAAA,YAC5B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK,qBACH;AACE,UAAAG,EAAO,cAAcH,GAAQ;AAAA,YAC3B,MAAM;AAAA,UACpB,CAAa;AACD;AAAA,QACF;AAAA,QAEF,KAAK;AAAA,QACL,KAAK,mBACH;AACE,UAAAG,EAAO,YAAYH,CAAM;AACzB;AAAA,QACF;AAAA,QAEF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,cACH;AACE,cAAI;AAAA,YACF,WAAWkuB;AAAA,UACzB,IAAgBluB;AAEJ,UAAIkuB,KACE5sB,EAAM,WAAW4sB,CAAU,KAC7B/tB,EAAO,eAAeH,CAAM,GAI5BkF,MAAS,4BAMXuiB,EAAM,eAAegF,EAAe,EAAK,GACzChF,EAAM,cAAc,KAM2BqG,GAAK,YAAY,SAAU,iBAC1EpJ,EAAY,WAAW1kB,GAAQ8tB,CAAI,IAC1B,OAAOA,KAAS,aAGrBC,IACFrB,EAAmB,QAAQ,KAAK,MAAMvsB,EAAO,WAAWH,GAAQ8tB,CAAI,CAAC,IAErE3tB,EAAO,WAAWH,GAAQ8tB,CAAI;AAIlC;AAAA,QACF;AAAA,MACV;AAAA,IACI;AAAA,EACF,GAAG,CAAC/F,GAAUkE,CAAqB,CAAC;AAKpC,EAAA5H,GAA0B,OACpBnkB,EAAI,WAAWkkB,MAEjBlkB,EAAI,QAAQ,iBAAiB,eAAe0tB,CAAgB,GAGvD,MAAM;AACX,IAAI1tB,EAAI,WAAWkkB,MAEjBlkB,EAAI,QAAQ,oBAAoB,eAAe0tB,CAAgB;AAAA,EAEnE,IACC,CAACA,CAAgB,CAAC,GAMrBvJ,GAA0B,MAAM;AAC9B,QAAIiG,IAAS5F,EAAY,UAAU1kB,CAAM;AACzC,WAAAsqB,EAAO,SAAS,iBAAiB,mBAAmBqD,CAA4B,GACzE,MAAM;AACX,MAAArD,EAAO,SAAS,oBAAoB,mBAAmBqD,CAA4B;AAAA,IACrF;AAAA,EACF,GAAG,CAACA,CAA4B,CAAC;AACjC,MAAI1c,IAAc,CAAC,GAAGtP,EAAK,MAAM3B,CAAM,CAAC,EAAE,QAAQ,CAAAK,MAAQ;AACxD,QAAI,CAACjF,GAAGkB,CAAC,IAAI+D;AACb,WAAO0rB,EAAS,CAAC3wB,GAAGkB,CAAC,CAAC;AAAA,EACxB,CAAC;AAED,MAAI4vB,KAAelsB,EAAO,SAAS,WAAW,KAAK,MAAM,KAAK2B,EAAK,MAAM3B,CAAM,CAAC,EAAE,WAAW,KAAK2B,EAAK,OAAO3B,CAAM,MAAM,MAAM,CAACwsB,GAAa;AAC5I,QAAIrjB,IAAQhJ,EAAO,MAAMH,GAAQ,CAAA,CAAE;AACnC,IAAAiR,EAAY,KAAK;AAAA,MACf,CAACiV,EAAkB,GAAG;AAAA,MACtB,aAAAgG;AAAA,MACA,QAAQ/iB;AAAA,MACR,OAAOA;AAAA,IACb,CAAK;AAAA,EACH;AAEA,SAAoBwb,gBAAAA,EAAM,cAAcmF,GAAgB,UAAU;AAAA,IAChE,OAAO/B;AAAA,EACX,GAAkBpD,gBAAAA,EAAM,cAAciE,GAAgB,UAAU;AAAA,IAC5D,OAAOmD;AAAA,EACX,GAAkBpH,gBAAAA,EAAM,cAAc4H,GAAW,OAAO,OAAO;AAAA,IAC3D,MAAMxE,IAAW,SAAY;AAAA,EACjC,GAAKpB,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMb,YAAYvC,MAA4B,CAACD,KAAcwC,EAAW,aAAa;AAAA,IAC/E,aAAavC,MAA4B,CAACD,KAAcwC,EAAW,cAAc;AAAA,IACjF,gBAAgBvC,MAA4B,CAACD,KAAcwC,EAAW,iBAAiB;AAAA,IACvF,qBAAqB;AAAA,IACrB,mBAAmB;AAAA;AAAA,IAEnB,iBAAiB,CAACoB;AAAA;AAAA;AAAA;AAAA,IAIlB,QAAQ;AAAA,IACR,gCAAgC;AAAA,IAChC,KAAK7nB;AAAA,IACL,OAAOoY,GAAgB;AAAA;AAAA,MAErB,UAAU;AAAA;AAAA,MAEV,SAAS;AAAA;AAAA,MAET,YAAY;AAAA;AAAA,MAEZ,UAAU;AAAA,IAChB,GAAOgU,CAAK;AAAA,IACR,eAAea,EAAY,CAAAnL,MAAS;AAIlC,UAAI,CAACoC,MAA4B,CAAC2D,KAAY,CAACoG,EAAenM,GAAO2E,EAAW,aAAa,KAAK6G,EAAkBxtB,GAAQgiB,EAAM,MAAM,MACtIA,EAAM,eAAc,GAEhB,CAACyF,EAAM,cAAa;AACtB,YAAI3lB,IAAOkgB,EAAM;AACjB,QAAA7hB,EAAO,WAAWH,GAAQ8B,CAAI;AAAA,MAChC;AAAA,IAEJ,GAAG,CAACimB,CAAQ,CAAC;AAAA,IACb,SAASoF,EAAY,CAAAnL,MAAS;AAK5B,eAAS/hB,KAAMysB,EAAmB;AAChC,QAAAzsB,EAAE;AAGJ,MAAAysB,EAAmB,UAAU,CAAA;AAAA,IAC/B,GAAG,CAAA,CAAE;AAAA,IACL,QAAQS,EAAY,CAAAnL,MAAS;AAC3B,UAAI,EAAA+F,KAAYN,EAAM,uBAAuB,CAAC+F,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAKmM,EAAenM,GAAO2E,EAAW,MAAM,IAQhI;AAAA,YAAI/Z,IAAO8X,EAAY,yBAAyB1kB,CAAM;AAEtD,YAAIynB,EAAM,kBAAkB7a,EAAK,eAIjC;AAAA,cAAI;AAAA,YACF,eAAAwhB;AAAA,UACR,IAAUpM,GACAd,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM;AAI7C,cAAIouB,MAAkBlN,KAMlB,EAAAmJ,GAAa+D,CAAa,KAAKA,EAAc,aAAa,mBAAmB,IAOjF;AAAA,gBAAIA,KAAiB,QAAQhE,GAAUgE,CAAa,KAAK1J,EAAY,WAAW1kB,GAAQouB,CAAa,GAAG;AACtG,kBAAIvsB,IAAO6iB,EAAY,YAAY1kB,GAAQouB,CAAa;AAExD,kBAAIpF,EAAU,UAAUnnB,CAAI,KAAK,CAAC7B,EAAO,OAAO6B,CAAI;AAClD;AAAA,YAEJ;AAKA,gBAAI8hB,IAAW;AACb,kBAAIiJ,IAAehgB,EAAK,aAAY;AACpC,cAA4DggB,GAAa,gBAAe;AAAA,YAC1F;AAEA,YAAAhH,GAAW,OAAO5lB,CAAM;AAAA;AAAA;AAAA;AAAA,IAC1B,GAAG,CAAC+nB,GAAUpB,EAAW,MAAM,CAAC;AAAA,IAChC,SAASwG,EAAY,CAAAnL,MAAS;AAC5B,UAAI,CAAC+F,KAAYsG,GAAUruB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,OAAO,KAAKyD,GAAUpI,EAAM,MAAM,GAAG;AACzH,YAAIngB,IAAO6iB,EAAY,YAAY1kB,GAAQgiB,EAAM,MAAM,GACnDlhB,IAAO4jB,EAAY,SAAS1kB,GAAQ6B,CAAI;AAK5C,YAAI1B,EAAO,QAAQH,GAAQc,CAAI,GAAG;AAChC,cAAIwtB,IAAa3sB,EAAK,IAAI3B,GAAQc,CAAI;AAEtC,cAAIwtB,MAAezsB,GAAM;AACvB,gBAAI0sB,IAASpuB,EAAO,MAAMH,GAAQc,CAAI,GAElCuF,IAAMlG,EAAO,IAAIH,GAAQc,CAAI,GAC7BoY,IAAY/Y,EAAO,KAAKH,GAAQ;AAAA,cAClC,IAAIuuB;AAAA,YAClB,CAAa,GACGpV,IAAUhZ,EAAO,KAAKH,GAAQ;AAAA,cAChC,IAAIqG;AAAA,YAClB,CAAa;AAED,gBAAI6S,KAAaC,KAAWpY,EAAK,OAAOmY,EAAU,CAAC,GAAGC,EAAQ,CAAC,CAAC,GAAG;AACjE,kBAAIzQ,IAAQvI,EAAO,MAAMH,GAAQuuB,CAAM;AACvC,cAAAntB,EAAW,OAAOpB,GAAQ0I,CAAK;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG,CAACqf,GAAUpB,EAAW,OAAO,CAAC;AAAA,IACjC,kBAAkBwG,EAAY,CAAAnL,MAAS;AACrC,UAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,gBAAgB,MAC/Fc,EAAM,eAAegF,EAAe,EAAK,GACzChF,EAAM,cAAc,IAKhB,CAAC9D,MAAa,CAACI,MAAqB,CAACR,MAAU,CAACS,MAAgB,CAACE,MAAoB,CAACD,MAAgBjC,EAAM,QAC9G7hB,EAAO,WAAWH,GAAQgiB,EAAM,IAAI,GAGlChiB,EAAO,aAAasB,EAAM,YAAYtB,EAAO,SAAS,IAAG;AAC3D,YAAIwuB,IAAWxuB,EAAO,UAAU,OAAO,MACnCyuB,IAAkB9sB,EAAK,KAAK3B,GAAQwuB,CAAQ;AAEhD,QAAI/G,EAAM,gCACRA,EAAM,8BAA8B,IACpCtnB,EAAO,mBAAmBH,GAAQ,MAAM;AAEtC,cAAI8B,IAAO2sB,EAAgB,KAAK,QAAQ,WAAW,EAAE;AACrD,UAAArtB,EAAW,OAAOpB,GAAQ;AAAA,YACxB,UAAUyuB,EAAgB,KAAK;AAAA,YAC/B,SAAS;AAAA,UACzB,CAAe,GACDtuB,EAAO,WAAWH,GAAQ8B,CAAI;AAAA,QAChC,CAAC;AAAA,MAEL;AAAA,IAEJ,GAAG,CAAC6kB,EAAW,gBAAgB,CAAC;AAAA,IAChC,qBAAqBwG,EAAY,CAAAnL,MAAS;AACxC,MAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,mBAAmB,MAClG,CAACc,EAAM,eAAegF,EAAe,EAAI,GACzChF,EAAM,cAAc;AAAA,IAExB,GAAG,CAACd,EAAW,mBAAmB,CAAC;AAAA,IACnC,oBAAoBwG,EAAY,CAAAnL,MAAS;AACvC,UAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,kBAAkB,GAAG;AACpG,YAAI;AAAA,UACF,WAAAtlB;AAAA,UACA,OAAAG;AAAA,QACV,IAAYxB;AAEJ,YAAIqB,GAAW;AACb,cAAIC,EAAM,WAAWD,CAAS,GAAG;AAC/B,YAAAlB,EAAO,eAAeH,CAAM;AAC5B;AAAA,UACF;AAEA,cAAIguB,IAAS7tB,EAAO,MAAMH,GAAQ;AAAA,YAChC,OAAO,CAAA5E,MAAK+E,EAAO,SAASH,GAAQ5E,CAAC;AAAA,YACrC,MAAM;AAAA,UAClB,CAAW;AAED,cAAI4yB,GAAQ;AACV,gBAAI,CAAA,EAAG1T,CAAU,IAAI0T;AAErB,gBAAI7tB,EAAO,MAAMH,GAAQqB,EAAU,QAAQiZ,CAAU,GAAG;AACtD,kBAAIxR,IAAQ3I,EAAO,MAAMH,GAAQsa,CAAU;AAC3C,cAAAlZ,EAAW,aAAapB,GAAQ;AAAA,gBAC9B,QAAQ8I;AAAA,gBACR,OAAOA;AAAA,cACvB,CAAe;AAAA,YACH;AAAA,UACF;AAKA,UAAItH,MACFimB,EAAM,8BAA8B,IACpCrmB,EAAW,YAAYpB,GAAQsY,GAAgB;AAAA,YAC7C,MAAM;AAAA,UACpB,GAAe9W,CAAK,GAAG;AAAA,YACT,QAAQ;AAAA,UACtB,CAAa;AAAA,QAEL;AAAA,MACF;AAAA,IACF,GAAG,CAACmlB,EAAW,kBAAkB,CAAC;AAAA,IAClC,QAAQwG,EAAY,CAAAnL,MAAS;AAC3B,MAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,MAAM,MACrF3E,EAAM,eAAc,GACpB0C,EAAY,gBAAgB1kB,GAAQgiB,EAAM,eAAe,MAAM;AAAA,IAEnE,GAAG,CAAC2E,EAAW,MAAM,CAAC;AAAA,IACtB,OAAOwG,EAAY,CAAAnL,MAAS;AAC1B,UAAI,CAAC+F,KAAYyF,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,KAAK,GAAG;AACpG,QAAA3E,EAAM,eAAc,GACpB0C,EAAY,gBAAgB1kB,GAAQgiB,EAAM,eAAe,KAAK;AAC9D,YAAI;AAAA,UACF,WAAA3gB;AAAA,QACV,IAAYrB;AAEJ,YAAIqB;AACF,cAAIC,EAAM,WAAWD,CAAS;AAC5B,YAAAlB,EAAO,eAAeH,CAAM;AAAA,eACvB;AACL,gBAAI6B,IAAOF,EAAK,OAAO3B,GAAQqB,EAAU,OAAO,IAAI;AAEpD,YAAIlB,EAAO,OAAOH,GAAQ6B,CAAI,KAC5BT,EAAW,OAAOpB,CAAM;AAAA,UAE5B;AAAA,MAEJ;AAAA,IACF,GAAG,CAAC+nB,GAAUpB,EAAW,KAAK,CAAC;AAAA,IAC/B,YAAYwG,EAAY,CAAAnL,MAAS;AAC/B,UAAIqM,GAAUruB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,UAAU,GAAG;AAIpF,YAAI9kB,IAAO6iB,EAAY,YAAY1kB,GAAQgiB,EAAM,MAAM;AAEvD,QAAI7hB,EAAO,OAAOH,GAAQ6B,CAAI,KAC5BmgB,EAAM,eAAc;AAAA,MAExB;AAAA,IACF,GAAG,CAAC2E,EAAW,UAAU,CAAC;AAAA,IAC1B,aAAawG,EAAY,CAAAnL,MAAS;AAChC,UAAI,CAAC+F,KAAYsG,GAAUruB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,WAAW,GAAG;AAClG,YAAI9kB,IAAO6iB,EAAY,YAAY1kB,GAAQgiB,EAAM,MAAM,GACnDlhB,IAAO4jB,EAAY,SAAS1kB,GAAQ6B,CAAI,GACxCqV,IAAY/W,EAAO,OAAOH,GAAQ6B,CAAI,KAAK1B,EAAO,KAAKH,GAAQ;AAAA,UACjE,IAAIc;AAAA,UACJ,OAAO;AAAA,QACjB,CAAS;AAGD,YAAIoW,GAAW;AACb,cAAIxO,IAAQvI,EAAO,MAAMH,GAAQc,CAAI;AACrC,UAAAM,EAAW,OAAOpB,GAAQ0I,CAAK;AAAA,QACjC;AAEA,QAAA+e,EAAM,uBAAuB,IAC7B/C,EAAY,gBAAgB1kB,GAAQgiB,EAAM,cAAc,MAAM;AAAA,MAChE;AAAA,IACF,GAAG,CAAC+F,GAAUpB,EAAW,WAAW,CAAC;AAAA,IACrC,QAAQwG,EAAY,CAAAnL,MAAS;AAC3B,UAAI,CAAC+F,KAAYsG,GAAUruB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,MAAM,GAAG;AAC7F,QAAA3E,EAAM,eAAc;AAEpB,YAAI0M,IAAe1uB,EAAO,WAEtB0I,IAAQgc,EAAY,eAAe1kB,GAAQgiB,CAAK,GAChD8L,IAAO9L,EAAM;AACjB,QAAA5gB,EAAW,OAAOpB,GAAQ0I,CAAK,GAE3B+e,EAAM,wBACJiH,KAAgB,CAACptB,EAAM,OAAOotB,GAAchmB,CAAK,KAAK,CAACvI,EAAO,KAAKH,GAAQ;AAAA,UAC7E,IAAI0I;AAAA,UACJ,OAAO;AAAA,QACnB,CAAW,KACCtH,EAAW,OAAOpB,GAAQ;AAAA,UACxB,IAAI0uB;AAAA,QAClB,CAAa,GAILhK,EAAY,WAAW1kB,GAAQ8tB,CAAI,GAG9BpJ,EAAY,UAAU1kB,CAAM,KAC/B0kB,EAAY,MAAM1kB,CAAM;AAAA,MAE5B;AAEA,MAAAynB,EAAM,uBAAuB;AAAA,IAC/B,GAAG,CAACM,GAAUpB,EAAW,MAAM,CAAC;AAAA,IAChC,WAAWwG,EAAY,CAAAnL,MAAS;AAC9B,MAAI,CAAC+F,KAAYN,EAAM,wBAAwBd,EAAW,aAAa0H,GAAUruB,GAAQgiB,EAAM,MAAM,KACnG2E,EAAW,UAAU3E,CAAK,GAM5ByF,EAAM,uBAAuB;AAAA,IAC/B,GAAG,CAACM,GAAUpB,EAAW,SAAS,CAAC;AAAA,IACnC,SAASwG,EAAY,CAAAnL,MAAS;AAC5B,UAAI,CAAC+F,KAAY,CAACN,EAAM,uBAAuB+F,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,OAAO,GAAG;AACpI,YAAIzF,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM,GACzC4M,IAAO8X,EAAY,yBAAyB1kB,CAAM;AAKtD,YAJAynB,EAAM,gBAAgB7a,EAAK,eAIvB8W,MAAc1B,EAAM,WAAWd,GAAI;AACrC,UAAAA,EAAG,MAAK;AACR;AAAA,QACF;AAEA,QAAA0E,GAAW,IAAI5lB,GAAQ,EAAI;AAAA,MAC7B;AAAA,IACF,GAAG,CAAC+nB,GAAUpB,EAAW,OAAO,CAAC;AAAA,IACjC,WAAWwG,EAAY,CAAAnL,MAAS;AAC9B,UAAI,CAAC+F,KAAY,CAACN,EAAM,eAAe+F,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,SAAS,GAAG;AAC9H,YAAI;AAAA,UACF,aAAAgI;AAAA,QACV,IAAY3M,GACA;AAAA,UACF,WAAA3gB;AAAA,QACV,IAAYrB,GACA8H,IAAU9H,EAAO,SAASqB,MAAc,OAAOA,EAAU,MAAM,KAAK,CAAC,IAAI,CAAC,GAC1EiD,IAAQ8jB,GAAazmB,EAAK,OAAOmG,CAAO,CAAC,MAAM;AAKnD,YAAI+hB,GAAQ,OAAO8E,CAAW,GAAG;AAC/B,UAAA3M,EAAM,eAAc;AACpB,cAAI4M,IAAqB5uB;AAEzB,UAAI,OAAO4uB,EAAmB,QAAS,cACrCA,EAAmB,KAAI;AAGzB;AAAA,QACF;AAEA,YAAI/E,GAAQ,OAAO8E,CAAW,GAAG;AAC/B,UAAA3M,EAAM,eAAc;AACpB,cAAI6M,IAAsB7uB;AAE1B,UAAI,OAAO6uB,EAAoB,QAAS,cACtCA,EAAoB,KAAI;AAG1B;AAAA,QACF;AAMA,YAAIhF,GAAQ,mBAAmB8E,CAAW,GAAG;AAC3C,UAAA3M,EAAM,eAAc,GACpB5gB,EAAW,KAAKpB,GAAQ;AAAA,YACtB,MAAM;AAAA,YACN,SAAS;AAAA,UACrB,CAAW;AACD;AAAA,QACF;AAEA,YAAI6pB,GAAQ,kBAAkB8E,CAAW,GAAG;AAC1C,UAAA3M,EAAM,eAAc,GACpB5gB,EAAW,KAAKpB,GAAQ;AAAA,YACtB,MAAM;AAAA,UAClB,CAAW;AACD;AAAA,QACF;AAEA,YAAI6pB,GAAQ,qBAAqB8E,CAAW,GAAG;AAC7C,UAAA3M,EAAM,eAAc,GACpB5gB,EAAW,KAAKpB,GAAQ;AAAA,YACtB,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,UACrB,CAAW;AACD;AAAA,QACF;AAEA,YAAI6pB,GAAQ,oBAAoB8E,CAAW,GAAG;AAC5C,UAAA3M,EAAM,eAAc,GACpB5gB,EAAW,KAAKpB,GAAQ;AAAA,YACtB,MAAM;AAAA,YACN,MAAM;AAAA,UAClB,CAAW;AACD;AAAA,QACF;AAOA,YAAI6pB,GAAQ,eAAe8E,CAAW,GAAG;AACvC,UAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,YAAYD,CAAS,IAC1CD,EAAW,KAAKpB,GAAQ;AAAA,YACtB,SAAS,CAACsE;AAAA,UACxB,CAAa,IAEDlD,EAAW,SAASpB,GAAQ;AAAA,YAC1B,MAAM;AAAA,UACpB,CAAa;AAGH;AAAA,QACF;AAEA,YAAI6pB,GAAQ,cAAc8E,CAAW,GAAG;AACtC,UAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,YAAYD,CAAS,IAC1CD,EAAW,KAAKpB,GAAQ;AAAA,YACtB,SAASsE;AAAA,UACvB,CAAa,IAEDlD,EAAW,SAASpB,GAAQ;AAAA,YAC1B,MAAM;AAAA,UACpB,CAAa;AAGH;AAAA,QACF;AAEA,YAAI6pB,GAAQ,mBAAmB8E,CAAW,GAAG;AAC3C,UAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,KACzCD,EAAW,SAASpB,GAAQ;AAAA,YAC1B,MAAM;AAAA,UACpB,CAAa,GAGHoB,EAAW,KAAKpB,GAAQ;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,CAACsE;AAAA,UACtB,CAAW;AACD;AAAA,QACF;AAEA,YAAIulB,GAAQ,kBAAkB8E,CAAW,GAAG;AAC1C,UAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,KACzCD,EAAW,SAASpB,GAAQ;AAAA,YAC1B,MAAM;AAAA,UACpB,CAAa,GAGHoB,EAAW,KAAKpB,GAAQ;AAAA,YACtB,MAAM;AAAA,YACN,SAASsE;AAAA,UACrB,CAAW;AACD;AAAA,QACF;AAKA,YAAK8f;AA0GH,eAAIP,MAAaF,OAGXtiB,MAAcwoB,GAAQ,iBAAiB8E,CAAW,KAAK9E,GAAQ,gBAAgB8E,CAAW,MAAMrtB,EAAM,YAAYD,CAAS,GAAG;AAChI,gBAAIc,IAAcR,EAAK,OAAO3B,GAAQqB,EAAU,OAAO,IAAI;AAE3D,gBAAI2nB,EAAU,UAAU7mB,CAAW,KAAKhC,EAAO,OAAOH,GAAQmC,CAAW,KAAKhC,EAAO,SAASH,GAAQmC,CAAW,GAAG;AAClH,cAAA6f,EAAM,eAAc,GACpB7hB,EAAO,eAAeH,GAAQ;AAAA,gBAC5B,MAAM;AAAA,cACxB,CAAiB;AACD;AAAA,YACF;AAAA,UACF;AAAA,eAvH2B;AAG7B,cAAI6pB,GAAQ,OAAO8E,CAAW,KAAK9E,GAAQ,SAAS8E,CAAW,KAAK9E,GAAQ,qBAAqB8E,CAAW,GAAG;AAC7G,YAAA3M,EAAM,eAAc;AACpB;AAAA,UACF;AAEA,cAAI6H,GAAQ,aAAa8E,CAAW,GAAG;AACrC,YAAA3M,EAAM,eAAc,GACpB7hB,EAAO,YAAYH,CAAM;AACzB;AAAA,UACF;AAEA,cAAI6pB,GAAQ,iBAAiB8E,CAAW,GAAG;AACzC,YAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,IACzClB,EAAO,eAAeH,GAAQ;AAAA,cAC5B,WAAW;AAAA,YAC3B,CAAe,IAEDG,EAAO,eAAeH,CAAM;AAG9B;AAAA,UACF;AAEA,cAAI6pB,GAAQ,gBAAgB8E,CAAW,GAAG;AACxC,YAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,IACzClB,EAAO,eAAeH,GAAQ;AAAA,cAC5B,WAAW;AAAA,YAC3B,CAAe,IAEDG,EAAO,cAAcH,CAAM;AAG7B;AAAA,UACF;AAEA,cAAI6pB,GAAQ,qBAAqB8E,CAAW,GAAG;AAC7C,YAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,IACzClB,EAAO,eAAeH,GAAQ;AAAA,cAC5B,WAAW;AAAA,YAC3B,CAAe,IAEDG,EAAO,eAAeH,GAAQ;AAAA,cAC5B,MAAM;AAAA,YACtB,CAAe;AAGH;AAAA,UACF;AAEA,cAAI6pB,GAAQ,oBAAoB8E,CAAW,GAAG;AAC5C,YAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,IACzClB,EAAO,eAAeH,GAAQ;AAAA,cAC5B,WAAW;AAAA,YAC3B,CAAe,IAEDG,EAAO,cAAcH,GAAQ;AAAA,cAC3B,MAAM;AAAA,YACtB,CAAe;AAGH;AAAA,UACF;AAEA,cAAI6pB,GAAQ,qBAAqB8E,CAAW,GAAG;AAC7C,YAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,IACzClB,EAAO,eAAeH,GAAQ;AAAA,cAC5B,WAAW;AAAA,YAC3B,CAAe,IAEDG,EAAO,eAAeH,GAAQ;AAAA,cAC5B,MAAM;AAAA,YACtB,CAAe;AAGH;AAAA,UACF;AAEA,cAAI6pB,GAAQ,oBAAoB8E,CAAW,GAAG;AAC5C,YAAA3M,EAAM,eAAc,GAEhB3gB,KAAaC,EAAM,WAAWD,CAAS,IACzClB,EAAO,eAAeH,GAAQ;AAAA,cAC5B,WAAW;AAAA,YAC3B,CAAe,IAEDG,EAAO,cAAcH,GAAQ;AAAA,cAC3B,MAAM;AAAA,YACtB,CAAe;AAGH;AAAA,UACF;AAAA,QACF;AAAA,MAiBF;AAAA,IACF,GAAG,CAAC+nB,GAAUpB,EAAW,SAAS,CAAC;AAAA,IACnC,SAASwG,EAAY,CAAAnL,MAAS;AAC5B,MAAI,CAAC+F,KAAYyF,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,OAAO,MAK/F,CAACvC,MAA4BqG,GAAqBzI,EAAM,WAAW,OACrEA,EAAM,eAAc,GACpB0C,EAAY,WAAW1kB,GAAQgiB,EAAM,aAAa;AAAA,IAGxD,GAAG,CAAC+F,GAAUpB,EAAW,OAAO,CAAC;AAAA,EACrC,CAAG,GAAgBhC,gBAAAA,EAAM,cAAciH,IAAU;AAAA,IAC7C,aAAa3a;AAAA,IACb,MAAMjR;AAAA,IACN,eAAe6nB;AAAA,IACf,mBAAmBzB;AAAA,IACnB,YAAYC;AAAA,IACZ,WAAWrmB,EAAO;AAAA,EACtB,CAAG,CAAC,CAAC,CAAC;AACN,GAKImsB,KAAqB,CAAA5rB,MAAS;AAChC,MAAI;AAAA,IACF,YAAAomB;AAAA,IACA,UAAA3d;AAAA,EACJ,IAAMzI;AACJ,SAAoBokB,gBAAAA,EAAM,cAAc,QAAQ,OAAO,OAAO,CAAA,GAAIgC,CAAU,GAAG3d,CAAQ;AACzF,GAKIgjB,KAAkB,MAAM,CAAA,GAKxBK,KAAiC,CAACrsB,GAAQ8uB,MAAa;AAGzD,MAAI,CAAC9uB,EAAO,aAAaA,EAAO,aAAasB,EAAM,YAAYtB,EAAO,SAAS,GAAG;AAChF,QAAI+uB,IAASD,EAAS,eAAe;AACrC,IAAAC,EAAO,wBAAwBD,EAAS,sBAAsB,KAAKA,CAAQ,GAC3EzN,GAAe0N,GAAQ;AAAA,MACrB,YAAY;AAAA,IAClB,CAAK,GACD,OAAOA,EAAO;AAAA,EAChB;AACF,GAKIV,KAAY,CAACruB,GAAQH,MAChBuqB,GAAUvqB,CAAM,KAAK6kB,EAAY,WAAW1kB,GAAQH,CAAM,GAM/D2tB,IAAoB,CAACxtB,GAAQH,MACxBuqB,GAAUvqB,CAAM,KAAK6kB,EAAY,WAAW1kB,GAAQH,GAAQ;AAAA,EACjE,UAAU;AACd,CAAG,GAMC4tB,KAAgC,CAACztB,GAAQH,MAAW;AACtD,MAAI8lB,GAAa,IAAI3lB,CAAM,EAAG,QAAO;AACrC,MAAIgvB,IAAYX,GAAUruB,GAAQH,CAAM,KAAK6kB,EAAY,YAAY1kB,GAAQH,CAAM;AACnF,SAAOM,EAAO,OAAOH,GAAQgvB,CAAS;AACxC,GAKIb,IAAiB,CAACnM,GAAOiN,MAAY;AACvC,MAAI,CAACA;AACH,WAAO;AAKT,MAAIC,IAA4BD,EAAQjN,CAAK;AAE7C,SAAIkN,MAIGlN,EAAM,wBAAwBA,EAAM,qBAAoB;AACjE,GAKI6L,KAAoB,CAAC7L,GAAOiN,MAAY;AAC1C,MAAI,CAACA;AACH,WAAO;AAKT,MAAIC,IAA4BD,EAAQjN,CAAK;AAE7C,SAAIkN,KAIGlN,EAAM;AACf;AAWA,SAASmN,GAAa9sB,GAAM0H,GAAM;AAGhC,WAFIqH,IAAS,KAAK,IAAI/O,EAAK,QAAQ0H,EAAK,MAAM,GAErCzO,IAAI,GAAGA,IAAI8V,GAAQ9V;AAC1B,QAAI+G,EAAK,OAAO/G,CAAC,MAAMyO,EAAK,OAAOzO,CAAC,EAAG,QAAOA;AAGhD,SAAI+G,EAAK,WAAW0H,EAAK,SAAeqH,IACjC;AACT;AAaA,SAASge,GAAW/sB,GAAM0H,GAAMgB,GAAK;AAKnC,WAJIskB,IAAahtB,EAAK,QAClBitB,IAAavlB,EAAK,QAClBqH,IAAS,KAAK,IAAIie,GAAYC,GAAYvkB,CAAG,GAExC,IAAI,GAAG,IAAIqG,GAAQ,KAAK;AAC/B,QAAIme,IAAWltB,EAAK,OAAOgtB,IAAa,IAAI,CAAC,GACzClpB,IAAW4D,EAAK,OAAOulB,IAAa,IAAI,CAAC;AAC7C,QAAIC,MAAappB,EAAU,QAAO;AAAA,EACpC;AAEA,SAAI9D,EAAK,WAAW0H,EAAK,SAAeqH,IACjC;AACT;AAeA,SAASoe,GAAentB,GAAM0H,GAAM;AAClC,MAAI1H,MAAS0H,EAAM,QAAO;AAC1B,MAAIZ,IAAQgmB,GAAa9sB,GAAM0H,CAAI;AACnC,MAAIZ,MAAU,KAAM,QAAO;AAC3B,MAAIsmB,IAAS,KAAK,IAAIptB,EAAK,SAAS8G,GAAOY,EAAK,SAASZ,CAAK,GAC1D9C,IAAM+oB,GAAW/sB,GAAM0H,GAAM0lB,CAAM;AACvC,SAAIppB,MAAQ,OAAa,OAClB;AAAA,IACL,OAAA8C;AAAA,IACA,KAAA9C;AAAA,EACJ;AACA;AAUA,SAASqpB,GAAU5tB,GAAM6tB,GAAS;AAChC,SAAO7tB,EAAK,MAAM6tB,EAAQ,OAAO7tB,EAAK,SAAS6tB,EAAQ,GAAG;AAC5D;AAYA,SAASC,GAASvtB,GAAM0H,GAAM;AAC5B,MAAI1H,MAAS,UAAa0H,MAAS,OAAW,QAAO;AACrD,MAAI4lB,IAAUH,GAAentB,GAAM0H,CAAI;AACvC,MAAI4lB,KAAW,KAAM,QAAO;AAC5B,MAAIE,IAAaH,GAAU3lB,GAAM4lB,CAAO,GACpCG,IAAaJ,GAAUrtB,GAAMstB,CAAO;AACxC,SAAO;AAAA,IACL,OAAOA,EAAQ;AAAA,IACf,KAAKttB,EAAK,SAASstB,EAAQ;AAAA,IAC3B,YAAAE;AAAA,IACA,YAAAC;AAAA,EACJ;AACA;AACA,SAASC,GAAoBC,GAAc;AACzC,SAAOA,EAAa,OAAO,CAACC,GAAK5vB,MAAS;AACxC,QAAI;AAAA,MACF,MAAAyB;AAAA,IACN,IAAQzB;AACJ,WAAO,GAAG,OAAO4vB,CAAG,EAAE,OAAOnuB,EAAK,UAAU;AAAA,EAC9C,GAAG,EAAE;AACP;AACA,SAASouB,GAAiBlwB,GAAQmrB,GAAS;AACzC,MAAItpB,IAAO6iB,EAAY,YAAY1kB,GAAQmrB,CAAO;AAElD,MAAKtE,EAAO,OAAOhlB,CAAI,GAIvB;AAAA,QAAIsuB,IAAWtuB,EAAK,MAChBuuB,IAAWjF,EAAQ;AAOvB,QALIiF,EAAS,SAAS;AAAA,CAAI,MACxBA,IAAWA,EAAS,MAAM,GAAGA,EAAS,SAAS,CAAC,IAI9CA,MAAaD,GAAU;AACzB,UAAIE,IAAWT,GAASO,GAAUC,CAAQ;AAE1C,UAAIC,MAAa,MAAM;AACrB,YAAIC,IAAW5L,EAAY,SAAS1kB,GAAQ6B,CAAI;AAChD,eAAO;AAAA,UACL,MAAMwuB;AAAA,UACN,MAAMC;AAAA,QACd;AAAA,MACI;AAAA,IACF;AAAA;AAGF;AACA,SAASC,GAA4BvwB,GAAQ0I,GAAOnI,GAAO;AACzD,MAAI;AAAA,IACF,MAAAO;AAAA,IACA,MAAAgB;AAAA,EACJ,IAAMvB,GACAiwB,IAAiB;AAAA,IACnB,QAAQ;AAAA,MACN,MAAA1vB;AAAA,MACA,QAAQgB,EAAK;AAAA,IACnB;AAAA,IACI,OAAO;AAAA,MACL,MAAAhB;AAAA,MACA,QAAQgB,EAAK;AAAA,IACnB;AAAA,EACA;AAEE,MAAI,CAAC4G,KAAS,CAACpH,EAAM,YAAYoH,CAAK;AACpC,WAAO8nB;AAGT,MAAI;AAAA,IACF,YAAAX;AAAA,IACA,YAAAC;AAAA,EACJ,IAAMhuB,GACA2uB,IAA6BZ,EAAW,WAAW,KAAKC,EAAW,WAAW;AAqBlF,MAAIW,KAA8B1vB,EAAK,OAAO2H,EAAM,OAAO,MAAM5H,CAAI,GAAG;AACtE,QAAI,CAACiS,CAAK,IAAI,MAAM,KAAK5S,EAAO,MAAMH,GAAQ;AAAA,MAC5C,IAAI0I;AAAA,MACJ,OAAOme,EAAO;AAAA,IACpB,CAAK,CAAC;AAEF,QAAI9T,GAAO;AACT,UAAI,CAAClR,CAAI,IAAIkR,GACT;AAAA,QACF,QAAAvK;AAAA,MACR,IAAUE,GACAgoB,IAAwB7uB,EAAK,KAAK2G,EAAO,SAAS,CAAC,GACnDmoB,IAAuB9uB,EAAK,KAAK2G,EAAO,MAAM;AAElD,UAAIqnB,EAAW,WAAW,KAAKA,MAAec;AAE5C,eAAOjoB;AAGT,UAAIonB,EAAW,WAAW,KAAKA,MAAeY;AAE5C,eAAO;AAAA,UACL,QAAQ;AAAA,YACN,MAAA5vB;AAAA,YACA,QAAQ0H,EAAO,SAAS;AAAA,UACpC;AAAA,UACU,OAAO;AAAA,YACL,MAAA1H;AAAA,YACA,QAAQ0H,EAAO;AAAA,UAC3B;AAAA,QACA;AAAA,IAEI;AAAA,EACF;AAEA,SAAOgoB;AACT;AAKA,IAAIp1B,KAAI;AAMR,MAAMw1B,GAAI;AAAA,EACR,cAAc;AACZ,SAAK,KAAK,GAAG,OAAOx1B,IAAG;AAAA,EACzB;AAEF;AAEA,IAAIspB,IAAc;AAAA;AAAA;AAAA;AAAA,EAIhB,UAAU1kB,GAAQ;AAChB,QAAIsqB,IAASjF,GAAiB,IAAIrlB,CAAM;AAExC,QAAI,CAACsqB;AACH,YAAM,IAAI,MAAM,sDAAsD;AAGxE,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQtqB,GAAQ6B,GAAM;AACpB,QAAIhD,IAAM4mB,GAAY,IAAI5jB,CAAI;AAE9B,WAAKhD,MACHA,IAAM,IAAI+xB,GAAG,GACbnL,GAAY,IAAI5jB,GAAMhD,CAAG,IAGpBA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,SAASmB,GAAQ6B,GAAM;AAIrB,aAHIf,IAAO,CAAA,GACPmB,IAAQJ,OAEC;AACX,UAAIiI,IAASsb,GAAe,IAAInjB,CAAK;AAErC,UAAI6H,KAAU,MAAM;AAClB,YAAI3J,EAAO,SAAS8B,CAAK;AACvB,iBAAOnB;AAEP;AAAA,MAEJ;AAEA,UAAIxF,IAAI6pB,GAAc,IAAIljB,CAAK;AAE/B,UAAI3G,KAAK;AACP;AAGF,MAAAwF,EAAK,QAAQxF,CAAC,GACd2G,IAAQ6H;AAAA,IACV;AAEA,UAAM,IAAI,MAAM,2CAA2C,OAAO,KAAK,UAAUjI,CAAI,CAAC,CAAC;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA,EAKA,yBAAyB7B,GAAQ;AAC/B,QAAIkhB,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM,GACzC4M,IAAOsU,EAAG,YAAW;AAEzB,YAAKtU,aAAgB,YAAYA,aAAgB,eAAeA,EAAK,gBAAgB,OAC5EA,IAGFsU,EAAG;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUlhB,GAAQ;AAChB,WAAO,CAAC,CAAC4lB,GAAW,IAAI5lB,CAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAQ;AACjB,WAAO,CAAC,CAAC2lB,GAAa,IAAI3lB,CAAM;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKA,GAAQ;AACX,QAAIkhB,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM,GACzC4M,IAAO8X,EAAY,yBAAyB1kB,CAAM;AACtD,IAAA4lB,GAAW,IAAI5lB,GAAQ,EAAK,GAExB4M,EAAK,kBAAkBsU,KACzBA,EAAG,KAAI;AAAA,EAEX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMlhB,GAAQ;AACZ,QAAIkhB,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM,GACzC4M,IAAO8X,EAAY,yBAAyB1kB,CAAM;AACtD,IAAA4lB,GAAW,IAAI5lB,GAAQ,EAAI,GAEvB4M,EAAK,kBAAkBsU,KACzBA,EAAG,MAAM;AAAA,MACP,eAAe;AAAA,IACvB,CAAO;AAAA,EAEL;AAAA;AAAA;AAAA;AAAA,EAKA,SAASlhB,GAAQ;AACf,IAAA0kB,EAAY,UAAU1kB,GAAQA,CAAM;AACpC,QAAI;AAAA,MACF,WAAAqB;AAAA,IACN,IAAQrB,GACA4M,IAAO8X,EAAY,yBAAyB1kB,CAAM,GAClD4sB,IAAehgB,EAAK,aAAY;AAEpC,IAAIggB,KAAgBA,EAAa,aAAa,KAC5CA,EAAa,gBAAe,GAG1BvrB,KACFD,EAAW,SAASpB,CAAM;AAAA,EAE9B;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAQH,GAAQ;AACzB,QAAIuI,IAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA,GAC9E;AAAA,MACF,UAAAyoB,IAAW;AAAA,IACjB,IAAQzoB,GACAqe,IAAW/B,EAAY,UAAU1kB,GAAQA,CAAM,GAC/C8wB;AAKJ,QAAI;AACF,MAAAA,IAAWzG,GAAaxqB,CAAM,IAAIA,IAASA,EAAO;AAAA,IACpD,SAASujB,GAAK;AACZ,UAAI,CAACA,EAAI,QAAQ,SAAS,iDAAiD;AACzE,cAAMA;AAAA,IAEV;AAEA,WAAK0N,IAIEA,EAAS,QAAQ,qBAAqB,MAAMrK,MAAa,CAACoK,KAAYC,EAAS,oBAAoB,KAAO,OAAOA,EAAS,qBAAsB;AAAA;AAAA,IAEvJA,EAAS,QAAQ,2BAA2B,MAAMrK,KAAY,CAAC,CAACqK,EAAS,aAAa,uBAAuB,KALpG;AAAA,EAMX;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW9wB,GAAQ8tB,GAAM;AACvB,IAAA9tB,EAAO,WAAW8tB,CAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB9tB,GAAQ8tB,GAAM;AAC/B,WAAO9tB,EAAO,mBAAmB8tB,CAAI;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe9tB,GAAQ8tB,GAAM;AAC3B,WAAO9tB,EAAO,eAAe8tB,CAAI;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB9tB,GAAQ8tB,GAAMiD,GAAa;AACzC,IAAA/wB,EAAO,gBAAgB8tB,GAAMiD,CAAW;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU/wB,GAAQ6B,GAAM;AACtB,QAAI6lB,IAAiBhC,GAAyB,IAAI1lB,CAAM,GACpDmrB,IAAUhrB,EAAO,SAAS0B,CAAI,IAAIyjB,GAAkB,IAAItlB,CAAM,IAAoE0nB,GAAe,IAAIhD,EAAY,QAAQ1kB,GAAQ6B,CAAI,CAAC;AAE1L,QAAI,CAACspB;AACH,YAAM,IAAI,MAAM,8CAA8C,OAAO,KAAK,UAAUtpB,CAAI,CAAC,CAAC;AAG5F,WAAOspB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWnrB,GAAQ8I,GAAO;AACxB,QAAI,CAACjH,CAAI,IAAI1B,EAAO,KAAKH,GAAQ8I,EAAM,IAAI,GACvCoY,IAAKwD,EAAY,UAAU1kB,GAAQ6B,CAAI,GACvC8oB;AAGJ,IAAIxqB,EAAO,KAAKH,GAAQ;AAAA,MACtB,IAAI8I;AAAA,IACV,CAAK,MACCA,IAAQ;AAAA,MACN,MAAMA,EAAM;AAAA,MACZ,QAAQ;AAAA,IAChB;AAMI,QAAIkoB,IAAW,gDACXC,IAAQ,MAAM,KAAK/P,EAAG,iBAAiB8P,CAAQ,CAAC,GAChD7nB,IAAQ;AAEZ,aAASrH,KAAQmvB,GAAO;AACtB,UAAI9F,IAAUrpB,EAAK,WAAW,CAAC;AAE/B,UAAI,EAAAqpB,KAAW,QAAQA,EAAQ,eAAe,OAI9C;AAAA,YAAI;AAAA,UACF,QAAA/Z;AAAA,QACR,IAAU+Z,EAAQ,aACR+F,IAAOpvB,EAAK,aAAa,mBAAmB,GAC5CqvB,IAAaD,KAAQ,OAAO9f,IAAS,SAAS8f,GAAM,EAAE,GACtD7qB,IAAM8C,IAAQgoB;AAElB,YAAIroB,EAAM,UAAUzC,GAAK;AACvB,cAAImJ,IAAS,KAAK,IAAI4B,GAAQ,KAAK,IAAI,GAAGtI,EAAM,SAASK,CAAK,CAAC;AAC/D,UAAAwhB,IAAW,CAACQ,GAAS3b,CAAM;AAC3B;AAAA,QACF;AAEA,QAAArG,IAAQ9C;AAAA;AAAA,IACV;AAEA,QAAI,CAACskB;AACH,YAAM,IAAI,MAAM,gDAAgD,OAAO,KAAK,UAAU7hB,CAAK,CAAC,CAAC;AAG/F,WAAO6hB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW3qB,GAAQ0I,GAAO;AACxB,QAAI;AAAA,MACF,QAAAF;AAAA,MACA,OAAAC;AAAA,IACN,IAAQC,GACA0oB,IAAa9vB,EAAM,WAAWoH,CAAK,GACnC2oB,IAAY3M,EAAY,WAAW1kB,GAAQwI,CAAM,GACjD8oB,IAAWhwB,EAAM,YAAYoH,CAAK,IAAI2oB,IAAY3M,EAAY,WAAW1kB,GAAQyI,CAAK,GACtF6hB,IAAS5F,EAAY,UAAU1kB,CAAM,GACrC8uB,IAAWxE,EAAO,SAAS,YAAW,GACtC,CAACiH,GAAWC,CAAW,IAAIJ,IAAaE,IAAWD,GACnD,CAACI,GAASC,CAAS,IAAIN,IAAaC,IAAYC,GAIhDK,IAAUtH,GAAakH,CAAS,IAAIA,IAAYA,EAAU,eAC1DK,IAAqB,CAAC,CAACD,EAAQ,aAAa,uBAAuB,GACnEE,IAAQxH,GAAaoH,CAAO,IAAIA,IAAUA,EAAQ,eAClDK,IAAmB,CAAC,CAACD,EAAM,aAAa,uBAAuB;AACnE,WAAA/C,EAAS,SAASyC,GAAWK,IAAqB,IAAIJ,CAAW,GACjE1C,EAAS,OAAO2C,GAASK,IAAmB,IAAIJ,CAAS,GAClD5C;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY9uB,GAAQmrB,GAAS;AAC3B,QAAI4G,IAAQ1H,GAAac,CAAO,IAAIA,IAAUA,EAAQ;AAEtD,IAAI4G,KAAS,CAACA,EAAM,aAAa,iBAAiB,MAChDA,IAAQA,EAAM,QAAQ,mBAAmB;AAG3C,QAAIlwB,IAAOkwB,IAAQxM,GAAgB,IAAIwM,CAAK,IAAI;AAEhD,QAAI,CAAClwB;AACH,YAAM,IAAI,MAAM,8CAA8C,OAAOkwB,CAAK,CAAC;AAG7E,WAAOlwB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe7B,GAAQgiB,GAAO;AAC5B,IAAI,iBAAiBA,MACnBA,IAAQA,EAAM;AAGhB,QAAI;AAAA,MACF,SAASzkB;AAAA,MACT,SAASb;AAAA,MACT,QAAAmD;AAAA,IACN,IAAQmiB;AAEJ,QAAIzkB,KAAK,QAAQb,KAAK;AACpB,YAAM,IAAI,MAAM,kDAAkD,OAAOslB,CAAK,CAAC;AAGjF,QAAIngB,IAAO6iB,EAAY,YAAY1kB,GAAQgiB,EAAM,MAAM,GACnDlhB,IAAO4jB,EAAY,SAAS1kB,GAAQ6B,CAAI;AAI5C,QAAI1B,EAAO,OAAOH,GAAQ6B,CAAI,GAAG;AAC/B,UAAImwB,IAAOnyB,EAAO,sBAAqB,GACnCoyB,IAASjyB,EAAO,SAAS6B,CAAI,IAAItE,IAAIy0B,EAAK,OAAOA,EAAK,OAAOA,EAAK,QAAQz0B,IAAIb,IAAIs1B,EAAK,MAAMA,EAAK,MAAMA,EAAK,SAASt1B,GACtH2O,IAAOlL,EAAO,MAAMH,GAAQc,GAAM;AAAA,QACpC,MAAMmxB,IAAS,UAAU;AAAA,MACjC,CAAO,GACGnpB,IAAQmpB,IAAS9xB,EAAO,OAAOH,GAAQqL,CAAI,IAAIlL,EAAO,MAAMH,GAAQqL,CAAI;AAE5E,UAAIvC,GAAO;AACT,YAAIopB,IAAS/xB,EAAO,MAAMH,GAAQ8I,CAAK;AAEvC,eAAOopB;AAAA,MACT;AAAA,IACF;AAGA,QAAIpD,GACA;AAAA,MACF,UAAAqD;AAAA,IACN,IAAQzN,EAAY,UAAU1kB,CAAM;AAEhC,QAAImyB,EAAS;AACX,MAAArD,IAAWqD,EAAS,oBAAoB50B,GAAGb,CAAC;AAAA,SACvC;AACL,UAAIqS,IAAWojB,EAAS,uBAAuB50B,GAAGb,CAAC;AAEnD,MAAIqS,MACF+f,IAAWqD,EAAS,YAAW,GAC/BrD,EAAS,SAAS/f,EAAS,YAAYA,EAAS,MAAM,GACtD+f,EAAS,OAAO/f,EAAS,YAAYA,EAAS,MAAM;AAAA,IAExD;AAEA,QAAI,CAAC+f;AACH,YAAM,IAAI,MAAM,kDAAkD,OAAO9M,CAAK,CAAC;AAIjF,QAAItZ,IAAQgc,EAAY,aAAa1kB,GAAQ8uB,GAAU;AAAA,MACrD,YAAY;AAAA,MACZ,eAAe;AAAA,IACrB,CAAK;AACD,WAAOpmB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa1I,GAAQ2qB,GAAUviB,GAAS;AACtC,QAAI;AAAA,MACF,YAAAgqB;AAAA,MACA,eAAAC;AAAA,IACN,IAAQjqB,GACA,CAACkqB,GAAaC,CAAa,IAAIH,IAAazH,IAAWD,GAAkBC,CAAQ,GACjF6H,IAAaF,EAAY,YACzBG,IAAW,MACXjjB,IAAS;AAEb,QAAIgjB,GAAY;AACd,UAAIE,GAEAtb,IAAWob,EAAW,QAAQ,0BAA0B,GACxDG,IAAWH,EAAW,QAAQ,mBAAmB,GACjDrH,IAAU;AAGd,UAAIwH;AAGF,YAFAF,IAAWE,EAAS,QAAQ,0BAA0B,GAElDF,GAAU;AACZ,cAAInI,IAAS5F,EAAY,UAAU1kB,CAAM,GACrC0I,IAAQ4hB,EAAO,SAAS,YAAW;AACvC,UAAA5hB,EAAM,SAAS+pB,GAAU,CAAC,GAC1B/pB,EAAM,OAAO4pB,GAAaC,CAAa;AACvC,cAAIK,IAAWlqB,EAAM,cAAa,GAC9BmqB,IAAW,CAAC,GAAG,MAAM,UAAU,MAAM,KAAKD,EAAS,iBAAiB,yBAAyB,CAAC,GAAG,GAAG,MAAM,UAAU,MAAM,KAAKA,EAAS,iBAAiB,yBAAyB,CAAC,CAAC;AACxL,UAAAC,EAAS,QAAQ,CAAA3R,MAAM;AACrB,YAAAA,EAAG,WAAW,YAAYA,CAAE;AAAA,UAC9B,CAAC,GAMD1R,IAASojB,EAAS,YAAY,QAC9BzH,IAAUsH;AAAA,QACZ;AAAA,YACK,CAAIrb,MAGTub,IAAWvb,EAAS,cAAc,mBAAmB,GAEhDub,KAGHF,IAAWE,EAAS,QAAQ,0BAA0B,GACtDxH,IAAUwH,GACVnjB,IAAS2b,EAAQ,YAAY,QAC7BA,EAAQ,iBAAiB,yBAAyB,EAAE,QAAQ,CAAAjK,MAAM;AAChE,QAAA1R,KAAU0R,EAAG,YAAY;AAAA,MAC3B,CAAC,KAPD1R,IAAS;AAWb,MAAI2b,KAAW3b,MAAW2b,EAAQ,YAAY,WAAWqH,EAAW,aAAa,uBAAuB,KAAK9O,OAAegP,IAAuBvH,EAAQ,iBAAiB,QAAQuH,MAAyB,UAAUA,EAAqB,SAAS;AAAA;AAAA,CAAM,MACzPljB;AAAA,IAEJ;AAEA,QAAI,CAACijB,GAAU;AACb,UAAIJ;AACF,eAAO;AAGT,YAAM,IAAI,MAAM,gDAAgD,OAAO1H,CAAQ,CAAC;AAAA,IAClF;AAKA,QAAIqE,IAAYtK,EAAY,YAAY1kB,GAAQyyB,CAAQ,GACpD3xB,IAAO4jB,EAAY,SAAS1kB,GAAQgvB,CAAS;AACjD,WAAO;AAAA,MACL,MAAAluB;AAAA,MACA,QAAA0O;AAAA,IACN;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaxP,GAAQ8uB,GAAU1mB,GAAS;AACtC,QAAI;AAAA,MACF,YAAAgqB;AAAA,MACA,eAAAC;AAAA,IACN,IAAQjqB,GACA8Y,IAAKqJ,GAAeuE,CAAQ,IAAIA,EAAS,aAAaA,EAAS,gBAC/DzB,GACAyF,GACAxF,GACAyF,GACAviB;AA0BJ,QAxBI0Q,MACEqJ,GAAeuE,CAAQ,KACzBzB,IAAayB,EAAS,YACtBgE,IAAehE,EAAS,cACxBxB,IAAYwB,EAAS,WACrBiE,IAAcjE,EAAS,aAKnBjL,MAAaiH,OACfta,IAAcse,EAAS,eAAeA,EAAS,aAAaA,EAAS,iBAAiBA,EAAS,cAE/Fte,IAAcse,EAAS,gBAGzBzB,IAAayB,EAAS,gBACtBgE,IAAehE,EAAS,aACxBxB,IAAYwB,EAAS,cACrBiE,IAAcjE,EAAS,WACvBte,IAAcse,EAAS,aAIvBzB,KAAc,QAAQC,KAAa,QAAQwF,KAAgB,QAAQC,KAAe;AACpF,YAAM,IAAI,MAAM,gDAAgD,OAAOjE,CAAQ,CAAC;AAGlF,QAAItmB,IAASkc,EAAY,aAAa1kB,GAAQ,CAACqtB,GAAYyF,CAAY,GAAG;AAAA,MACxE,YAAAV;AAAA,MACA,eAAAC;AAAA,IACN,CAAK;AAED,QAAI,CAAC7pB;AACH,aAAO;AAGT,QAAIC,IAAQ+H,IAAchI,IAASkc,EAAY,aAAa1kB,GAAQ,CAACstB,GAAWyF,CAAW,GAAG;AAAA,MAC5F,YAAAX;AAAA,MACA,eAAAC;AAAA,IACN,CAAK;AAED,QAAI,CAAC5pB;AACH,aAAO;AAGT,QAAIC,IAAQ;AAAA,MACV,QAAQF;AAAA,MACR,OAAOC;AAAA,IACb;AAKI,WAAInH,EAAM,WAAWoH,CAAK,KAAKpH,EAAM,UAAUoH,CAAK,KAAK2hB,GAAaiD,CAAS,KAAKntB,EAAO,KAAKH,GAAQ;AAAA,MACtG,IAAI0I,EAAM;AAAA,MACV,MAAM;AAAA,IACZ,CAAK,MACCA,IAAQvI,EAAO,YAAYH,GAAQ0I,GAAO;AAAA,MACxC,OAAO;AAAA,IACf,CAAO,IAGIA;AAAA,EACT;AAAA,EAEA,SAAS1I,GAAQ0I,GAAO;AACtB,QAAI;AAAA,MACF,QAAAF;AAAA,MACA,OAAAC;AAAA,IACN,IAAQC;AACJ,WAAOvI,EAAO,QAAQH,GAAQwI,EAAO,IAAI,KAAKrI,EAAO,QAAQH,GAAQyI,EAAM,IAAI;AAAA,EACjF;AAEF;AAEA,SAASuqB,GAAmBhzB,GAAQizB,GAAW;AAC7C,MAAIC,IAAa,CAAA,GACbC,IAAe,CAAA,GACfnD,IAAe,CAAA,GACfoD,IAAyB,CAAA;AAC7B,SAAAH,EAAU,QAAQ,CAAAI,MAAY;AAC5B,YAAQA,EAAS,MAAI;AAAA,MACnB,KAAK,aACH;AACE,QAAIA,EAAS,WAAW,UACtBA,EAAS,WAAW,QAAQ,CAAAC,MAAa;AACvC,UAAAJ,EAAW,KAAKI,CAAS;AAAA,QAC3B,CAAC,GAGHD,EAAS,aAAa,QAAQ,CAAAE,MAAe;AAC3C,UAAAJ,EAAa,KAAKI,CAAW;AAAA,QAC/B,CAAC;AACD;AAAA,MACF;AAAA,MAEF,KAAK,iBACH;AACE,QAAAH,EAAuB,KAAKC,CAAQ;AAEpC,YAAI;AAAA,UACF,YAAAb;AAAA,QACZ,IAAca,EAAS;AAEb,YAAI,CAACb;AACH;AAGF,YAAIgB,IAAgBtD,GAAiBlwB,GAAQwyB,CAAU;AAOvD,YALI,CAACgB,KAKDxD,EAAa,KAAK,CAAA3vB,MAAQ;AAC5B,cAAI;AAAA,YACF,MAAAS;AAAA,UACd,IAAgBT;AACJ,iBAAOU,EAAK,OAAOD,GAAM0yB,EAAc,IAAI;AAAA,QAC7C,CAAC;AACC;AAIF,QAAAxD,EAAa,KAAKwD,CAAa;AAAA,MACjC;AAAA,IACR;AAAA,EACE,CAAC,GACM;AAAA,IACL,YAAAN;AAAA,IACA,cAAAC;AAAA,IACA,cAAAnD;AAAA,IACA,wBAAAoD;AAAA,EACJ;AACA;AAWA,IAAIlO,KAAc,CAACllB,GAAQO,MAAU;AACnC,MAAI;AAAA,IACF,YAAA2yB;AAAA,EACJ,IAAM3yB,GACA;AAAA,IACF,WAAAc;AAAA,EACJ,IAAMrB,GACAwyB,IAAanxB,IAAYM,EAAK,OAAO3B,GAAQqB,EAAU,OAAO,IAAI,IAAI,MACtEoyB,IAAgBjB,IAAa9N,EAAY,UAAU1kB,GAAQwyB,CAAU,IAAI;AAE7E,SAAKiB,IAIEP,EAAW,KAAK,CAAAI,MAAaA,aAAqB,eAAeA,EAAU,YAA2EG,GAAc,OAAQ,IAH1K;AAIX,GAOIC,KAAa,CAAC52B,GAAG+F,MAAU;AAC7B,MAAI;AAAA,IACF,cAAAswB;AAAA,EACJ,IAAMtwB;AACJ,SAAOswB,EAAa,SAAS;AAC/B,GAMIQ,KAA6B,CAACxd,GAAOyB,MAAU;AACjD,MAAI;AAAA,IACF,WAAAvW;AAAA,EACJ,IAAM8U,GACA;AAAA,IACF,cAAAgd;AAAA,EACJ,IAAMvb;AACJ,SAAOvW,IAAYC,EAAM,WAAWD,CAAS,KAAK8xB,EAAa,SAAS,IAAI;AAC9E,GAKIS,KAAkB,CAAC92B,GAAG+2B,MAAU;AAClC,MAAI;AAAA,IACF,cAAA7D;AAAA,EACJ,IAAM6D;AACJ,SAAO7D,EAAa,SAAS;AAC/B,GAKI8D,KAAoB,CAACh3B,GAAGi3B,MAAU;AACpC,MAAI;AAAA,IACF,YAAAb;AAAA,IACA,wBAAAE;AAAA,IACA,cAAAD;AAAA,EACJ,IAAMY;AACJ,SAAOZ,EAAa,SAAS,KAAKD,EAAW,WAAW,KAAKE,EAAuB,SAAS;AAC/F;AA2BA,MAAMY,GAAoB;AAAA,EACxB,YAAYh0B,GAAQi0B,GAAY;AAC9B,SAAK,SAASj0B,GACd,KAAK,aAAai0B,GAOlB,KAAK,QAAQ,CAAAhB,MAAa;AAExB,UAAI;AACF,aAAK,mBAAmBA,CAAS;AAAA,MACnC,SAAS7P,GAAK;AAEZ,gBAAQ,MAAMA,CAAG,GAEjB,KAAK,WAAU;AAAA,MACjB;AAAA,IACF,GAQA,KAAK,qBAAqB,CAAA6P,MAAa;AACrC,UAAIiB,IAAelB,GAAmB,KAAK,QAAQC,CAAS,GACxD;AAAA,QACF,cAAAjD;AAAA,QACA,cAAAmD;AAAA,MACR,IAAUe;AAEJ,UAAIP,GAA2B,KAAK,QAAQO,CAAY,GAAG;AACzD,YAAIpyB,IAAOiuB,GAAoBC,CAAY;AAC3C,aAAK,yBAAyBluB,CAAI;AAAA,MACpC,MAAO,CAAIojB,GAAY,KAAK,QAAQgP,CAAY,IAC9C,KAAK,YAAW,IACPJ,GAAkB,KAAK,QAAQI,CAAY,IACpD,KAAK,gBAAgBf,CAAY,IACxBO,GAAW,KAAK,QAAQQ,CAAY,IAC7C,KAAK,eAAc,IACVN,GAAgB,KAAK,QAAQM,CAAY,KAClD,KAAK,WAAWlE,CAAY;AAAA,IAEhC,GAMA,KAAK,aAAa,CAAAA,MAAgB;AAChC,UAAI;AAAA,QACF,WAAA3uB;AAAA,MACR,IAAU,KAAK;AAGT,UAAIwkB,GAAa,IAAI,KAAK,MAAM,KAAKC,GAAsB,IAAI,KAAK,MAAM,GAAG;AAC3E,QAAAC,GAA2B,IAAI,KAAK,QAAQiK,CAAY,GACxDlK,GAAsB,IAAI,KAAK,QAAQ,EAAK;AAC5C;AAAA,MACF;AAGA,MAAAkK,EAAa,QAAQ,CAAAmE,MAAa;AAChC,YAAIryB,IAAOqyB,EAAU,KAAK,YACtBjuB,IAAKqqB,GAA4B,KAAK,QAAQlvB,GAAW8yB,CAAS;AACtE,QAAA/yB,EAAW,aAAa,KAAK,QAAQ8E,CAAE,GACvC/F,EAAO,WAAW,KAAK,QAAQ2B,CAAI;AAAA,MACrC,CAAC;AAAA,IACH,GAMA,KAAK,cAAc,MAAM;AACvB,UAAI;AAAA,QACF,WAAAT;AAAA,MACR,IAAU,KAAK;AACT,MAAAlB,EAAO,YAAY,KAAK,MAAM,GAC9B,KAAK,WAAU,GAEXkB,KAEF,WAAW,MAAM;AACf,QAAI,KAAK,OAAO,aAAaC,EAAM,OAAOD,GAAW,KAAK,OAAO,SAAS,KACxED,EAAW,KAAK,KAAK,MAAM;AAAA,MAE/B,GAAG,GAAG;AAAA,IAEV,GAMA,KAAK,2BAA2B,CAAAU,MAAQ;AAEtC,MAAA3B,EAAO,eAAe,KAAK,MAAM,GAE7B2B,EAAK,UAEP3B,EAAO,WAAW,KAAK,QAAQ2B,CAAI,GAGrC,KAAK,WAAU;AAAA,IACjB,GAMA,KAAK,iBAAiB,MAAM;AAC1B,MAAA3B,EAAO,eAAe,KAAK,MAAM,GACjCukB,EAAY,MAAM,KAAK,MAAM,GAC7B,KAAK,WAAU;AAAA,IACjB,GAMA,KAAK,kBAAkB,CAAA5P,MAAS;AAC9B,eAASjT,KAAQiT,GAAO;AACtB,YAAIka,IAAYtK,EAAY,YAAY,KAAK,QAAQ7iB,CAAI;AAEzD,YAAImtB,GAAW;AACb,cAAIluB,IAAO4jB,EAAY,SAAS,KAAK,QAAQsK,CAAS;AACtD,UAAA5tB,EAAW,OAAO,KAAK,QAAQ;AAAA,YAC7B,IAAIN;AAAA,UAChB,CAAW,GACD,KAAK,WAAU;AAAA,QACjB;AAAA,MACF;AAAA,IACF,GAEA,KAAK,SAASd,GACd,KAAK,aAAai0B;AAAA,EACpB;AAEF;AAEA,SAASG,GAAoBvyB,GAAMwyB,GAAUjsB,GAAS;AACpD,MAAI,CAACksB,CAAgB,IAAI9M,GAAS,MAAM,IAAI,iBAAiB6M,CAAQ,CAAC;AACtE,EAAAhQ,GAA0B,MAAM;AAE9B,IAAAiQ,EAAiB,WAAU;AAAA,EAC7B,CAAC,GACD/P,GAAU,MAAM;AACd,QAAI,CAAC1iB,EAAK;AACR,YAAM,IAAI,MAAM,wDAAwD;AAI1E,WAAAyyB,EAAiB,QAAQzyB,EAAK,SAASuG,CAAO,GAEvCksB,EAAiB,WAAW,KAAKA,CAAgB;AAAA,EAC1D,CAAC;AACH;AAEA,IAAIC,KAA6B;AAAA,EAC/B,WAAW;AAAA,EACX,eAAe;AAAA,EACf,SAAS;AACX;AAEA,SAASC,GAAyBrJ,GAAS;AACzC,MAAIsJ,GAEA1C,IAAQ1H,GAAac,CAAO,IAAIA,IAAUA,EAAQ;AAEtD,EAAI4G,KAAS,CAACA,EAAM,aAAa,iBAAiB,MAChDA,IAAQA,EAAM,QAAQ,mBAAmB;AAG3C,MAAI/C,IAAY+C,KAASxM,GAAgB,IAAIwM,CAAK;AAElD,SAAI/C,OAMIyF,IAAS1C,OAAW,QAAQ0C,MAAW,UAAUA,EAAO,gBAAgBD,GAAyBzC,EAAM,aAAa,IAAI;AAClI;AAEA,SAAS2C,GAAc7yB,GAAM8yB,GAAmB;AAC9C,MAAI30B,IAASykB,GAAc,GACvBmQ,IAAe7P,GAAO,oBAAI,KAAK,GAC/B8P,IAAoB1H,EAAY,CAAA8F,MAAa;AAC/C,IAAK0B,EAAkB,WAIvB1B,EAAU,QAAQ,CAAA5yB,MAAQ;AACxB,UAAI;AAAA,QACF,QAAAR;AAAA,MACR,IAAUQ,GACA2uB,IAAYwF,GAAyB30B,CAAM;AAE/C,UAAKmvB;AAIL,eAAO4F,EAAa,QAAQ,IAAI5F,CAAS;AAAA,IAC3C,CAAC;AAAA,EACH,GAAG,CAAA,CAAE;AACL,EAAAoF,GAAoBvyB,GAAMgzB,GAAmBN,EAA0B,GAEvEK,EAAa,QAAQ,MAAK;AAC1B,MAAIE,IAAU3H,EAAY,MAAM;AAC9B,QAAI4H,IAAU,MAAM,KAAKH,EAAa,QAAQ,OAAM,CAAE,GAElDI,IAAiBD,EAAQ,OAAO,CAAA35B,MAAK,CAAC25B,EAAQ,KAAK,CAAA/pB,MAAKjK,EAAK,SAAS2jB,EAAY,SAAS1kB,GAAQgL,CAAC,GAAG0Z,EAAY,SAAS1kB,GAAQ5E,CAAC,CAAC,CAAC,CAAC;AAC5I,IAAA45B,EAAe,QAAQ,CAAA55B,MAAK;AAC1B,UAAI65B;AAEJ,OAACA,IAAwBhP,GAAoB,IAAI7qB,CAAC,OAAO,QAAQ65B,MAA0B,UAAkBA,EAAqB;AAAA,IACpI,CAAC,GACDL,EAAa,QAAQ,MAAK;AAAA,EAC5B,GAAG,CAAA,CAAE;AACL,SAAOE;AACT;AAEA,SAASI,KAAoB;AAC3B,MAAIl1B,IAASykB,GAAc,GACvBkQ,IAAoB5P,GAAO,EAAK,GAChCoQ,IAAoBpQ,GAAO,IAAI,GAC/BqQ,IAAcjI,EAAY,MAAM;AAClC,QAAIwH,EAAkB,YAAY,IAAO;AACvC,UAAIrK,IAAS5F,EAAY,UAAU1kB,CAAM;AACzC,MAAA20B,EAAkB,UAAU,IAExBQ,EAAkB,WACpB7K,EAAO,qBAAqB6K,EAAkB,OAAO,GAGvDA,EAAkB,UAAU7K,EAAO,sBAAsB,MAAM;AAC7D,QAAAqK,EAAkB,UAAU,IAC5BQ,EAAkB,UAAU;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAA,CAAE;AACL,SAAA5Q,GAAU,MAAM;AAEd,IAAIoQ,EAAkB,YACpBA,EAAkB,UAAU;AAAA,EAEhC,CAAC,GACM;AAAA,IACL,mBAAAA;AAAA,IACA,aAAAS;AAAA,EACJ;AACA;AAEA,IAAIC,KAA2B;AAAA,EAC7B,WAAW;AAAA,EACX,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,SAAS;AACX;AACA,SAASC,GAAuBzzB,GAAM;AACpC,MAAI7B,IAASykB,GAAc,GACvB;AAAA,IACF,mBAAAkQ;AAAA,IACA,aAAAS;AAAA,EACJ,IAAMF,GAAiB,GACjBK,IAAab,GAAc7yB,GAAM8yB,CAAiB,GAClDa,IAAe7I,GAAQ,MAAM,IAAIqH,GAAoBh0B,GAAQu1B,CAAU,GAAG,CAACA,GAAYv1B,CAAM,CAAC,GAC9Fy1B,IAAY1Q,GAAO,IAAI,GACvB2Q,IAAgB3Q,GAAO,EAAK,GAC5B/E,IAAQmN,EAAY,CAAA8F,MAAa;AACnC,IAAK0B,EAAkB,YAIvBe,EAAc,UAAU,IACxBF,EAAa,MAAMvC,CAAS,GAExBwC,EAAU,WACZ,aAAaA,EAAU,OAAO,GAGhCA,EAAU,UAAU,WAAW,MAAM;AACnC,MAAAC,EAAc,UAAU,IACxBD,EAAU,UAAU;AAAA,IACtB,GAAG,GAAG;AAAA,EACR,GAAG,CAAA,CAAE;AACL,SAAArB,GAAoBvyB,GAAMme,GAAOqV,EAAwB,GAClD;AAAA,IACL,eAAAK;AAAA,IACA,aAAAN;AAAA,EACJ;AACA;AAEA,IAAIzkB,KAAc,CAAC,aAAa,YAAY,oBAAoB,eAAe,YAAY,iBAAiB,cAAc,qBAAqB,SAAS,IAAI;AAE5J,SAASiK,GAAQrb,GAAQC,GAAgB;AAAE,MAAIC,IAAO,OAAO,KAAKF,CAAM;AAAG,MAAI,OAAO,uBAAuB;AAAE,QAAIG,IAAU,OAAO,sBAAsBH,CAAM;AAAG,IAAIC,MAAkBE,IAAUA,EAAQ,OAAO,SAAUC,GAAK;AAAE,aAAO,OAAO,yBAAyBJ,GAAQI,CAAG,EAAE;AAAA,IAAY,CAAC,IAAKF,EAAK,KAAK,MAAMA,GAAMC,CAAO;AAAA,EAAG;AAAE,SAAOD;AAAM;AAExV,SAASob,GAAchb,GAAQ;AAAE,WAASvE,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAAE,QAAIwE,IAAS,UAAUxE,CAAC,KAAK,OAAO,UAAUA,CAAC,IAAI,CAAA;AAAI,IAAIA,IAAI,IAAKsf,GAAQ,OAAO9a,CAAM,GAAG,EAAI,EAAE,QAAQ,SAAUjB,GAAK;AAAE,MAAAF,GAAgBkB,GAAQhB,GAAKiB,EAAOjB,CAAG,CAAC;AAAA,IAAG,CAAC,IAAc,OAAO,4BAA6B,OAAO,iBAAiBgB,GAAQ,OAAO,0BAA0BC,CAAM,CAAC,IAAY8a,GAAQ,OAAO9a,CAAM,CAAC,EAAE,QAAQ,SAAUjB,GAAK;AAAE,aAAO,eAAegB,GAAQhB,GAAK,OAAO,yBAAyBiB,GAAQjB,CAAG,CAAC;AAAA,IAAG,CAAC;AAAA,EAAK;AAAE,SAAOgB;AAAQ;AAOrhB,IAAI81B,KAAgB,IAChBC,KAAkB,CAAAjuB,MAAS;AAC7B,MAAI;AAAA,IACF,WAAAmkB;AAAA,IACA,UAAAC,IAAWC;AAAA,IACX,kBAAkBC;AAAA,IAClB,aAAAC;AAAA,IACA,UAAAnE,IAAW;AAAA,IACX,eAAAF;AAAA,IACA,YAAAxB;AAAA,IACA,mBAAAD,IAAoB,CAAAze,MAAsBgd,gBAAAA,EAAM,cAAcwH,IAAoB,OAAO,OAAO,IAAIxkB,CAAK,CAAC;AAAA,IAC1G,OAAA2kB,IAAQ,CAAA;AAAA,IACR,IAAIC,IAAY;AAAA,EACpB,IAAM5kB,GACAgf,IAAaziB,GAAyByD,GAAOgJ,EAAW,GAExD3Q,IAASgqB,MAET,CAACwC,GAAaC,CAAc,IAAIjF,GAAS,EAAK,GAC9CtnB,IAAM6kB,GAAO,IAAI,GACjByQ,IAAeF,GAAuBp1B,CAAG;AAE7C,EAAAylB,GAAa,IAAI3lB,GAAQ+nB,CAAQ;AAEjC,MAAIN,IAAQkF,GAAQ,OAAO;AAAA,IACzB,aAAa;AAAA,IACb,qBAAqB;AAAA,IACrB,eAAe;AAAA,EACnB,IAAM,CAAA,CAAE,GACFhF,IAAaP,GAAcpnB,CAAM;AAErC,EAAAqkB,GAA0B,MAAM;AAE9B,QAAIiG;AAEJ,IAAIpqB,EAAI,YAAYoqB,IAASJ,GAAehqB,EAAI,OAAO,MACrDmlB,GAAiB,IAAIrlB,GAAQsqB,CAAM,GACnChF,GAAkB,IAAItlB,GAAQE,EAAI,OAAO,GACzCslB,GAAgB,IAAIxlB,GAAQE,EAAI,OAAO,GACvCqlB,GAAgB,IAAIrlB,EAAI,SAASF,CAAM,KAEvCwlB,GAAgB,OAAOxlB,CAAM;AAG/B,QAAI;AAEF,UAAI;AAAA,QACF,WAAAqB;AAAA,MACR,IAAUrB,GACA4M,IAAO8X,EAAY,yBAAyB1kB,CAAM,GAClD4sB,IAAehgB,EAAK,aAAY;AAEpC,UAAI6a,EAAM,eAAe,CAACmF,KAAgB,CAAClI,EAAY,UAAU1kB,CAAM;AACrE;AAGF,UAAI6sB,IAAkBD,EAAa,SAAS;AAE5C,UAAI,CAACvrB,KAAa,CAACwrB;AACjB;AAIF,UAAIC,IAAgBxH,GAAkB,IAAItlB,CAAM,GAC5C+sB,IAA0B;AAO9B,UALID,EAAc,SAASF,EAAa,UAAU,KAAKE,EAAc,SAASF,EAAa,SAAS,MAClGG,IAA0B,KAIxBF,KAAmBE,KAA2B1rB,GAAW;AAC3D,YAAI2rB,IAAatI,EAAY,aAAa1kB,GAAQ4sB,GAAc;AAAA,UAC9D,YAAY;AAAA,UACZ,eAAe;AAAA,QACzB,CAAS;AAED,YAAII,KAAc1rB,EAAM,OAAO0rB,GAAY3rB,CAAS;AAClD;AAAA,MAEJ;AAMA,UAAIA,KAAa,CAACqjB,EAAY,SAAS1kB,GAAQqB,CAAS,GAAG;AACzD,QAAArB,EAAO,YAAY0kB,EAAY,aAAa1kB,GAAQ4sB,GAAc;AAAA,UAChE,YAAY;AAAA,UACZ,eAAe;AAAA,QACzB,CAAS;AACD;AAAA,MACF;AAGA,UAAI1L,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM;AAC7C,MAAAynB,EAAM,sBAAsB;AAC5B,UAAIwF,IAAc5rB,KAAaqjB,EAAY,WAAW1kB,GAAQqB,CAAS;AAEvE,UAAI4rB,GAAa;AACf,QAAI3rB,EAAM,WAAWD,CAAS,IAC5BurB,EAAa,iBAAiBK,EAAY,cAAcA,EAAY,WAAWA,EAAY,gBAAgBA,EAAY,WAAW,IAElIL,EAAa,iBAAiBK,EAAY,gBAAgBA,EAAY,aAAaA,EAAY,cAAcA,EAAY,SAAS;AAGpI,YAAI8B,KAAS9B,EAAY,eAAe;AACxC,QAAA8B,GAAO,wBAAwB9B,EAAY,sBAAsB,KAAKA,CAAW,GACjF5L,GAAe0N,IAAQ;AAAA,UACrB,YAAY;AAAA,UACZ,UAAU7N;AAAA,QACpB,CAAS,GAED,OAAO6N,GAAO;AAAA,MAChB;AACE,QAAAnC,EAAa,gBAAe;AAG9B,iBAAW,MAAM;AACf,QAAAnF,EAAM,sBAAsB;AAAA,MAC9B,CAAC;AAAA,IACH,QAAkB;AAEhB,MAAAA,EAAM,sBAAsB;AAAA,IAC9B;AAAA,EACF,CAAC,GAGDlD,GAAU,MAAM;AACd,IAAIrkB,EAAI,WAAW4rB,KACjB5rB,EAAI,QAAQ,MAAK;AAAA,EAErB,GAAG,CAAC4rB,CAAS,CAAC;AAMd,MAAIoB,IAAuBC,EAAY/M,GAAS,MAAM;AACpD,QAAI;AACF,UAAI,CAACqH,EAAM,eAAe,CAACA,EAAM,uBAAuB,CAAC+N,EAAa,cAAc,SAAS;AAC3F,YAAI5oB,IAAO8X,EAAY,yBAAyB1kB,CAAM,GAClD;AAAA,UACF,eAAAotB;AAAA,QACV,IAAYxgB,GACAsU,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM,GACzC4sB,IAAehgB,EAAK,aAAY;AASpC,YAPIwgB,MAAkBlM,KACpBuG,EAAM,gBAAgB2F,GACtBxH,GAAW,IAAI5lB,GAAQ,EAAI,KAE3B4lB,GAAW,OAAO5lB,CAAM,GAGtB,CAAC4sB;AACH,iBAAOxrB,EAAW,SAASpB,CAAM;AAGnC,YAAI;AAAA,UACF,YAAAqtB;AAAA,UACA,WAAAC;AAAA,QACV,IAAYV,GACAW,IAAuBC,EAAkBxtB,GAAQqtB,CAAU,KAAKI,GAA8BztB,GAAQqtB,CAAU,GAChHK,IAAsBF,EAAkBxtB,GAAQstB,CAAS,KAAKG,GAA8BztB,GAAQstB,CAAS;AAEjH,YAAIC,KAAwBG,GAAqB;AAC/C,cAAIhlB,IAAQgc,EAAY,aAAa1kB,GAAQ4sB,GAAc;AAAA,YACzD,YAAY;AAAA,YACZ,eAAe;AAAA,UAC3B,CAAW;AACD,UAAAxrB,EAAW,OAAOpB,GAAQ0I,CAAK;AAAA,QACjC;AACE,UAAAtH,EAAW,SAASpB,CAAM;AAAA,MAE9B;AAAA,IACF,QAAmB;AAAA,IACnB;AAAA,EACF,GAAG,GAAG,GAAG,CAAC+nB,CAAQ,CAAC,GACf4F,IAA+BhB,GAAQ,MAAMpO,GAAS2O,GAAsB,CAAC,GAAG,CAACA,CAAoB,CAAC,GAKtGU,IAAmBT,EAAY,CAAAnL,MAAS;AAC1C,IAAI,CAAC+F,KAAYyF,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAAC6L,GAAkB7L,GAAOiK,CAAqB,MAIzG0B,EAA6B,MAAK,GAClC6H,EAAa,YAAW;AAAA,EAE5B,GAAG,CAACzN,GAAUkE,CAAqB,CAAC;AAIpC,EAAA5H,GAA0B,MAAM;AAC9B,QAAIxiB,IAAO3B,EAAI;AAEf,WAA4C2B,GAAK,iBAAiB,eAAe+rB,CAAgB,GAE1F,MAAkD/rB,GAAK,oBAAoB,eAAe+rB,CAAgB;AAAA,EACnH,GAAG,CAACjG,GAAYsE,CAAqB,CAAC,GAMtC5H,GAA0B,MAAM;AAC9B,QAAIiG,IAAS5F,EAAY,UAAU1kB,CAAM;AACzC,WAAAsqB,EAAO,SAAS,iBAAiB,mBAAmBqD,CAA4B,GACzE,MAAM;AACX,MAAArD,EAAO,SAAS,oBAAoB,mBAAmBqD,CAA4B;AAAA,IACrF;AAAA,EACF,GAAG,CAACA,CAA4B,CAAC;AACjC,MAAI1c,IAAc8a,EAAS,CAAC/rB,GAAQ,CAAA,CAAE,CAAC;AAEvC,MAAIksB,KAAelsB,EAAO,SAAS,WAAW,KAAK,MAAM,KAAK2B,EAAK,MAAM3B,CAAM,CAAC,EAAE,WAAW,KAAK2B,EAAK,OAAO3B,CAAM,MAAM,MAAM,CAACwsB,GAAa;AAC5I,QAAIrjB,IAAQhJ,EAAO,MAAMH,GAAQ,CAAA,CAAE;AACnC,IAAAiR,EAAY,KAAK;AAAA,MACf,CAACiV,EAAkB,GAAG;AAAA,MACtB,aAAAgG;AAAA,MACA,QAAQ/iB;AAAA,MACR,OAAOA;AAAA,IACb,CAAK;AAAA,EACH;AAEA,SAAoBwb,gBAAAA,EAAM,cAAcmF,GAAgB,UAAU;AAAA,IAChE,OAAO/B;AAAA,EACX,GAAkBpD,gBAAAA,EAAM,cAAciE,GAAgB,UAAU;AAAA,IAC5D,OAAOmD;AAAA,EACX,GAAkBpH,gBAAAA,EAAM,cAAc4H,GAAW,OAAO,OAAO;AAAA,IAC3D,KAAK5E;AAAA,IACL,MAAMI,IAAW,SAAY;AAAA,EACjC,GAAKpB,GAAY;AAAA,IACb,YAAYA,EAAW;AAAA,IACvB,aAAaA,EAAW;AAAA,IACxB,gBAAgBA,EAAW;AAAA,IAC3B,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,iBAAiBoB,IAAW,SAAY;AAAA,IACxC,gCAAgC;AAAA,IAChC,KAAK7nB;AAAA,IACL,OAAO2a,GAAc;AAAA;AAAA,MAEnB,UAAU;AAAA;AAAA,MAEV,SAAS;AAAA;AAAA,MAET,YAAY;AAAA;AAAA,MAEZ,UAAU;AAAA,IAChB,GAAOyR,CAAK;AAAA,IACR,QAAQa,EAAY,CAAAnL,MAAS;AAC3B,MAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,MAAM,MACrF3E,EAAM,eAAc,GACpB0C,EAAY,gBAAgB1kB,GAAQgiB,EAAM,eAAe,MAAM;AAAA,IAEnE,GAAG,CAAC2E,EAAW,MAAM,CAAC;AAAA,IACtB,OAAOwG,EAAY,CAAAnL,MAAS;AAC1B,UAAI,CAAC+F,KAAYyF,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,KAAK,GAAG;AACpG,QAAA3E,EAAM,eAAc,GACpB0C,EAAY,gBAAgB1kB,GAAQgiB,EAAM,eAAe,KAAK;AAC9D,YAAI;AAAA,UACF,WAAA3gB;AAAA,QACV,IAAYrB;AAEJ,YAAIqB;AACF,cAAIC,EAAM,WAAWD,CAAS;AAC5B,YAAAlB,EAAO,eAAeH,CAAM;AAAA,eACvB;AACL,gBAAI6B,IAAOF,EAAK,OAAO3B,GAAQqB,EAAU,OAAO,IAAI;AAEpD,YAAIlB,EAAO,OAAOH,GAAQ6B,CAAI,KAC5BT,EAAW,OAAOpB,CAAM;AAAA,UAE5B;AAAA,MAEJ;AAAA,IACF,GAAG,CAAC+nB,GAAUpB,EAAW,KAAK,CAAC;AAAA,IAC/B,SAASwG,EAAY,CAAAnL,MAAS;AAC5B,UAAI,CAAC+F,KAAY,CAACN,EAAM,uBAAuB+F,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,OAAO,GAAG;AACpI,YAAI/Z,IAAO8X,EAAY,yBAAyB1kB,CAAM;AACtD,QAAAynB,EAAM,gBAAgB7a,EAAK,eAC3BgZ,GAAW,IAAI5lB,GAAQ,EAAI;AAAA,MAC7B;AAAA,IACF,GAAG,CAAC+nB,GAAUpB,EAAW,OAAO,CAAC;AAAA,IACjC,QAAQwG,EAAY,CAAAnL,MAAS;AAC3B,UAAI,EAAA+F,KAAYN,EAAM,uBAAuB,CAAC+F,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAKmM,EAAenM,GAAO2E,EAAW,MAAM,IAQhI;AAAA,YAAI/Z,IAAO8X,EAAY,yBAAyB1kB,CAAM;AAEtD,YAAIynB,EAAM,kBAAkB7a,EAAK,eAIjC;AAAA,cAAI;AAAA,YACF,eAAAwhB;AAAA,UACR,IAAUpM,GACAd,IAAKwD,EAAY,UAAU1kB,GAAQA,CAAM;AAI7C,cAAIouB,MAAkBlN,KAMlB,EAAAmJ,GAAa+D,CAAa,KAAKA,EAAc,aAAa,mBAAmB,IAOjF;AAAA,gBAAIA,KAAiB,QAAQhE,GAAUgE,CAAa,KAAK1J,EAAY,WAAW1kB,GAAQouB,CAAa,GAAG;AACtG,kBAAIvsB,IAAO6iB,EAAY,YAAY1kB,GAAQouB,CAAa;AAExD,kBAAIpF,EAAU,UAAUnnB,CAAI,KAAK,CAAC7B,EAAO,OAAO6B,CAAI;AAClD;AAAA,YAEJ;AAEA,YAAA+jB,GAAW,OAAO5lB,CAAM;AAAA;AAAA;AAAA;AAAA,IAC1B,GAAG,CAAC+nB,GAAUpB,EAAW,MAAM,CAAC;AAAA,IAChC,SAASwG,EAAY,CAAAnL,MAAS;AAC5B,UAAI,CAAC+F,KAAYsG,GAAUruB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,OAAO,KAAKyD,GAAUpI,EAAM,MAAM,GAAG;AACzH,YAAIngB,IAAO6iB,EAAY,YAAY1kB,GAAQgiB,EAAM,MAAM,GACnDlhB,IAAO4jB,EAAY,SAAS1kB,GAAQ6B,CAAI;AAK5C,YAAI1B,EAAO,QAAQH,GAAQc,CAAI,GAAG;AAChC,cAAIwtB,IAAa3sB,EAAK,IAAI3B,GAAQc,CAAI;AAEtC,cAAIwtB,MAAezsB,GAAM;AACvB,gBAAI0sB,IAASpuB,EAAO,MAAMH,GAAQc,CAAI,GAElCuF,IAAMlG,EAAO,IAAIH,GAAQc,CAAI,GAC7BoY,IAAY/Y,EAAO,KAAKH,GAAQ;AAAA,cAClC,IAAIuuB;AAAA,YAClB,CAAa,GACGpV,IAAUhZ,EAAO,KAAKH,GAAQ;AAAA,cAChC,IAAIqG;AAAA,YAClB,CAAa;AAED,gBAAI6S,KAAaC,KAAWpY,EAAK,OAAOmY,EAAU,CAAC,GAAGC,EAAQ,CAAC,CAAC,GAAG;AACjE,kBAAIzQ,IAAQvI,EAAO,MAAMH,GAAQuuB,CAAM;AACvC,cAAAntB,EAAW,OAAOpB,GAAQ0I,CAAK;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG,CAACqf,GAAUpB,EAAW,OAAO,CAAC;AAAA,IACjC,kBAAkBwG,EAAY,CAAAnL,MAAS;AACrC,MAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,gBAAgB,MAC/FgH,EAA6B,MAAK,GAClC,WAAW,MAAM;AACf,QAAAlG,EAAM,eAAegF,EAAe,EAAK,GACzChF,EAAM,cAAc,IACpB5B,GAAa,IAAI7lB,GAAQ,EAAK,GAC9B8lB,GAAsB,IAAI9lB,GAAQ,EAAI;AACtC,YAAIgwB,IAAejK,GAA2B,IAAI/lB,CAAM,KAAK,CAAA;AAG7D,YAAKgwB,EAAa,QAIlB;AAAA,UAAAjK,GAA2B,IAAI/lB,GAAQ,EAAE;AACzC,cAAI;AAAA,YACF,WAAAqB;AAAA,UACZ,IAAcrB;AACJ,UAAAgwB,EAAa,QAAQ,CAAAmE,MAAa;AAChC,gBAAIryB,IAAOqyB,EAAU,KAAK,YACtBjuB,IAAKqqB,GAA4BvwB,GAAQqB,GAAW8yB,CAAS;AACjE,YAAA/yB,EAAW,aAAapB,GAAQkG,CAAE,GAClC/F,EAAO,WAAWH,GAAQ8B,CAAI;AAAA,UAChC,CAAC;AAAA;AAAA,MACH,GAAG6zB,EAAa;AAAA,IAEpB,GAAG,CAAChP,EAAW,gBAAgB,CAAC;AAAA,IAChC,qBAAqBwG,EAAY,CAAAnL,MAAS;AACxC,MAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,mBAAmB,MAClG,CAACc,EAAM,eAAegF,EAAe,EAAI,GACzChF,EAAM,cAAc,IACpB5B,GAAa,IAAI7lB,GAAQ,EAAI;AAAA,IAEjC,GAAG,CAAC2mB,EAAW,mBAAmB,CAAC;AAAA,IACnC,oBAAoBwG,EAAY,CAAAnL,MAAS;AACvC,MAAIwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,kBAAkB,MACjG,CAACc,EAAM,eAAegF,EAAe,EAAI,GACzChF,EAAM,cAAc,IACpB5B,GAAa,IAAI7lB,GAAQ,EAAI;AAAA,IAEjC,GAAG,CAAC2mB,EAAW,kBAAkB,CAAC;AAAA,IAClC,SAASwG,EAAY,CAAAnL,MAAS;AAE5B,MAAAA,EAAM,gBAAgB0J,GAAiB1J,EAAM,aAAa,GAEtDwL,EAAkBxtB,GAAQgiB,EAAM,MAAM,KAAK,CAACmM,EAAenM,GAAO2E,EAAW,OAAO,KAAK,CAACoB,MAC5F/F,EAAM,eAAc,GACpB0C,EAAY,WAAW1kB,GAAQgiB,EAAM,aAAa;AAAA,IAEtD,GAAG,CAAC+F,GAAUpB,EAAW,OAAO,CAAC;AAAA,EACrC,CAAG,GAAGuB,GAAY;AAAA,IACd,aAAAjX;AAAA,IACA,MAAMjR;AAAA,IACN,eAAA6nB;AAAA,IACA,mBAAAzB;AAAA,IACA,YAAAC;AAAA,IACA,WAAWrmB,EAAO;AAAA,EACtB,CAAG,CAAC,CAAC,CAAC;AACN,GAMI61B,KAA8B,gBAAAnN,GAAc,EAAK,GAiBjDoN,KAAoC,gBAAApN,GAAc,EAAE;AAmFxD,SAASqN,GAAmB/1B,GAAQ;AAClC,MAAIg2B,IAAiBjR,GAAO,CAAA,CAAE,EAAE,SAC5BkR,IAAWlR,GAAO;AAAA,IACpB,QAAA/kB;AAAA,EACJ,CAAG,EAAE,SACCk2B,IAAW/I,EAAY,CAAAntB,MAAU;AACnC,IAAAi2B,EAAS,SAASj2B,GAClBg2B,EAAe,QAAQ,CAAAG,MAAYA,EAASn2B,CAAM,CAAC;AAAA,EACrD,GAAG,CAAA,CAAE,GACDo2B,IAAkBzJ,GAAQ,OACrB;AAAA,IACL,UAAU,MAAMsJ,EAAS;AAAA,IACzB,kBAAkB,CAAA5B,OAChB2B,EAAe,KAAK3B,CAAQ,GACrB,MAAM;AACX,MAAA2B,EAAe,OAAOA,EAAe,QAAQ3B,CAAQ,GAAG,CAAC;AAAA,IAC3D;AAAA,EAER,IACK,CAAC2B,GAAgBC,CAAQ,CAAC;AAC7B,SAAO;AAAA,IACL,iBAAAG;AAAA,IACA,UAAAF;AAAA,EACJ;AACA;AAEA,IAAIzhB,KAAY,CAAC,UAAU,YAAY,YAAY,OAAO,GAMtD4hB,KAAQ,CAAA1uB,MAAS;AACnB,MAAI;AAAA,IACF,QAAA3H;AAAA,IACA,UAAAgJ;AAAA,IACA,UAAAktB;AAAA,IACA,OAAAp3B;AAAA,EACJ,IAAM6I,GACA+B,IAAOxF,GAAyByD,GAAO8M,EAAS,GAEhD6hB,IAAavR,GAAO,EAAK,GACzB,CAACkF,GAASsM,CAAU,IAAI5R,EAAM,SAAS,MAAM;AAC/C,QAAI,CAAChjB,EAAK,WAAW7C,CAAK;AACxB,YAAM,IAAI,MAAM,0DAA0D,YAAY,OAAO,KAAK,UAAUA,CAAK,CAAC,CAAC;AAGrH,QAAI,CAACqB,EAAO,SAASH,CAAM;AACzB,YAAM,IAAI,MAAM,2CAA2C,GAAG,OAAO,KAAK,UAAUA,CAAM,CAAC,CAAC;AAG9F,WAAAA,EAAO,WAAWlB,GAClB,OAAO,OAAOkB,GAAQ0J,CAAI,GACnB,CAAC1J,CAAM;AAAA,EAChB,CAAC,GACG;AAAA,IACF,iBAAAo2B;AAAA,IACA,UAAUI;AAAA,EACd,IAAMT,GAAmB/1B,CAAM,GACzBy2B,IAAkBtJ,EAAY,MAAM;AACtC,IAAA+I,EAASl2B,EAAO,QAAQ,GACxBu2B,EAAW,CAACv2B,CAAM,CAAC,GACnBw2B,EAAqBx2B,CAAM;AAAA,EAC7B,GAAG,CAACk2B,CAAQ,CAAC;AACb,EAAAlQ,GAAoB,IAAIhmB,GAAQy2B,CAAe,GAC/ClS,GAAU,MACD,MAAM;AACX,IAAAyB,GAAoB,IAAIhmB,GAAQ,MAAM;AAAA,IAAC,CAAC,GACxCs2B,EAAW,UAAU;AAAA,EACvB,GACC,CAAA,CAAE;AACL,MAAI,CAACI,GAAWC,CAAY,IAAInP,GAAS9C,EAAY,UAAU1kB,CAAM,CAAC;AACtE,SAAAukB,GAAU,MAAM;AACd,IAAAoS,EAAajS,EAAY,UAAU1kB,CAAM,CAAC;AAAA,EAC5C,CAAC,GACDqkB,GAA0B,MAAM;AAC9B,QAAI7lB,IAAK,MAAMm4B,EAAajS,EAAY,UAAU1kB,CAAM,CAAC;AAEzD,oBAAS,iBAAiB,SAASxB,GAAI,EAAI,GACpC,MAAM,SAAS,oBAAoB,SAASA,GAAI,EAAI;AAAA,EAC7D,GAAG,CAAA,CAAE,GACL6lB,GAA0B,MAAM;AAC9B,QAAI7lB,IAAK,MAAMm4B,EAAajS,EAAY,UAAU1kB,CAAM,CAAC;AAEzD,oBAAS,iBAAiB,QAAQxB,GAAI,EAAI,GACnC,MAAM;AACX,eAAS,oBAAoB,SAASA,GAAI,EAAI,GAC9C,SAAS,oBAAoB,QAAQA,GAAI,EAAI;AAAA,IAC/C;AAAA,EACF,GAAG,CAAA,CAAE,GACemmB,gBAAAA,EAAM,cAAcmR,GAAqB,UAAU;AAAA,IACrE,OAAOM;AAAA,EACX,GAAkBzR,gBAAAA,EAAM,cAAcoF,GAAa,UAAU;AAAA,IACzD,OAAOE;AAAA,EACX,GAAkBtF,gBAAAA,EAAM,cAAc8D,GAAc,UAAU;AAAA,IAC1D,OAAOzoB;AAAA,EACX,GAAkB2kB,gBAAAA,EAAM,cAAckR,GAAe,UAAU;AAAA,IAC3D,OAAOa;AAAA,EACX,GAAK1tB,CAAQ,CAAC,CAAC,CAAC;AAChB,GAqBI4tB,KAAmB,CAAC5E,GAAM6E,MAAgB;AAC5C,MAAIxlB,KAAUwlB,EAAY,MAAMA,EAAY,UAAU;AACtD,SAAO7E,EAAK,OAAO3gB,KAAU2gB,EAAK,UAAU3gB;AAC9C,GAEIylB,KAAoB,CAAC92B,GAAQ+2B,GAAQC,MAAW;AAClD,MAAIC,IAAQvS,EAAY,WAAW1kB,GAAQ+2B,CAAM,EAAE,sBAAqB,GACpEG,IAAQxS,EAAY,WAAW1kB,GAAQg3B,CAAM,EAAE,sBAAqB;AACxE,SAAOJ,GAAiBK,GAAOC,CAAK,KAAKN,GAAiBM,GAAOD,CAAK;AACxE,GAWIE,KAAuB,CAACn3B,GAAQo3B,MAAgB;AAClD,MAAIC,IAAsBl3B,EAAO,MAAMH,GAAQsB,EAAM,IAAI81B,CAAW,CAAC,GACjEE,IAAY,MAAM,KAAKn3B,EAAO,UAAUH,GAAQ;AAAA,IAClD,IAAIo3B;AAAA,EACR,CAAG,CAAC,GACE1yB,IAAO,GACPE,IAAQ0yB,EAAU,QAClBjmB,IAAS,KAAK,MAAMzM,IAAQ,CAAC;AAEjC,MAAIkyB,GAAkB92B,GAAQG,EAAO,MAAMH,GAAQs3B,EAAU5yB,CAAI,CAAC,GAAG2yB,CAAmB;AACtF,WAAOl3B,EAAO,MAAMH,GAAQs3B,EAAU5yB,CAAI,GAAG2yB,CAAmB;AAGlE,MAAIC,EAAU,SAAS;AACrB,WAAOn3B,EAAO,MAAMH,GAAQs3B,EAAUA,EAAU,SAAS,CAAC,GAAGD,CAAmB;AAGlF,SAAOhmB,MAAWimB,EAAU,UAAUjmB,MAAW3M;AAC/C,IAAIoyB,GAAkB92B,GAAQG,EAAO,MAAMH,GAAQs3B,EAAUjmB,CAAM,CAAC,GAAGgmB,CAAmB,IACxFzyB,IAAQyM,IAER3M,IAAO2M,GAGTA,IAAS,KAAK,OAAO3M,IAAOE,KAAS,CAAC;AAGxC,SAAOzE,EAAO,MAAMH,GAAQs3B,EAAU1yB,CAAK,GAAGyyB,CAAmB;AACnE,GAWIE,KAAY,CAAAv3B,MAAU;AACxB,MAAI3E,IAAI2E,GACJ;AAAA,IACF,OAAAw3B;AAAA,IACA,UAAAtB;AAAA,IACA,gBAAAuB;AAAA,EACJ,IAAMp8B;AAGJ,SAAAqqB,GAAyB,IAAIrqB,GAAG,oBAAI,QAAO,CAAE,GAE7CA,EAAE,iBAAiB,CAAAoG,MAAQ;AACzB,QAAIA,MAAS;AACX,aAAOg2B,EAAeh2B,CAAI;AAG5B,QAAIzB,EAAO,aAAasB,EAAM,YAAYtB,EAAO,SAAS,GAAG;AAC3D,UAAI03B,IAAmBv3B,EAAO,MAAMH,GAAQ;AAAA,QAC1C,OAAO,CAAA5E,MAAK+E,EAAO,QAAQH,GAAQ5E,CAAC;AAAA,QACpC,IAAI4E,EAAO;AAAA,MACnB,CAAO;AAED,UAAI03B,GAAkB;AACpB,YAAI,CAAA,EAAGC,CAAe,IAAID,GACtBE,IAAqBz3B,EAAO,MAAMH,GAAQ23B,GAAiB33B,EAAO,UAAU,MAAM,GAClF63B,IAAmBV,GAAqB97B,GAAGu8B,CAAkB;AAEjE,QAAKt2B,EAAM,YAAYu2B,CAAgB,KACrCz2B,EAAW,OAAOpB,GAAQ;AAAA,UACxB,IAAI63B;AAAA,QAChB,CAAW;AAAA,MAEL;AAAA,IACF;AAAA,EACF,GAEAx8B,EAAE,QAAQ,CAAA4E,MAAM;AACd,QAAIoK,IAAU,CAAA;AAEd,YAAQpK,EAAG,MAAI;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,YACH;AACE,iBAAS,CAAC4B,GAAMf,CAAI,KAAKX,EAAO,OAAO9E,GAAG;AAAA,UACxC,IAAI4E,EAAG;AAAA,QACnB,CAAW,GAAG;AACF,cAAIpB,IAAM6lB,EAAY,QAAQrpB,GAAGwG,CAAI;AACrC,UAAAwI,EAAQ,KAAK,CAACvJ,GAAMjC,CAAG,CAAC;AAAA,QAC1B;AAEA;AAAA,MACF;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,cACH;AACE,iBAAS,CAACuK,GAAOjI,CAAK,KAAKhB,EAAO,OAAO9E,GAAG;AAAA,UAC1C,IAAI0F,EAAK,OAAOd,EAAG,IAAI;AAAA,QACnC,CAAW,GAAG;AACF,cAAIyQ,IAAOgU,EAAY,QAAQrpB,GAAG+N,CAAK;AAEvC,UAAAiB,EAAQ,KAAK,CAAClJ,GAAOuP,CAAI,CAAC;AAAA,QAC5B;AAEA;AAAA,MACF;AAAA,MAEF,KAAK,aACH;AACE,iBAAS,CAACmB,GAAQnP,CAAM,KAAKvC,EAAO,OAAO9E,GAAG;AAAA,UAC5C,IAAI0F,EAAK,OAAOA,EAAK,OAAOd,EAAG,IAAI,GAAGc,EAAK,OAAOd,EAAG,OAAO,CAAC;AAAA,QACzE,CAAW,GAAG;AACF,cAAIgS,IAAQyS,EAAY,QAAQrpB,GAAGwW,CAAM;AAEzC,UAAAxH,EAAQ,KAAK,CAAC3H,GAAQuP,CAAK,CAAC;AAAA,QAC9B;AAEA;AAAA,MACF;AAAA,IACR;AAEI,IAAAulB,EAAMv3B,CAAE;AAER,aAAS,CAAC6C,GAAQyP,CAAK,KAAKlI,GAAS;AACnC,UAAI,CAAC6H,CAAM,IAAI/R,EAAO,KAAK9E,GAAGyH,CAAM;AACpC,MAAA2iB,GAAY,IAAIvT,GAAQK,CAAK;AAAA,IAC/B;AAAA,EACF,GAEAlX,EAAE,kBAAkB,CAAAyyB,MAAQ;AAC1B,QAAI;AAAA,MACF,WAAAzsB;AAAA,IACN,IAAQhG;AAEJ,QAAKgG,GAIL;AAAA,UAAI,CAAC8H,GAAO9C,CAAG,IAAI/E,EAAM,MAAMD,CAAS,GACpC6X,IAAY/Y,EAAO,KAAK9E,GAAG;AAAA,QAC7B,IAAI8N,EAAM;AAAA,MAChB,CAAK,GACGgQ,IAAUhZ,EAAO,KAAK9E,GAAG;AAAA,QAC3B,IAAIgL,EAAI;AAAA,MACd,CAAK;AAED,UAAI,EAAA/E,EAAM,YAAYD,CAAS,KAAK,CAAC6X,IAMrC;AAAA,YAAI4V,IAAWpK,EAAY,WAAWrpB,GAAGgG,CAAS,GAC9CuxB,IAAW9D,EAAS,cAAa,GACjCgJ,IAASlF,EAAS,WAAW,CAAC;AAUlC,YARAA,EAAS,WAAW,QAAQ,CAAA/wB,MAAQ;AAClC,UAAIA,EAAK,eAAeA,EAAK,YAAY,KAAI,MAAO,OAClDi2B,IAASj2B;AAAA,QAEb,CAAC,GAIGsX,GAAS;AACX,cAAI,CAAC/B,CAAQ,IAAI+B,GACb3d,IAAIszB,EAAS,WAAU,GACvB3D,IAAUzG,EAAY,UAAUrpB,GAAG+b,CAAQ;AAC/C,UAAA5b,EAAE,YAAY2vB,CAAO,GACrByH,IAAWp3B,EAAE,cAAa;AAAA,QAC5B;AAmBA,YAbI0d,MACF4e,IAASlF,EAAS,cAAc,qBAAqB,IAKvD,MAAM,KAAKA,EAAS,iBAAiB,yBAAyB,CAAC,EAAE,QAAQ,CAAAmF,MAAM;AAC7E,cAAIC,IAAYD,EAAG,aAAa,uBAAuB,MAAM;AAC7D,UAAAA,EAAG,cAAcC,IAAY;AAAA,IAAO;AAAA,QACtC,CAAC,GAIGxN,GAAUsN,CAAM,GAAG;AACrB,cAAIjuB,IAAOiuB,EAAO,cAAc,cAAc,MAAM;AAGpD,UAAAjuB,EAAK,MAAM,aAAa,OACxBA,EAAK,YAAYiuB,CAAM,GACvBlF,EAAS,YAAY/oB,CAAI,GACzBiuB,IAASjuB;AAAA,QACX;AAEA,YAAIjI,IAAWvG,EAAE,YAAW,GACxBygB,IAAS,KAAK,UAAUla,CAAQ,GAChCq2B,IAAU,OAAO,KAAK,mBAAmBnc,CAAM,CAAC;AACpD,QAAAgc,EAAO,aAAa,uBAAuBG,CAAO,GAClDnK,EAAK,QAAQ,gCAAgCmK,CAAO;AAEpD,YAAIC,IAAMtF,EAAS,cAAc,cAAc,KAAK;AACpD,eAAAsF,EAAI,YAAYtF,CAAQ,GACxBsF,EAAI,aAAa,UAAU,MAAM,GACjCtF,EAAS,cAAc,KAAK,YAAYsF,CAAG,GAC3CpK,EAAK,QAAQ,aAAaoK,EAAI,SAAS,GACvCpK,EAAK,QAAQ,cAAc5C,GAAagN,CAAG,CAAC,GAC5CtF,EAAS,cAAc,KAAK,YAAYsF,CAAG,GACpCpK;AAAA;AAAA;AAAA,EACT,GAEAzyB,EAAE,aAAa,CAAAyyB,MAAQ;AACrB,IAAKzyB,EAAE,mBAAmByyB,CAAI,KAC5BzyB,EAAE,eAAeyyB,CAAI;AAAA,EAEzB,GAEAzyB,EAAE,qBAAqB,CAAAyyB,MAAQ;AAI7B,QAAIlsB,IAAWksB,EAAK,QAAQ,8BAA8B,KAAKvC,GAA0BuC,CAAI;AAE7F,QAAIlsB,GAAU;AACZ,UAAIu2B,IAAU,mBAAmB,OAAO,KAAKv2B,CAAQ,CAAC,GAClDw2B,IAAS,KAAK,MAAMD,CAAO;AAC/B,aAAA98B,EAAE,eAAe+8B,CAAM,GAChB;AAAA,IACT;AAEA,WAAO;AAAA,EACT,GAEA/8B,EAAE,iBAAiB,CAAAyyB,MAAQ;AACzB,QAAIhsB,IAAOgsB,EAAK,QAAQ,YAAY;AAEpC,QAAIhsB,GAAM;AACR,UAAIu2B,IAAQv2B,EAAK,MAAM,YAAY,GAC/BuU,IAAQ;AAEZ,eAASiiB,KAAQD;AACf,QAAIhiB,KACFjV,EAAW,WAAW/F,GAAG;AAAA,UACvB,QAAQ;AAAA,QACpB,CAAW,GAGHA,EAAE,WAAWi9B,CAAI,GACjBjiB,IAAQ;AAGV,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,GAEAhb,EAAE,WAAW,MAAM;AAKjBk9B,IAAAA,GAAS,wBAAwB,MAAM;AACrC,UAAI9B,IAAkBzQ,GAAoB,IAAI3qB,CAAC;AAE/C,MAAIo7B,KACFA,EAAe,GAGjBP,EAAQ;AAAA,IACV,CAAC;AAAA,EACH,GAEO76B;AACT,GAGIm9B,KAAW/U,KAAamS,KAAkB/J,ICrzI1C4M,KAAU;AAAA;AAAA;AAAA;AAAA,EAIZ,UAAU35B,GAAO;AACf,WAAO7D,GAAc6D,CAAK,KAAK,MAAM,QAAQA,EAAM,KAAK,KAAK,MAAM,QAAQA,EAAM,KAAK,MAAMA,EAAM,MAAM,WAAW,KAAK+J,GAAU,gBAAgB/J,EAAM,MAAM,CAAC,EAAE,UAAU,OAAOA,EAAM,MAAM,WAAW,KAAK+J,GAAU,gBAAgB/J,EAAM,MAAM,CAAC,EAAE,UAAU;AAAA,EACnQ;AACF,GAMI45B,KAAS,oBAAI,QAAO,GACpBC,KAAU,oBAAI,QAAO,GACrBC,KAAiB,oBAAI,QAAO,GAE5BC,KAAgB;AAAA;AAAA;AAAA;AAAA,EAIlB,gBAAgB/5B,GAAO;AACrB,WAAO25B,GAAQ,UAAU35B,EAAM,OAAO,KAAKqB,EAAO,SAASrB,CAAK;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAIA,UAAUkB,GAAQ;AAChB,WAAO24B,GAAQ,IAAI34B,CAAM;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgBA,GAAQ;AACtB,WAAO44B,GAAe,IAAI54B,CAAM;AAAA,EAClC;AAAA,EACA,iBAAiBA,GAAQlB,GAAO;AAC9B,IAAA85B,GAAe,IAAI54B,GAAQlB,CAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAIA,SAASkB,GAAQ;AACf,WAAO04B,GAAO,IAAI14B,CAAM;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAIA,KAAKA,GAAQ;AACX,IAAAA,EAAO,KAAI;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAIA,KAAKA,GAAQ;AACX,IAAAA,EAAO,KAAI;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYA,GAAQxB,GAAI;AACtB,QAAI6D,IAAOw2B,GAAc,UAAU74B,CAAM;AACzC,IAAA24B,GAAQ,IAAI34B,GAAQ,EAAI,GACxBxB,EAAE,GACFm6B,GAAQ,IAAI34B,GAAQqC,CAAI;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAarC,GAAQxB,GAAI;AACvB,QAAI6D,IAAOw2B,GAAc,UAAU74B,CAAM;AACzC,IAAA24B,GAAQ,IAAI34B,GAAQ,EAAI,GACxB44B,GAAe,IAAI54B,GAAQ,EAAI,GAC/BxB,EAAE,GACFm6B,GAAQ,IAAI34B,GAAQqC,CAAI,GACxBu2B,GAAe,OAAO54B,CAAM;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,eAAeA,GAAQxB,GAAI;AACzB,QAAI6D,IAAOw2B,GAAc,UAAU74B,CAAM;AACzC,IAAA24B,GAAQ,IAAI34B,GAAQ,EAAK,GACzBxB,EAAE,GACFm6B,GAAQ,IAAI34B,GAAQqC,CAAI;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAcrC,GAAQxB,GAAI;AACxB,QAAI6D,IAAOw2B,GAAc,SAAS74B,CAAM;AACxC,IAAA04B,GAAO,IAAI14B,GAAQ,EAAK;AACxB,QAAI;AACF,MAAAxB,EAAE;AAAA,IACJ,UAAC;AACC,MAAAk6B,GAAO,IAAI14B,GAAQqC,CAAI;AAAA,IACzB;AAAA,EACF;AACF,GAWIy2B,KAAc,CAAA94B,MAAU;AAC1B,MAAI3E,IAAI2E,GACJ;AAAA,IACF,OAAAw3B;AAAA,EACJ,IAAMn8B;AACJ,SAAAA,EAAE,UAAU;AAAA,IACV,OAAO,CAAA;AAAA,IACP,OAAO,CAAA;AAAA,EACX,GACEA,EAAE,OAAO,MAAM;AACb,QAAI;AAAA,MACF,SAAA09B;AAAA,IACN,IAAQ19B,GACA;AAAA,MACF,OAAA29B;AAAA,IACN,IAAQD;AACJ,QAAIC,EAAM,SAAS,GAAG;AACpB,UAAIC,IAAQD,EAAMA,EAAM,SAAS,CAAC;AAClC,MAAIC,EAAM,mBACR73B,EAAW,aAAa/F,GAAG49B,EAAM,eAAe,GAElDJ,GAAc,cAAcx9B,GAAG,MAAM;AACnC,QAAA8E,EAAO,mBAAmB9E,GAAG,MAAM;AACjC,mBAAS4E,KAAMg5B,EAAM;AACnB,YAAA59B,EAAE,MAAM4E,CAAE;AAAA,QAEd,CAAC;AAAA,MACH,CAAC,GACD84B,EAAQ,MAAM,IAAG,GACjB19B,EAAE,aAAa,SAAS49B,CAAK;AAAA,IAC/B;AAAA,EACF,GACA59B,EAAE,OAAO,MAAM;AACb,QAAI;AAAA,MACF,SAAA09B;AAAA,IACN,IAAQ19B,GACA;AAAA,MACF,OAAA69B;AAAA,IACN,IAAQH;AACJ,QAAIG,EAAM,SAAS,GAAG;AACpB,UAAID,IAAQC,EAAMA,EAAM,SAAS,CAAC;AAClC,MAAAL,GAAc,cAAcx9B,GAAG,MAAM;AACnC,QAAA8E,EAAO,mBAAmB9E,GAAG,MAAM;AACjC,cAAI89B,IAAaF,EAAM,WAAW,IAAIpwB,GAAU,OAAO,EAAE,QAAO;AAChE,mBAAS5I,KAAMk5B;AACb,YAAA99B,EAAE,MAAM4E,CAAE;AAEZ,UAAIg5B,EAAM,mBACR73B,EAAW,aAAa/F,GAAG49B,EAAM,eAAe;AAAA,QAEpD,CAAC;AAAA,MACH,CAAC,GACD59B,EAAE,aAAa,SAAS49B,CAAK,GAC7BF,EAAQ,MAAM,IAAG;AAAA,IACnB;AAAA,EACF,GACA19B,EAAE,QAAQ,CAAA4E,MAAM;AACd,QAAI;AAAA,MACF,YAAAm5B;AAAA,MACA,SAAAL;AAAA,IACN,IAAQ19B,GACA;AAAA,MACF,OAAA69B;AAAA,IACN,IAAQH,GACAM,IAAYH,EAAMA,EAAM,SAAS,CAAC,GAClCI,IAASD,KAAaA,EAAU,WAAWA,EAAU,WAAW,SAAS,CAAC,GAC1EE,IAAOV,GAAc,SAASx9B,CAAC,GAC/Bm+B,IAAQX,GAAc,UAAUx9B,CAAC;AAIrC,QAHIk+B,KAAQ,SACVA,IAAOE,GAAWx5B,CAAE,IAElBs5B,GAAM;AAcR,UAbIC,KAAS,SACPH,KAAa,OACfG,IAAQ,KACCJ,EAAW,WAAW,IAC/BI,IAAQ,KAERA,IAAQE,GAAYz5B,GAAIq5B,CAAM,IAG9BT,GAAc,gBAAgBx9B,CAAC,MACjCm+B,IAAQ,IACRX,GAAc,iBAAiBx9B,GAAG,MAAS,IAEzCg+B,KAAaG;AACf,QAAAH,EAAU,WAAW,KAAKp5B,CAAE;AAAA,WACvB;AACL,YAAIg5B,IAAQ;AAAA,UACV,YAAY,CAACh5B,CAAE;AAAA,UACf,iBAAiB5E,EAAE;AAAA,QAC7B;AACQ,QAAAA,EAAE,aAAa,SAAS49B,CAAK;AAAA,MAC/B;AACA,aAAOC,EAAM,SAAS;AACpB,QAAAA,EAAM,MAAK;AAEb,MAAAH,EAAQ,QAAQ,CAAA;AAAA,IAClB;AACA,IAAAvB,EAAMv3B,CAAE;AAAA,EACV,GACA5E,EAAE,eAAe,CAACs+B,GAAOV,MAAU;AACjC,IAAA59B,EAAE,QAAQs+B,CAAK,EAAE,KAAKV,CAAK;AAAA,EAC7B,GACO59B;AACT,GAIIq+B,KAAc,CAACz5B,GAAIoC,MACjB,GAAAA,KAAQpC,EAAG,SAAS,iBAAiBoC,EAAK,SAAS,iBAAiBpC,EAAG,WAAWoC,EAAK,SAASA,EAAK,KAAK,UAAUtB,EAAK,OAAOd,EAAG,MAAMoC,EAAK,IAAI,KAGlJA,KAAQpC,EAAG,SAAS,iBAAiBoC,EAAK,SAAS,iBAAiBpC,EAAG,SAASA,EAAG,KAAK,WAAWoC,EAAK,UAAUtB,EAAK,OAAOd,EAAG,MAAMoC,EAAK,IAAI,IAQlJo3B,KAAa,CAACx5B,GAAIoC,MAChBpC,EAAG,SAAS;;;;;;;;;;;;ACjOlB,MAAI25B,IAAkB;AAOtB,EAAAC,KAAiBC;AAUjB,WAASA,EAAWhe,GAAQ;AAC1B,QAAIzX,IAAM,KAAKyX,GACXvU,IAAQqyB,EAAgB,KAAKv1B,CAAG;AAEpC,QAAI,CAACkD;AACH,aAAOlD;AAGT,QAAI01B,GACAC,IAAO,IACPntB,IAAQ,GACRotB,IAAY;AAEhB,SAAKptB,IAAQtF,EAAM,OAAOsF,IAAQxI,EAAI,QAAQwI,KAAS;AACrD,cAAQxI,EAAI,WAAWwI,CAAK,GAAC;AAAA,QAC3B,KAAK;AACH,UAAAktB,IAAS;AACT;AAAA,QACF,KAAK;AACH,UAAAA,IAAS;AACT;AAAA,QACF,KAAK;AACH,UAAAA,IAAS;AACT;AAAA,QACF,KAAK;AACH,UAAAA,IAAS;AACT;AAAA,QACF,KAAK;AACH,UAAAA,IAAS;AACT;AAAA,QACF;AACE;AAAA,MACR;AAEI,MAAIE,MAAcptB,MAChBmtB,KAAQ31B,EAAI,UAAU41B,GAAWptB,CAAK,IAGxCotB,IAAYptB,IAAQ,GACpBmtB,KAAQD;AAAA,IACZ;AAEE,WAAOE,MAAcptB,IACjBmtB,IAAO31B,EAAI,UAAU41B,GAAWptB,CAAK,IACrCmtB;AAAA,EACN;;;;mCCrEa7Q,KAAU;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX,GAGa+Q,KAAkB;AAAA,EAC7B,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AACb,GAGaC,KAAa;AAAA,EACxB,YAAY;AAAA,EACZ,GAAG;AAAA,EACH,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,GAAG;AACL,GAEaC,KAAY;AAAA,EACvB,QAAQ;AAAA,EACR,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAG;AACL,GAGaC,KAAqB;AAAA,EAChC,eAAe;AAAA,EACf,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AACb,GAEaC,KAAmB;AAAA,EAC9BD,GAAmB;AAAA,EACnBA,GAAmB;AACrB,GAEaE,KAAoB;AAAA,EAC/BF,GAAmB;AAAA,EACnBA,GAAmB;AACrB,GC7CaG,KAAoC;AAAA,EAC/C;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAAA,EACd;AAEJ,GASaC,KAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GCpFMC,KAAyB;AAAA,GAGlBC,KAAmB,MAAoB;AAAA,EAClD;AAAA,IACE,MAAM;AAAA,IACN,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,EAAA;AAE3B,GAGaC,KAAS,CAAC97B,MACdA,EAAM,IAAI+7B,EAAa,EAAE,KAAK,EAAE,GAGnCA,KAAgB,CAACh5B,MAA4B;AACjD,MAAIN,EAAK,OAAOM,CAAI,GAAG;AACrB,UAAM4wB,IAAW5wB;AACjB,QAAIia,IAASge,GAAWrH,EAAS,IAAI;AAGrC,WAAIA,EAAS,SACX3W,IAAS,WAAWA,CAAM,cAExB2W,EAAS,SACX3W,IAAS,SAASA,CAAM,YAEtB2W,EAAS,WACX3W,IAAS,OAAOA,CAAM,UAEpB2W,EAAS,cACX3W,IAAS,MAAMA,CAAM,SAEnB2W,EAAS,gBACX3W,IAAS,QAAQA,CAAM,WAErB2W,EAAS,cACX3W,IAAS,QAAQA,CAAM,WAErB2W,EAAS,kBACX3W,IAAS,QAAQA,CAAM,WAIzBA,IAASA,EAAO,QAAQ,IAAI,OAAO4e,IAAwB,GAAG,GAAG,MAAM,GAEhE5e;AAAA,EACT;AAEA,QAAM9S,IAAWnH,EAAK,SAAS,IAAIg5B,EAAa,EAAE,KAAK,EAAE,GACnD/yB,IAAUjG;AAEhB,UAAQiG,EAAQ,MAAA;AAAA,IACd,KAAK;AACH,aAAO,eAAekB,CAAQ;AAAA,IAChC,KAAK;AACH,aAAO,MAAMA,CAAQ;AAAA,IACvB,KAAK;AACH,aAAO,cAAcA,CAAQ;AAAA,IAC/B,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK;AACH,aAAO,OAAOA,CAAQ;AAAA,IACxB,KAAK,QAAQ;AACX,UAAI8xB,IAAW;AACf,UAAIhzB,EAAQ,KAAK;AAEf,cAAMizB,IAAeC,GAAYlzB,EAAQ,GAAG;AAC5C,QAAAgzB,IAAW,UAAUhB,GAAWiB,CAAY,CAAC;AAAA,MAC/C;AAEA,UAAIE,IAAmB;AACvB,UACEnzB,EAAQ,kBACR,OAAOA,EAAQ,kBAAmB;AAElC,mBAAW,CAACjJ,GAAKC,CAAK,KAAK,OAAO,QAAQgJ,EAAQ,cAAc;AAE9D,UAAKjJ,EAAI,YAAA,EAAc,WAAW,IAAI,MACpCo8B,KAAoB,IAAInB,GAAWj7B,CAAG,CAAC,KAAKi7B,GAAW,OAAOh7B,CAAK,CAAC,CAAC;AAK3E,aAAO,KAAKg8B,CAAQ,GAAGG,CAAgB,IAAIjyB,CAAQ;AAAA,IACrD;AAAA,IACA;AACE,aAAOA;AAAA,EAAA;AAEb,GAGakyB,KAAW,CAAClB,MAA+B;AACtD,MAAI,CAACA,KAAQA,EAAK,KAAA,MAAW;AAC3B,WAAOW,GAAA;AAGT,MAAI;AAEF,QACEX,EAAK,SAAS,KAAK,KACnBA,EAAK,SAAS,IAAI,KAClBA,EAAK,SAAS,OAAO,KACrBA,EAAK,SAAS,cAAc,KAC5BA,EAAK,SAAS,MAAM,KACpBA,EAAK,SAAS,MAAM,GACpB;AAEA,YAAMmB,IADW,IAAI,UAAA,EAAY,gBAAgBnB,GAAM,WAAW,EAC5C,MAEhBllB,IAAQ,MAAM,KAAKqmB,EAAK,UAAU,EACrC,IAAIC,EAAe,EACnB,OAAO,OAAO;AAGjB,aAAOC,GAAuBvmB,CAAK;AAAA,IACrC;AAEE,aAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,UAAU,CAAC,EAAE,MAAMklB,GAAM;AAAA,QAAA;AAAA,MAC3B;AAAA,EAGN,SAASsB,GAAO;AACd,mBAAQ,KAAK,yBAAyBA,CAAK,GACpCX,GAAA;AAAA,EACT;AACF,GAEMS,KAAkB,CAACv5B,MAA2C;AAClE,MAAIA,EAAK,aAAa,KAAK;AAGzB,YAFaA,EAAK,eAAe,IAErB,QAAQ,gBAAgB64B,EAAsB;AAG5D,MAAI74B,EAAK,aAAa,KAAK;AACzB,WAAO;AAGT,QAAMiG,IAAUjG,GACV05B,IAAUzzB,EAAQ,QAAQ,YAAA,GAC1BkB,IAAW,MAAM,KAAKlB,EAAQ,UAAU,EAC3C,IAAIszB,EAAe,EACnB,OAAO,OAAO;AAGjB,MAAIG,KAAWpB,IAAY;AACzB,UAAMj1B,IAAOi1B,GAAWoB,CAAkC,GACpDC,IAA8B,EAAE,MAAAt2B,GAAM,UAAU,CAAA,EAAC;AAGvD,QAAIA,MAAS,QAAQ;AACnB,YAAMu2B,IAAO3zB,EAAQ,aAAa,MAAM;AACxC,MAAI2zB,MACFD,EAAa,MAAMC;AAIrB,YAAMC,IAAgC,CAAA;AACtC,YAAM,KAAK5zB,EAAQ,UAAU,EAAE,QAAQ,CAACopB,MAAS;AAC/C,QAAIA,EAAK,SAAS,UAAU,CAACA,EAAK,KAAK,YAAA,EAAc,WAAW,IAAI,MAClEwK,EAAMxK,EAAK,IAAI,IAAIA,EAAK;AAAA,MAE5B,CAAC,GACG,OAAO,KAAKwK,CAAK,EAAE,SAAS,MAC9BF,EAAa,iBAAiBE;AAAA,IAElC;AAGA,WAAAF,EAAa,WAAWG,GAAgB3yB,CAAQ,GACzCwyB;AAAA,EACT;AAGA,MAAID,KAAWnB,IAAW;AACxB,UAAMwB,IAAWxB,GAAUmB,CAAiC;AAE5D,WAAO,EAAE,MADWM,GAAwB7yB,CAAQ,GACxB,CAAC4yB,CAAQ,GAAG,GAAA;AAAA,EAC1C;AAGA,SAAIL,MAAY,SAEP,EAAE,MADWM,GAAwB7yB,CAAQ,EACrC8yB,IAKV,EAAE,MADWD,GAAwB7yB,CAAQ,EACrC;AACjB,GAEM2yB,KAAkB,CACtB3yB,MACmC;AACnC,QAAM+yB,IAA4C,CAAA;AAElD,aAAW95B,KAAS+G;AAClB,IAAI,OAAO/G,KAAU,WACfA,EAAM,UACR85B,EAAU,KAAK,EAAE,MAAM95B,EAAA,CAAO,KAEvBA,KAASV,EAAK,OAAOU,CAAK,KAE1BA,KAAS+5B,EAAa,UAAU/5B,CAAK,MAE9C85B,EAAU,KAAK95B,CAAsB;AAMzC,SAAI85B,EAAU,WAAW,KACvBA,EAAU,KAAK,EAAE,MAAM,GAAA,CAAI,GAGtBA;AACT,GAEME,KAAqB,CAACn0B,MACnBA,EAAQ,SACZ,IAAI,CAAC7F,MACAV,EAAK,OAAOU,CAAK,IACZA,EAAM,OACJ+5B,EAAa,UAAU/5B,CAAK,IAC9Bg6B,GAAmBh6B,CAAK,IAE1B,EACR,EACA,KAAK,EAAE,GAGN45B,KAA0B,CAC9B7yB,MAEOA,EACJ,OAAO,OAAO,EACd,IAAI,CAAC/G,MACA,OAAOA,KAAU,WACZA,IACEA,KAAS,OAAOA,KAAU,YAAY,UAAUA,IAClDA,EAAM,OACJA,KAAS,OAAOA,KAAU,YAAY,cAAcA,IACtDg6B,GAAmBh6B,CAAqB,IAE1C,OAAOA,KAAS,EAAE,CAC1B,EACA,KAAK,EAAE,GAGN+4B,KAAc,CAACkB,MAAwB;AAC3C,QAAMC,IAAU,OAAOD,CAAG,EAAE,KAAA,EAAO,YAAA;AACnC,SACEC,EAAQ,WAAW,aAAa,KAChCA,EAAQ,WAAW,OAAO,KAC1BA,EAAQ,WAAW,WAAW,IAEvB,MAEF,OAAOD,CAAG;AACnB,GC5Qab,KAAyB,CAACv8B,MACjC,CAAC,MAAM,QAAQA,CAAK,KAIpBA,EAAM,WAAW,IACZ67B,GAAA,IAGF77B,EAAM,IAAI,CAAC+C,MACXm6B,EAAa,UAAUn6B,CAAI,IAO5B,CAACA,EAAK,YAAYA,EAAK,SAAS,WAAW,IACtC,EAAE,GAAGA,GAAM,UAAU,CAAC,EAAE,MAAM,GAAA,CAAI,EAAA,IAGpCA,IAVE;AAAA,EACL,MAAM;AAAA,EACN,UAAU,CAAC,EAAE,MAAM,OAAOA,CAAI,GAAG;AAAA,CAStC,GAIGu6B,KAAQ,CAACt6B,MAA0B;AACvC,MAAI;AACF,UAAMo6B,IAAM,IAAI,IAAIp6B,CAAI;AACxB,WAAOo6B,EAAI,aAAa,WAAWA,EAAI,aAAa;AAAA,EACtD,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAEMG,KAAa,CAAC,iBAAiB,eAAe,GAG9CC,KAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKMC,KAAoB,CAACC,MAClBF,GAAmB,SAASE,CAAyB,GAIxDC,KAAgB,CAAChK,GAAsB+J,MACtCD,GAAkBC,CAAM,IAGtB/J,EAAS+J,CAAM,MAAM,KAFnB,IAMEE,KAAe,CAAC18B,GAAqBw8B,MAA4B;AAC5E,QAAM,EAAE,WAAAn7B,MAAcrB;AAGtB,MAAI,CAACqB,KAAaC,EAAM,YAAYD,CAAS,GAAG;AAC9C,UAAMG,IAAQrB,EAAO,MAAMH,CAAM;AACjC,QAAIwB,KAAS+6B,GAAkBC,CAAM;AACnC,aAAQh7B,EAAqBg7B,CAAM,MAAM;AAI3C,QAAI,CAACn7B,KAAarB,EAAO,SAAS,SAAS,GAAG;AAC5C,YAAM28B,IAAY38B,EAAO,SAAS,CAAC;AACnC,UAAI28B,EAAU,YAAYA,EAAU,SAAS,SAAS,GAAG;AACvD,cAAMC,IAAYD,EAAU,SAAS,CAAC;AACtC,YAAIp7B,EAAK,OAAOq7B,CAAS,KAAKL,GAAkBC,CAAM;AACpD,iBAAQI,EAAyBJ,CAAM,MAAM;AAAA,MAEjD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAIA,MAAI;AACF,UAAMK,IAAY,MAAM;AAAA,MACtB18B,EAAO,MAAMH,GAAQ;AAAA,QACnB,IAAIqB;AAAA,QACJ,OAAO,CAACjG,MAAMmG,EAAK,OAAOnG,CAAC;AAAA,MAAA,CAC5B;AAAA,IAAA;AAGH,QAAIyhC,EAAU,WAAW,GAAG;AAC1B,YAAMr7B,IAAQrB,EAAO,MAAMH,CAAM;AACjC,aAAI,CAACwB,KAAS,CAAC+6B,GAAkBC,CAAM,IAC9B,KAEDh7B,EAAqBg7B,CAAM,MAAM;AAAA,IAC3C;AAIA,WAAOK,EAAU,MAAM,CAAC,CAACh7B,CAAI,MAEpB46B,GADU56B,GACc26B,CAAM,CACtC;AAAA,EACH,QAAQ;AAEN,UAAMh7B,IAAQrB,EAAO,MAAMH,CAAM;AACjC,WAAI,CAACwB,KAAS,CAAC+6B,GAAkBC,CAAM,IAC9B,KAEDh7B,EAAqBg7B,CAAM,MAAM;AAAA,EAC3C;AACF,GAGaM,KAAgB,CAC3B98B,GACAw8B,MACY;AACZ,QAAM,EAAE,WAAAn7B,MAAcrB;AAGtB,MAAIqB,GAAW;AACb,UAAM,CAACkG,CAAK,IAAI,MAAM;AAAA,MACpBpH,EAAO,MAAMH,GAAQ;AAAA,QACnB,IAAIG,EAAO,YAAYH,GAAQqB,CAAS;AAAA,QACxC,OAAO,CAACjG,MACN,CAAC+E,EAAO,SAAS/E,CAAC,KAClB4gC,EAAa,UAAU5gC,CAAC,KACvBA,EAAoB,SAASohC;AAAA,MAAA,CACjC;AAAA,IAAA;AAEH,WAAO,CAAC,CAACj1B;AAAA,EACX;AAIA,SAAIvH,EAAO,SAAS,SAAS,IACTA,EAAO,SAAS,CAAC,EAClB,SAASw8B,IAGrB;AACT,GAGaO,KAAa,CAAC/8B,GAAqBw8B,MAAyB;AAGvE,EAFiBE,GAAa18B,GAAQw8B,CAAM,IAG1Cr8B,EAAO,WAAWH,GAAQw8B,CAAM,IAEhCr8B,EAAO,QAAQH,GAAQw8B,GAAQ,EAAI;AAEvC,GAGaQ,KAAc,CACzBh9B,GACAw8B,MACS;AACT,QAAMS,IAAWH,GAAc98B,GAAQw8B,CAAM,GACvCU,IAASb,GAAW,SAASG,CAAM;AAEzC,EAAAp7B,EAAW,YAAYpB,GAAQ;AAAA,IAC7B,OAAO,CAAC5E,MACN,CAAC+E,EAAO,SAAS/E,CAAC,KAClB4gC,EAAa,UAAU5gC,CAAC,KACxBihC,GAAW,SAAUjhC,EAAoB,IAAI;AAAA,IAC/C,OAAO;AAAA,EAAA,CACR;AAED,MAAI2S;AAWJ,MAVIkvB,IACFlvB,IAAgB,EAAE,MAAM,YAAA,IACfmvB,IACTnvB,IAAgB,EAAE,MAAM,YAAA,IAExBA,IAAgB,EAAE,MAAMyuB,EAAA,GAG1Bp7B,EAAW,SAAwBpB,GAAQ+N,CAAa,GAEpD,CAACkvB,KAAYC,GAAQ;AACvB,UAAM5zB,IAAuB,EAAE,MAAMkzB,GAAQ,UAAU,CAAA,EAAC;AACxD,IAAAp7B,EAAW,UAAUpB,GAAQsJ,CAAK;AAAA,EACpC;AACF,GAGa6zB,KAAc,CAACn9B,MAA8B;AACxD,EAAA0kB,EAAY,MAAM1kB,CAAM;AAC1B,GAGao9B,KAAc,CAACp9B,GAAqBlB,MAAwB;AACvE,QAAMu+B,IAAWnC,GAASp8B,CAAK;AAG/B,EAAAsC,EAAW,OAAOpB,GAAQ;AAAA,IACxB,IAAI;AAAA,MACF,QAAQG,EAAO,MAAMH,GAAQ,CAAA,CAAE;AAAA,MAC/B,OAAOG,EAAO,IAAIH,GAAQ,CAAA,CAAE;AAAA,IAAA;AAAA,EAC9B,CACD,GAGDoB,EAAW,YAAYpB,GAAQq9B,CAAQ,GAGvCj8B,EAAW,OAAOpB,GAAQG,EAAO,MAAMH,GAAQ,CAAA,CAAE,CAAC;AACpD,GAGas9B,KAAY,CAACt9B,MAAqC;AAC7D,QAAM,EAAE,YAAAu9B,GAAY,YAAA1N,GAAY,UAAA5H,EAAA,IAAajoB;AAE7C,SAAAA,EAAO,WAAW,CAAC8H,MACVA,EAAQ,SAAS,SAAS,KAAOmgB,EAASngB,CAAO,GAG1D9H,EAAO,aAAa,CAAC8B,MAAiB;AACpC,IAAIA,KAAQs6B,GAAMt6B,CAAI,IACpB07B,GAASx9B,GAAQ8B,CAAI,IAErB+tB,EAAW/tB,CAAI;AAAA,EAEnB,GAEA9B,EAAO,aAAa,CAAC8tB,MAAuB;AAC1C,UAAMhsB,IAAOgsB,EAAK,QAAQ,YAAY;AAEtC,IAAIhsB,KAAQs6B,GAAMt6B,CAAI,IACpB07B,GAASx9B,GAAQ8B,CAAI,IAErBy7B,EAAWzP,CAAI;AAAA,EAEnB,GAEO9tB;AACT,GAEMy9B,KAAa,CAACz9B,MAA8B;AAChD,EAAAoB,EAAW,YAAYpB,GAAQ;AAAA,IAC7B,OAAO,CAAC5E,MACN,CAAC+E,EAAO,SAAS/E,CAAC,KAClB4gC,EAAa,UAAU5gC,CAAC,KACvBA,EAAoB,SAAS;AAAA,EAAA,CACjC;AACH,GAEMoiC,KAAW,CAACx9B,GAAqBk8B,MAAsB;AAC3D,EAAIY,GAAc98B,GAAQ,MAAM,KAC9By9B,GAAWz9B,CAAM;AAGnB,QAAM,EAAE,WAAAqB,MAAcrB,GAChBwQ,IAAcnP,KAAaC,EAAM,YAAYD,CAAS,GACtDq8B,IAAsB;AAAA,IAC1B,MAAM;AAAA,IACN,KAAAxB;AAAA,IACA,UAAU1rB,IAAc,CAAC,EAAE,MAAM0rB,EAAA,CAAK,IAAI,CAAA;AAAA,EAAC;AAG7C,EAAI1rB,IACFpP,EAAW,YAAYpB,GAAQ09B,CAAI,KAEnCt8B,EAAW,UAAUpB,GAAQ09B,GAAM,EAAE,OAAO,IAAM,GAClDt8B,EAAW,SAASpB,GAAQ,EAAE,MAAM,OAAO;AAE/C,GAGagC,KAAU,CAAC;AAAA,EACtB,YAAA2kB;AAAA,EACA,UAAA3d;AAAA,EACA,SAAAlB;AACF,MAAwC;AACtC,QAAM61B,IAAgB71B,GAChBwkB,IAAQ,EAAE,WAAWqR,EAAc,MAAA;AAEzC,UAAQA,EAAc,MAAA;AAAA,IACpB,KAAK;AACH,aACE,gBAAAC,EAAC,cAAA,EAAW,OAAAtR,GAAe,GAAG3F,GAC3B,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B,EAAC,MAAA,EAAG,OAAAtR,GAAe,GAAG3F,GACnB,UAAA3d,GACH;AAAA,IAEJ,KAAK;AACH,aACE,gBAAA40B;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAGjX;AAAA,UACJ,MAAMgX,EAAc;AAAA,UACpB,KAAI;AAAA,UACJ,OAAArR;AAAA,UAEC,UAAAtjB;AAAA,QAAA;AAAA,MAAA;AAAA,IAGP;AACE,aACE,gBAAA40B,EAAC,KAAA,EAAE,OAAAtR,GAAe,GAAG3F,GAClB,UAAA3d,GACH;AAAA,EAAA;AAGR,GAGamd,KAAO,CAAC;AAAA,EACnB,YAAAQ;AAAA,EACA,UAAA3d;AAAA,EACA,MAAAmE;AACF,MAAqC;AACnC,QAAM0wB,IAAa1wB;AACnB,SAAI0wB,EAAW,SACb70B,IAAW,gBAAA40B,EAAC,YAAQ,UAAA50B,EAAA,CAAS,IAG3B60B,EAAW,SACb70B,IAAW,gBAAA40B,EAAC,UAAM,UAAA50B,EAAA,CAAS,IAGzB60B,EAAW,WACb70B,IAAW,gBAAA40B,EAAC,QAAI,UAAA50B,EAAA,CAAS,IAGvB60B,EAAW,cACb70B,IAAW,gBAAA40B,EAAC,OAAG,UAAA50B,EAAA,CAAS,IAGtB60B,EAAW,kBACb70B,IAAW,gBAAA40B,EAAC,SAAK,UAAA50B,EAAA,CAAS,IAGxB60B,EAAW,gBACb70B,IAAW,gBAAA40B,EAAC,SAAK,UAAA50B,EAAA,CAAS,IAGxB60B,EAAW,cACb70B,IAAW,gBAAA40B,EAAC,SAAK,UAAA50B,EAAA,CAAS,IAGrB,gBAAA40B,EAAC,QAAA,EAAM,GAAGjX,GAAa,UAAA3d,EAAA,CAAS;AACzC,GAGa80B,KAAc;AAAA,EACzB,sBAAsB;AAAA;AAKxB;;;;UC1aA,OAAO,eAAerc,IAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT,CAAC;AA4ED,WAtEIC,IAAS,OAAO,SAAU,OAAe,uBAAuB,KAAK,OAAO,UAAU,QAAQ,GAE9FC,IAAY;AAAA,IACd,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,KAGLC,IAAU;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK;AAAA,IACL,SAAS;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAKF,IAAS,SAAS;AAAA,IACvB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,SAAS;AAAA,KAGPG,IAAQ;AAAA,IACV,WAAW;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAM;AAAA,KAGC3lB,IAAI,GAAGA,IAAI,IAAIA;AACtB,IAAA2lB,EAAM,MAAM3lB,CAAC,IAAI,MAAMA;AAOzB,WAAS4lB,EAASC,GAAQ3Z,GAAS4Z,GAAO;AACxC,IAAI5Z,KAAW,EAAE,WAAWA,OAC1B4Z,IAAQ5Z,GACRA,IAAU,OAGP,MAAM,QAAQ2Z,CAAM,MACvBA,IAAS,CAACA,CAAM;AAGlB,QAAIE,IAAQF,EAAO,IAAI,SAAUjG,GAAQ;AACvC,aAAOoG,EAAYpG,GAAQ1T,CAAO;AAAA,IACtC,CAAG,GACG+Z,IAAQ,SAAe9mB,GAAG;AAC5B,aAAO4mB,EAAM,KAAK,SAAU1iB,GAAQ;AAClC,eAAO6iB,EAAc7iB,GAAQlE,CAAC;AAAA,MACpC,CAAK;AAAA,IACL,GACMgnB,IAAML,KAAS,OAAOG,IAAQA,EAAMH,CAAK;AAC7C,WAAOK;AAAA,EACT;AAEA,WAASC,EAAaP,GAAQC,GAAO;AACnC,WAAOF,EAASC,GAAQC,CAAK;AAAA,EAC/B;AAEA,WAASO,EAAYR,GAAQC,GAAO;AAClC,WAAOF,EAASC,GAAQ,EAAE,OAAO,GAAI,GAAIC,CAAK;AAAA,EAChD;AAMA,WAASE,EAAYH,GAAQ3Z,GAAS;AACpC,QAAIoa,IAAQpa,KAAWA,EAAQ,OAC3Bia,IAAM,CAAA;AAGV,IAAAN,IAASA,EAAO,QAAQ,MAAM,MAAM;AACpC,QAAIU,IAASV,EAAO,MAAM,GAAG,GACzB3Q,IAASqR,EAAO;AAIpB,aAAS7kB,KAAK+jB;AACZ,MAAAU,EAAIV,EAAU/jB,CAAC,CAAC,IAAI;AAGtB,QAAI8kB,IAA4B,IAC5BC,IAAoB,IACpBC,IAAiB;AAErB,QAAI;AACF,eAASC,IAAYJ,EAAO,OAAO,QAAQ,EAAC,GAAIK,GAAO,EAAEJ,KAA6BI,IAAQD,EAAU,KAAI,GAAI,OAAOH,IAA4B,IAAM;AACvJ,YAAI5jB,IAAQgkB,EAAM,OAEdC,IAAWjkB,EAAM,SAAS,GAAG,KAAKA,EAAM,SAAS;AAErD,QAAIikB,MACFjkB,IAAQA,EAAM,MAAM,GAAG,EAAE;AAG3B,YAAIkkB,IAAOC,EAAUnkB,CAAK,GACtBokB,IAAWvB,EAAUqB,CAAI;AAE7B,YAAIlkB,EAAM,SAAS,KAAK,CAACokB,KAAY,CAACtB,EAAQ9iB,CAAK,KAAK,CAAC+iB,EAAMmB,CAAI;AACjE,gBAAM,IAAI,UAAU,wBAAwBlkB,IAAQ,GAAG;AAGzD,SAAIsS,MAAW,KAAK,CAAC8R,OACfV,IACFH,EAAI,MAAMW,IAEVX,EAAI,QAAQc,EAAUrkB,CAAK,IAI3BokB,MACFb,EAAIa,CAAQ,IAAIH,IAAW,OAAO;AAAA,MAE1C;AAAA,IACA,SAAWK,GAAK;AACZ,MAAAT,IAAoB,IACpBC,IAAiBQ;AAAA,IACrB,UAAG;AACC,UAAI;AACF,QAAI,CAACV,KAA6BG,EAAU,UAC1CA,EAAU,OAAM;AAAA,MAExB,UAAK;AACC,YAAIF;AACF,gBAAMC;AAAA,MAEd;AAAA,IACA;AAEE,WAAOP;AAAA,EACT;AAMA,WAASD,EAAc7iB,GAAQyiB,GAAO;AACpC,aAASnjB,KAAOU,GAAQ;AACtB,UAAI8jB,IAAW9jB,EAAOV,CAAG,GACrBykB,IAAS;AAEb,UAAID,KAAY,SAIZxkB,MAAQ,SAASmjB,EAAM,OAAO,OAChCsB,IAAStB,EAAM,IAAI,YAAW,IACrBnjB,MAAQ,UACjBykB,IAASD,MAAa,MAAMrB,EAAM,UAAU,KAAK,KAAKA,EAAM,QAE5DsB,IAAStB,EAAMnjB,CAAG,GAGhB,EAAAykB,KAAU,QAAQD,MAAa,OAI/BC,MAAWD;AACb,eAAO;AAAA,IAEb;AAEE,WAAO;AAAA,EACT;AAMA,WAASF,EAAUH,GAAM;AACvB,IAAAA,IAAOC,EAAUD,CAAI;AACrB,QAAI/d,IAAO4c,EAAMmB,CAAI,KAAKA,EAAK,YAAW,EAAG,WAAW,CAAC;AACzD,WAAO/d;AAAA,EACT;AAEA,WAASge,EAAUD,GAAM;AACvB,WAAAA,IAAOA,EAAK,YAAW,GACvBA,IAAOpB,EAAQoB,CAAI,KAAKA,GACjBA;AAAA,EACT;AAMA,SAAAvB,GAAA,UAAkBK,GAClBL,GAAA,WAAmBK,GACnBL,GAAA,eAAuBa,GACvBb,GAAA,cAAsBc,GACtBd,GAAA,cAAsBS,GACtBT,GAAA,gBAAwBW,GACxBX,GAAA,YAAoB0B,GACpB1B,GAAA,YAAoBwB;;;mCC7NP8a,KAAuB,CAAC,EAAE,QAAA/9B,SAkC9B,EAAE,eAjCamtB;AAAA,EACpB,CAACnL,MAA+B;AAE9B,SAAKA,EAAM,WAAWA,EAAM,YAAYA,EAAM,QAAQ,KAAK;AACzD,MAAAA,EAAM,eAAA,GACFA,EAAM,WACRhiB,EAAO,KAAA,IAEPA,EAAO,KAAA;AAET;AAAA,IACF;AAGA,eAAW+hB,KAAUoH;AACnB,UAAIrH,GAASC,GAAQC,CAAK,GAAG;AAC3B,QAAAA,EAAM,eAAA;AACN,cAAMgc,IAAO7U,GAAQpH,CAA8B;AACnD,QAAAgb,GAAW/8B,GAAQg+B,CAAI;AACvB;AAAA,MACF;AAIF,QAAIhc,EAAM,YAAYA,EAAM,QAAQ,SAAS;AAC3C,MAAAA,EAAM,eAAA,GACNhiB,EAAO,WAAW89B,GAAY,oBAAoB;AAClD;AAAA,IACF;AAAA,EACF;AAAA,EACA,CAAC99B,CAAM;AAAA,EAGA,ICZEi+B,KAAiB,SAAwB;AAAA,EACpD,KAAKC;AAAA,EACL,OAAAp/B;AAAA,EACA,UAAAo3B;AAAA,EACA,SAAAiI;AAAA,EACA,QAAAC;AAAA,EACA,aAAAlS,IAAcgO,GAAgB;AAAA,EAC9B,YAAAmE,IAAanE,GAAgB;AAAA,EAC7B,YAAAoE,IAAapE,GAAgB;AAAA,EAC7B,WAAApO,IAAYoO,GAAgB;AAAA,EAC5B,SAAAqE;AAAA;AAEF,GAAwB;AACtB,QAAMC,IAAWzZ,GAA0B,IAAI,GACzC7kB,IAAMu+B,GAAaC,GAAUF,GAAUN,CAAY,CAAC,GAGpDl+B,IAAS2sB,GAAQ,MAAM;AAC3B,UAAMgS,IAAa5+B,GAAA;AACnB,WAAOu9B,GAAUxE,GAAYvB,GAAUoH,CAAU,CAAC,CAAC;AAAA,EACrD,GAAG,CAAA,CAAE,GAGC,EAAE,eAAAC,EAAA,IAAkBb,GAAqB,EAAE,QAAA/9B,GAAQ,GAGnD6+B,IAAc1R;AAAA,IAClB,CAACnL,MAA4C;AAC3C,MAAImc,KACFA,EAAQnc,CAAK;AAAA,IAEjB;AAAA,IACA,CAACmc,CAAO;AAAA,EAAA,GAIJW,IAAa3R;AAAA,IACjB,CAACnL,MAA4C;AAC3C,MAAIoc,KACFA,EAAOpc,CAAK;AAAA,IAEhB;AAAA,IACA,CAACoc,CAAM;AAAA,EAAA;AAIT,EAAAW;AAAA,IACE7+B;AAAA,IACA,OAAO;AAAA,MACL,OAAO,MAAMi9B,GAAYn9B,CAAM;AAAA,MAC/B,YAAY,CAACg6B,MAAiBoD,GAAYp9B,GAAQg6B,CAAI;AAAA,IAAA;AAAA,IAExD,CAACh6B,CAAM;AAAA,EAAA;AAIT,QAAM6nB,IAAgBsF;AAAA,IACpB,CAACxlB,MAAyC,gBAAAi2B,EAAC57B,IAAA,EAAS,GAAG2F,EAAA,CAAO;AAAA,IAC9D,CAAA;AAAA,EAAC,GAIG0e,IAAa8G;AAAA,IACjB,CAACxlB,MAAsC,gBAAAi2B,EAACzX,IAAA,EAAM,GAAGxe,EAAA,CAAO;AAAA,IACxD,CAAA;AAAA,EAAC,GAIGq3B,IAAerE,GAAA,GACfsE,IACJ,MAAM,QAAQngC,CAAK,KAAKA,EAAM,SAAS,IAAIA,IAAQkgC;AAErD,SACE,gBAAAE,EAAC7I,IAAA,EAAM,QAAAr2B,GAAgB,OAAOi/B,GAAkB,UAAA/I,GAC7C,UAAA;AAAA,IAAAqI,KACC,gBAAAX,EAAC/iC,MAA0B,UAAA0jC,EAAA,CAAQ;AAAA,IAErC,gBAAAX,EAAC9iC,IAAA,EAA0B,SAAO,IAChC,UAAA,gBAAA8iC;AAAA,MAACpF;AAAA,MAAA;AAAA,QACC,eAAA3Q;AAAA,QACA,YAAAxB;AAAA,QACA,aAAA6F;AAAA,QACA,WAAAJ;AAAA,QACA,UAAUwS,KAAcD;AAAA,QACxB,WAAWO;AAAA,QACX,SAASC;AAAA,QACT,QAAQC;AAAA,QACR,cAAW;AAAA,QACX,MAAK;AAAA,QACL,kBAAe;AAAA,MAAA;AAAA,IAAA,EACjB,CACF;AAAA,EAAA,GACF;AAEJ;AAEAb,GAAe,cAAc;ACpItB,MAAMkB,KAAwB,CAACn/B,MAC7BmtB;AAAA,EACL,CAACiS,MACQ,MAAM;AAEX,UAAM,EAAE,WAAA/9B,MAAcrB;AAGtB,IAAAo/B,EAAA,GAGI/9B,KAAa,CAACrB,EAAO,aACvBoB,EAAW,OAAOpB,GAAQqB,CAAS,GAIhCqjB,EAAY,UAAU1kB,CAAM,KAC/B0kB,EAAY,MAAM1kB,CAAM;AAAA,EAE5B;AAAA,EAEF,CAACA,CAAM;AAAA,GCFEq/B,KAAkB,CAAC;AAAA,EAC9B,wBAAAC;AACF,MAA4B;AAC1B,QAAMt/B,IAASgqB,GAAA,GAGTuV,IAAmB5S,GAAQ,MAE7B8N,GAAW;AAAA,IAAK,CAACv1B,MACf43B,GAAc98B,GAAQkF,CAA6B;AAAA,EAAA,KAChD,aAEN,CAAClF,EAAO,WAAWA,EAAO,QAAQ,CAAC,GAEhCw/B,IAAoBhF,GAAW,KAAK,CAAC1+B,MAAMA,EAAE,OAAOyjC,CAAgB,GACpEE,IAAyBD,GAAmB,SAAS,IAGrDE,IAAwBvS;AAAA,IAC5B,CAACwS,MAAoB;AACnB,MAAAL,EAAuB,MAAM;AAC3B,QAAAtC,GAAYh9B,GAAQ2/B,CAAoB;AAAA,MAC1C,CAAC,EAAA;AAAA,IACH;AAAA,IACA,CAAC3/B,GAAQs/B,CAAsB;AAAA,EAAA,GAI3BM,IAAmBzS;AAAA,IACvB,CAAC0S,MAA2B;AAC1B,MAAAP,EAAuB,MAAM;AAC3B,cAAMQ,IAAW,MAAM,KAAKD,CAAY,EAAE,CAAC,GACrCE,IAAkBjD,GAAc98B,GAAQ,eAAe,IACzD,kBACA88B,GAAc98B,GAAQ,eAAe,IACnC,kBACA;AAEN,QAAI8/B,IACF9C,GAAYh9B,GAAQ8/B,CAAQ,IACnBC,KACT/C,GAAYh9B,GAAQ+/B,CAAe;AAAA,MAEvC,CAAC,EAAA;AAAA,IACH;AAAA,IACA,CAAC//B,GAAQs/B,CAAsB;AAAA,EAAA,GAI3BU,IAAqBrT,GAAQ,MAAM;AACvC,UAAMltB,IAAiB,CAAA;AACvB,WAAIi9B,GAAa18B,GAAQ,MAAM,KAAGP,EAAK,KAAK,MAAM,GAC9Ci9B,GAAa18B,GAAQ,QAAQ,KAAGP,EAAK,KAAK,QAAQ,GAClDi9B,GAAa18B,GAAQ,WAAW,KAAGP,EAAK,KAAK,WAAW,GACrD,IAAI,IAAIA,CAAI;AAAA,EACrB,GAAG,CAACO,EAAO,WAAWA,EAAO,UAAUG,EAAO,MAAMH,CAAM,CAAC,CAAC,GAGtDigC,IAAmBtT,GAAQ,MAAM;AACrC,UAAMltB,IAAiB,CAAA;AACvB,WAAIq9B,GAAc98B,GAAQ,eAAe,KAAGP,EAAK,KAAK,eAAe,GACjEq9B,GAAc98B,GAAQ,eAAe,KAAGP,EAAK,KAAK,eAAe,GAC9D,IAAI,IAAIA,CAAI;AAAA,EACrB,GAAG,CAACO,EAAO,WAAWA,EAAO,QAAQ,CAAC,GAGhCkgC,IAAWvT,GAAQ,MAChB3sB,EAAO,WAAWA,EAAO,QAAQ,MAAM,SAAS,GACtD,CAACA,EAAO,WAAWA,EAAO,QAAQ,CAAC,GAEhCmgC,IAAWxT,GAAQ,MAChB3sB,EAAO,WAAWA,EAAO,QAAQ,MAAM,SAAS,GACtD,CAACA,EAAO,WAAWA,EAAO,QAAQ,CAAC;AAEtC,SAAO;AAAA,IACL,kBAAAu/B;AAAA,IACA,mBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,kBAAAE;AAAA,IACA,oBAAAI;AAAA,IACA,kBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,EAAA;AAEJ,GC1FaC,KAAqB,CAAC;AAAA,EACjC,wBAAAd;AACF,MAA+B;AAC7B,QAAMt/B,IAASgqB,GAAA,GAGT6V,IAAelT,GAAQ,MAAM;AACjC,UAAMltB,IAAiB,CAAA;AACvB,WAAA66B,GAAiB,QAAQ,CAACkC,MAAW;AACnC,MAAIE,GAAa18B,GAAQw8B,CAAM,KAAG/8B,EAAK,KAAK+8B,CAAM;AAAA,IACpD,CAAC,GACM,IAAI,IAAI/8B,CAAI;AAAA,EACrB,GAAG,CAACO,EAAO,WAAWA,EAAO,UAAUG,EAAO,MAAMH,CAAM,CAAC,CAAC,GAGtDqgC,IAAqB1T,GAAQ,MAAM;AACvC,UAAMltB,IAAiB,CAAA;AACvB,WAAA86B,GAAkB,QAAQ,CAACiC,MAAW;AACpC,MAAIE,GAAa18B,GAAQw8B,CAAM,KAAG/8B,EAAK,KAAK+8B,CAAM;AAAA,IACpD,CAAC,GACM,IAAI,IAAI/8B,CAAI;AAAA,EACrB,GAAG,CAACO,EAAO,WAAWA,EAAO,UAAUG,EAAO,MAAMH,CAAM,CAAC,CAAC,GAGtDsgC,IAAkB3T,GAAQ,0BACnB,IAAI;AAAA,IACb,GAAG,MAAM,KAAKkT,CAAY;AAAA,IAC1B,GAAG,MAAM,KAAKQ,CAAkB;AAAA,EAAA,CACjC,GACA,CAACR,GAAcQ,CAAkB,CAAC,GAG/BE,IAA2BpT;AAAA,IAC/B,CAAC1tB,MAA2B;AAC1B,UAAIA,MAAS,MAAO;AAEpB,YAAM+gC,IAAW,MAAM,KAAK/gC,CAAI,GAC1BghC,IAAc,MAAM,KAAKH,CAAe,GAGxCI,IAAgBF,EAAS;AAAA,QAC7B,CAAC3hC,MAAQ,CAAC4hC,EAAY,SAAS5hC,CAAG;AAAA,MAAA,GAG9B8hC,IAAkBF,EAAY;AAAA,QAClC,CAAC5hC,MAAQ,CAAC2hC,EAAS,SAAS3hC,CAAG;AAAA,MAAA;AAIjC,OAAC,GAAG6hC,GAAe,GAAGC,CAAe,EAAE,QAAQ,CAAC9hC,MAAQ;AACtD,QAAIA,MAAQ,iBAAiBA,MAAQ,cAEnCygC,EAAuB,MAAM;AAC3B,gBAAMS,IAAkBrD,GAAa18B,GAAQ,aAAa,IACtD,gBACA08B,GAAa18B,GAAQ,WAAW,IAC9B,cACA;AAEN,UAAI0gC,EAAc,SAAS7hC,CAAG,KAExBkhC,KAAmBA,MAAoBlhC,KACzCk+B,GAAW/8B,GAAQ+/B,CAAe,GAEpChD,GAAW/8B,GAAQnB,CAAG;AAAA,QAK1B,CAAC,EAAA,IAGDygC,EAAuB,MAAMvC,GAAW/8B,GAAQnB,CAAG,CAAC,EAAA;AAAA,MAExD,CAAC;AAAA,IACH;AAAA,IACA,CAACmB,GAAQsgC,GAAiBhB,CAAsB;AAAA,EAAA;AAGlD,SAAO;AAAA,IACL,cAAAO;AAAA,IACA,oBAAAQ;AAAA,IACA,iBAAAC;AAAA,IACA,0BAAAC;AAAA,EAAA;AAEJ,GClGaK,KAAiB,CAAC,EAAE,YAAAvC,IAAa,SAAiC;AAC7E,QAAMr+B,IAASgqB,GAAA,GACTsV,IAAyBH,GAAsBn/B,CAAM,GAGrD,EAAE,iBAAAsgC,GAAiB,0BAAAC,EAAA,IAA6BH,GAAmB;AAAA,IACvE,wBAAAd;AAAA,EAAA,CACD;AAED,SACE,gBAAAJ;AAAA,IAAC2B,GAAK;AAAA,IAAL;AAAA,MACC,eAAc;AAAA,MACd,cAAcP;AAAA,MACd,mBAAmBC;AAAA,MAEnB,UAAA;AAAA,QAAA,gBAAArB,EAAC4B,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,UAAA,gBAAAlD,EAACiD,GAAK,SAAL,EAAa,SAAO,IACnB,UAAA,gBAAAjD;AAAA,YAACmD;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,cAAW;AAAA,cACX,YAAA1C;AAAA,cACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,cAE9B,4BAACgf,IAAA,CAAA,CAAU;AAAA,YAAA;AAAA,UAAA,GAEf;AAAA,4BACCF,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,cAAA,CAAW;AAAA,QAAA,GAC9C;AAAA,QACA,gBAAA5B,EAAC2B,GAAK,SAAL,EACC,UAAA;AAAA,UAAA,gBAAAjD,EAACiD,GAAK,MAAL,EAAU,IAAG,iBACZ,UAAA,gBAAA3B,EAAC+B,IAAA,EAAI,MAAK,SAAQ,SAAQ,QAAO,YAAW,UAAS,KAAI,OACvD,UAAA;AAAA,YAAA,gBAAArD,EAACsD,IAAA,EAAoB;AAAA,YACrB,gBAAAtD,EAACr8B,IAAA,EAAK,WAAU,MAAK,UAAA,gBAAA,CAAa;AAAA,UAAA,EAAA,CACpC,EAAA,CACF;AAAA,UACA,gBAAAq8B,EAACiD,GAAK,MAAL,EAAU,IAAG,QACZ,UAAA,gBAAA3B,EAAC+B,IAAA,EAAI,MAAK,SAAQ,SAAQ,QAAO,YAAW,UAAS,KAAI,OACvD,UAAA;AAAA,YAAA,gBAAArD,EAACuD,IAAA,EAAK;AAAA,YACN,gBAAAvD,EAACr8B,IAAA,EAAK,WAAU,MAAK,UAAA,OAAA,CAAI;AAAA,UAAA,EAAA,CAC3B,EAAA,CACF;AAAA,UACA,gBAAAq8B,EAACiD,GAAK,MAAL,EAAU,IAAG,eACZ,UAAA,gBAAA3B,EAAC+B,IAAA,EAAI,MAAK,SAAQ,SAAQ,QAAO,YAAW,UAAS,KAAI,OACvD,UAAA;AAAA,YAAA,gBAAArD,EAACr8B,MAAK,UAAA,KAAA,CAAE;AAAA,YACR,gBAAAq8B,EAACr8B,IAAA,EAAK,WAAU,MAAK,UAAA,cAAA,CAAW;AAAA,UAAA,EAAA,CAClC,EAAA,CACF;AAAA,UACA,gBAAAq8B,EAACiD,GAAK,MAAL,EAAU,IAAG,aACZ,UAAA,gBAAA3B,EAAC+B,IAAA,EAAI,MAAK,SAAQ,SAAQ,QAAO,YAAW,UAAS,KAAI,OACvD,UAAA;AAAA,YAAA,gBAAArD,EAACr8B,MAAK,UAAA,KAAA,CAAE;AAAA,YACR,gBAAAq8B,EAACr8B,IAAA,EAAK,WAAU,MAAK,UAAA,YAAA,CAAS;AAAA,UAAA,EAAA,CAChC,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GCrCa6/B,KAAkB,CAAC;AAAA,EAC9B,YAAA/C,IAAa;AACf,MAA4B;AAC1B,QAAMr+B,IAASgqB,GAAA,GACTsV,IAAyBH,GAAsBn/B,CAAM,GAGrD;AAAA,IACJ,kBAAAu/B;AAAA,IACA,wBAAAE;AAAA,IACA,uBAAAC;AAAA,IACA,kBAAAE;AAAA,IACA,oBAAAI;AAAA,IACA,kBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,IACEd,GAAgB,EAAE,wBAAAC,GAAwB;AAE9C,SACE,gBAAAJ;AAAA,IAACmC;AAAA,IAAA;AAAA,MACC,aAAY;AAAA,MACZ,cAAW;AAAA,MACX,OAAM;AAAA,MACN,UAAS;AAAA,MACT,MAAK;AAAA,MAGL,UAAA;AAAA,QAAA,gBAAAzD,EAAC0D,IAAA,EACC,UAAA,gBAAApC;AAAA,UAAC2B,GAAK;AAAA,UAAL;AAAA,YACC,UAAU,CAAClB,MAAYD,EAAsB,OAAOC,CAAO,CAAC;AAAA,YAE5D,UAAA;AAAA,cAAA,gBAAAT,EAAC4B,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAElC,UAAA;AAAA,gBAAA,gBAAAlD;AAAA,kBAACiD,GAAK;AAAA,kBAAL;AAAA,oBACC,QAAO;AAAA,oBACP,OAAM;AAAA,oBACN,IAAG;AAAA,oBACH,cAAa;AAAA,oBACb,QAAQ,EAAE,IAAI,YAAA;AAAA,oBACd,YAAAxC;AAAA,oBACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,oBAC9B,cAAW;AAAA,oBAEX,UAAA,gBAAAkd,EAAC+B,MAAI,SAAQ,QAAO,YAAW,UAAS,KAAI,OAAM,IAAG,OACnD,UAAA;AAAA,sBAAA,gBAAArD,EAACqD,MAAI,SAAQ,QAAO,YAAW,UAAS,KAAI,OAAM,UAAS,KACzD,UAAA,gBAAArD,EAACr8B,IAAA,EAAK,IAAG,QAAO,WAAU,MAAK,YAAW,OACvC,aACH,EAAA,CACF;AAAA,wCACCggC,IAAA,CAAA,CAAkB;AAAA,oBAAA,EAAA,CACrB;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAEDT,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,aAAA,CAAU;AAAA,cAAA,GAC7C;AAAA,gCACCD,GAAK,SAAL,EACE,UAAArG,GAAW,IAAI,CAAClO,MACf,gBAAAsR;AAAA,gBAACiD,GAAK;AAAA,gBAAL;AAAA,kBAEC,IAAIvU,EAAM;AAAA,kBACT,GAAIiT,MAAqBjT,EAAM,MAAM;AAAA,oBACpC,cAAc;AAAA,kBAAA;AAAA,kBAGhB,4BAAC/qB,IAAA,EAAM,GAAG+qB,EAAM,OAAQ,YAAM,MAAA,CAAM;AAAA,gBAAA;AAAA,gBAN/BA,EAAM;AAAA,cAAA,CAQd,EAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QAEA,gBAAAsR,EAAC4D,IAAA,EAAU,aAAY,WAAA,CAAW;AAAA,QAGlC,gBAAAtC;AAAA,UAACuC,GAAkB;AAAA,UAAlB;AAAA,YACC,eAAc;AAAA,YACd,cAAczB;AAAA,YACd,YAAA3B;AAAA,YAEA,UAAA;AAAA,cAAA,gBAAAa,EAAC4B,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,gBAAA,gBAAA5B;AAAA,kBAACwC;AAAA,kBAAA;AAAA,oBACC,IAAG;AAAA,oBACH,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAW;AAAA,oBACX,YAAArD;AAAA,oBACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,oBAC9B,SAASsd,EAAuB,MAAMvC,GAAW/8B,GAAQ,MAAM,CAAC;AAAA,oBAEhE,UAAA;AAAA,sBAAA,gBAAA49B,EAAC+D,IAAA,EAAW;AAAA,sBACZ,gBAAA/D,EAACgE,MAAe,UAAA,OAAA,CAAI;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAErBd,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,OAAA,CAAI;AAAA,cAAA,GACvC;AAAA,gCACCA,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,gBAAA,gBAAA5B;AAAA,kBAACwC;AAAA,kBAAA;AAAA,oBACC,IAAG;AAAA,oBACH,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAW;AAAA,oBACX,YAAArD;AAAA,oBACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,oBAC9B,SAASsd,EAAuB,MAAMvC,GAAW/8B,GAAQ,QAAQ,CAAC;AAAA,oBAElE,UAAA;AAAA,sBAAA,gBAAA49B,EAACiE,IAAA,EAAa;AAAA,sBACd,gBAAAjE,EAACgE,MAAe,UAAA,SAAA,CAAM;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAEvBd,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,SAAA,CAAM;AAAA,cAAA,GACzC;AAAA,gCACCA,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,gBAAA,gBAAA5B;AAAA,kBAACwC;AAAA,kBAAA;AAAA,oBACC,IAAG;AAAA,oBACH,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAW;AAAA,oBACX,YAAArD;AAAA,oBACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,oBAC9B,SAASsd;AAAA,sBAAuB,MAC9BvC,GAAW/8B,GAAQ,WAAW;AAAA,oBAAA;AAAA,oBAGhC,UAAA;AAAA,sBAAA,gBAAA49B,EAACkE,IAAA,EAAiB;AAAA,sBAClB,gBAAAlE,EAACgE,MAAe,UAAA,YAAA,CAAS;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAE1Bd,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,YAAA,CAAS;AAAA,cAAA,EAAA,CAC5C;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAIF,gBAAAlD,EAACgD,MAAe,YAAAvC,GAAwB;AAAA,QAExC,gBAAAT,EAAC4D,IAAA,EAAU,aAAY,WAAA,CAAW;AAAA,QAGlC,gBAAAtC;AAAA,UAACuC,GAAkB;AAAA,UAAlB;AAAA,YACC,eAAc;AAAA,YACd,cAAcxB;AAAA,YACd,mBAAmBL;AAAA,YACnB,cAAW;AAAA,YACX,YAAAvB;AAAA,YAEA,UAAA;AAAA,cAAA,gBAAAa,EAAC4B,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,gBAAA,gBAAAlD;AAAA,kBAAC8D;AAAA,kBAAA;AAAA,oBACC,IAAG;AAAA,oBACH,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAW;AAAA,oBACX,YAAArD;AAAA,oBACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,oBAE9B,4BAAC+f,IAAA,CAAA,CAAmB;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAErBjB,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,gBAAA,CAAa;AAAA,cAAA,GAChD;AAAA,gCACCA,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,gBAAA,gBAAAlD;AAAA,kBAAC8D;AAAA,kBAAA;AAAA,oBACC,IAAG;AAAA,oBACH,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,cAAW;AAAA,oBACX,YAAArD;AAAA,oBACA,aAAa,CAACrc,MAAUA,EAAM,eAAA;AAAA,oBAE9B,4BAACggB,IAAA,CAAA,CAAmB;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAErBlB,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,gBAAA,CAAa;AAAA,cAAA,EAAA,CAChD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAIF,gBAAAlD,EAACqD,IAAA,EAAI,UAAS,IAAA,CAAI;AAAA,0BAEjBK,IAAA,EACC,UAAA;AAAA,UAAA,gBAAApC,EAAC4B,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,YAAA,gBAAA5B;AAAA,cAAC6B;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,cAAW;AAAA,gBACX,YAAY,CAACb,KAAY7B;AAAA,gBACzB,SAASiB,EAAuB,MAAMt/B,EAAO,MAAM;AAAA,gBACnD,aAAa,CAACgiB,MAAUA,EAAM,eAAA;AAAA,gBAE9B,UAAA;AAAA,kBAAA,gBAAA4b,EAACqE,IAAA,EAAK;AAAA,kBACN,gBAAArE,EAACgE,MAAe,UAAA,OAAA,CAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,8BAErBd,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,OAAA,CAAI;AAAA,UAAA,GACvC;AAAA,4BACCA,GAAQ,MAAR,EAAa,OAAO,GAAG,YAAY,GAClC,UAAA;AAAA,YAAA,gBAAA5B;AAAA,cAAC6B;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,cAAW;AAAA,gBACX,YAAY,CAACZ,KAAY9B;AAAA,gBACzB,SAASiB,EAAuB,MAAMt/B,EAAO,MAAM;AAAA,gBACnD,aAAa,CAACgiB,MAAUA,EAAM,eAAA;AAAA,gBAE9B,UAAA;AAAA,kBAAA,gBAAA4b,EAACsE,IAAA,EAAK;AAAA,kBACN,gBAAAtE,EAACgE,MAAe,UAAA,OAAA,CAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,8BAErBd,GAAQ,SAAR,EAAgB,WAAU,OAAM,UAAA,OAAA,CAAI;AAAA,UAAA,EAAA,CACvC;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAM,GAAgB,cAAc;AC1NvB,MAAMe,KAAgB,CAACx6B,MAA8B;AAC1D,QAAM;AAAA,IACJ,KAAKu2B;AAAA,IACL,OAAAp/B;AAAA,IACA,cAAAkgC;AAAA,IACA,UAAA9I;AAAA,IACA,SAAAiI;AAAA,IACA,QAAAC;AAAA,IACA,aAAAlS,IAAc;AAAA,IACd,YAAAmS,IAAa;AAAA,IACb,YAAAC,IAAa;AAAA,IACb,WAAA8D,IAAY;AAAA,IACZ,WAAAtW,IAAY;AAAA,IACZ,GAAGuW;AAAA,EAAA,IACD16B,GAEE26B,IAASC,GAAc,EAAE,QAAQC,IAAqB,GACtD,CAACC,GAAaC,CAAc,IAAIJ,EAAO,kBAAkB;AAAA;AAAA,IAE7D,GAAGD;AAAA,EAAA,CACJ,GACK,CAACM,GAAYC,CAAe,IAAIC,GAAkBH,CAAc,GAGhEI,IAAiB;AAAA,IACrB,iBAAiBzE,IAAa,SAAS;AAAA,IACvC,gBAAgB+D,IAAY,SAAS;AAAA,IACrC,iBAAiB9D,IAAa,SAAS;AAAA,EAAA,GAInC,CAACyE,GAAeC,CAAgB,IAAIxb,GAAS,MAAM;AACvD,UAAMyb,IAAcnkC,KAASkgC,KAAgB;AAC7C,QAAI;AACF,aAAOiE,IAAc/H,GAAS+H,CAAW,IAAItI,GAAA;AAAA,IAC/C,SAASW,GAAO;AACd,qBAAQ,KAAK,oDAAoDA,CAAK,GAC/DX,GAAA;AAAA,IACT;AAAA,EACF,CAAC,GAEK,CAACuI,GAAiBC,CAAkB,IAAI3b,GAAS,MAC9C1oB,KAASkgC,KAAgB,EACjC,GAEKoE,IAAYre,GAA0B,IAAI;AAGhD,EAAAR,GAAU,MAAM;AACd,QAAIzlB,MAAU,UAAaA,MAAUokC,GAAiB;AACpD,YAAMG,IAAgBvkC,IAAQo8B,GAASp8B,CAAK,IAAI67B,GAAA;AAChD,MAAAqI,EAAiBK,CAAa,GAC9BF,EAAmBrkC,CAAK;AAAA,IAC1B;AAAA,EACF,GAAG,CAACA,GAAOokC,CAAe,CAAC;AAE3B,QAAMI,IAAenW;AAAA,IACnB,CAACoW,MAAoD;AACnD,YAAMC,IAAU5I,GAAO2I,CAAU,GAC3BE,IAA4BD,MAAYN;AAE9C,MAAAF,EAAiBO,CAAU,GAC3BJ,EAAmBK,CAAO,GAGtBC,KAA6BvN,KAC/BA,EAASsN,CAAO;AAAA,IAEpB;AAAA,IACA,CAACN,GAAiBhN,CAAQ;AAAA,EAAA,GAMtBwN,IAAYrI,GAHG0H,CAGgC;AAErD,SACE,gBAAAnF;AAAA,IAAChjC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACJ,GAAG6nC;AAAA,MACH,GAAGE;AAAA,MACH,GAAGC;AAAA,MACH,GAAGE;AAAA,MACJ,KAAK5E;AAAA,MAEL,UAAA,gBAAAN;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,KAAKmF;AAAA,UACL,OAAOM;AAAA,UACP,UAAUJ;AAAA,UACV,SAAAnF;AAAA,UACA,QAAAC;AAAA,UACA,aAAAlS;AAAA,UACA,YAAAmS;AAAA,UACA,YAAAC;AAAA,UACA,WAAAxS;AAAA,UACA,SACGwS,IAA2D,OAA9C,gBAAAV,EAACwD,IAAA,EAAgB,YAAA/C,GAAwB;AAAA,QAAK;AAAA,MAAA;AAAA,IAEhE;AAAA,EAAA;AAGN;AAEA8D,GAAc,cAAc;","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,30]}
|