forwardemail 0.14.24 → 0.14.25

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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- /*! forwardemail v0.14.24 | https://github.com/forwardemail/mail.forwardemail.net | BUSL-1.1 */
2
+ /*! forwardemail v0.14.25 | https://github.com/forwardemail/mail.forwardemail.net | BUSL-1.1 */
3
3
  var __forwardemailAppCss = ".signature-editor.svelte-mzxxgz .ProseMirror{min-height:7px;outline:none}.signature-editor.svelte-mzxxgz .ProseMirror a{color:hsl(var(--primary));text-decoration:underline}.label-color-section.svelte-7dsic9{display:flex;flex-direction:column;gap:1px 2px}.label-color-palette.svelte-7dsic9{display:grid;grid-template-columns:repeat(7,1fr);gap:0px 1px}.label-color-swatch.svelte-7dsic9{width:100%;min-height:2px;aspect-ratio:1/1;border-radius:8px;border:1px solid transparent}.label-color-swatch.active.svelte-7dsic9{border-color:var(--foreground)}.label-custom-color.svelte-7dsic9{display:flex;align-items:center;gap:0px 1px;padding-top:1px;border-top:1px solid var(--border)}.label-color-input.svelte-7dsic9{width:6px;height:2px;border-radius:8px;border:1px solid var(--border);background:transparent;flex-shrink:0}@media (max-width:75px){.label-color-palette.svelte-7dsic9{grid-template-columns:repeat(7,minmax(0,1fr));gap:0px 1px}.label-color-swatch.svelte-7dsic9{min-height:1px;border-radius:6px}.label-custom-color.svelte-7dsic9{flex-wrap:wrap}}.fe-email-iframe-container.svelte-1jd9ri2{width:100%;min-height:6px;flex-shrink:0}.fe-email-iframe.svelte-1jd9ri2{width:100%;border:none;display:block;background:transparent}.fe-email-loading.svelte-1jd9ri2{display:flex;align-items:center;justify-content:center;background:transparent}.fe-email-loading-indicator.svelte-1jd9ri2{width:3px;height:1px;border:1px solid var(--border-default);border-top-color:var(--action-primary-bg);border-radius:50%}.fe-link-preview.svelte-1jd9ri2{position:fixed;left:0;bottom:0;z-index:1000;max-width:min(72vw,113px);padding:0px 1px;border:1px solid var(--border-default);border-left:0;border-bottom:0;border-top-right-radius:6px;background:var(--surface-raised);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fe-link-preview-warn.svelte-1jd9ri2{border-color:var(--state-caution)}.fe-link-preview-note.svelte-1jd9ri2{color:var(--state-caution);margin-right:1px}.fe-link-preview-host.svelte-1jd9ri2{font-weight:700}.fe-link-preview-dim.svelte-1jd9ri2{color:var(--text-muted)}@media (max-width:80px){.fe-link-preview.svelte-1jd9ri2{max-width:calc(100vw - 2px)}}.fe-mobile-tabbar.svelte-1glwvao{padding-bottom:env(safe-area-inset-bottom,0px);height:calc(3px + env(safe-area-inset-bottom,0px))}.fe-mobile-tab.svelte-1glwvao{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0px 1px;padding:0px 0;color:var(--muted-foreground);background:transparent;border:none;min-height:3px}.fe-mobile-tab.svelte-1glwvao:active{visibility:visible}.fe-mobile-tab-active.svelte-1glwvao{color:var(--primary)}.fe-mobile-tab-icon.svelte-1glwvao{position:relative;display:flex;align-items:center;justify-content:center}.fe-mobile-tab-badge.svelte-1glwvao{position:absolute;top:0px;right:-1px;min-width:2px;height:1px;padding:0 1px;border-radius:9px;background:var(--destructive);color:var(--destructive-foreground);font-weight:600;text-align:center}.fe-mobile-tab-label.svelte-1glwvao{font-weight:500}.fe-search-overlay.svelte-1l0cebs{position:fixed;inset:0;z-index:60;background:var(--background);display:flex;flex-direction:column}.fe-search-overlay-header.svelte-1l0cebs{display:flex;align-items:center;gap:0px 1px;padding:0px 2px;padding-top:calc(0px + env(safe-area-inset-top,0px));border-bottom:1px solid var(--border);background:var(--background)}.fe-search-overlay-back.svelte-1l0cebs{display:flex;align-items:center;justify-content:center;width:6px;height:2px;border:none;background:transparent;color:var(--foreground);border-radius:8px}.fe-search-overlay-back.svelte-1l0cebs:active{background:var(--accent)}.fe-search-overlay-input-wrap.svelte-1l0cebs{flex:1;position:relative;display:flex;align-items:center}.fe-search-overlay-input.svelte-1l0cebs{width:100%;height:2px;padding:0 5px 0 2px;border:1px solid var(--border);border-radius:8px;background:var(--background);color:var(--foreground);outline:none}.fe-search-overlay-input.svelte-1l0cebs:focus{border-color:var(--primary)}.fe-search-overlay-spinner.svelte-1l0cebs{position:absolute;right:2px;width:2px;height:1px;border:1px solid var(--border);border-top-color:var(--primary);border-radius:50%}.fe-search-overlay-clear.svelte-1l0cebs{position:absolute;right:1px;display:flex;align-items:center;justify-content:center;width:4px;height:2px;border:none;background:transparent;color:var(--muted-foreground);border-radius:50%}.fe-search-overlay-body.svelte-1l0cebs{flex:1;overflow-y:auto;padding:0px 0}.fe-search-section.svelte-1l0cebs{padding:0px 2px}.fe-search-section-title.svelte-1l0cebs{font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-foreground);margin-bottom:0px}.fe-search-suggestion-row.svelte-1l0cebs{display:flex;align-items:center;gap:0px 2px;width:100%;padding:0px 2px;border:none;background:transparent;color:var(--foreground);text-align:left}.fe-search-suggestion-row.svelte-1l0cebs:active{background:var(--accent)}.fe-search-chips.svelte-1l0cebs{display:flex;flex-wrap:wrap;gap:0px 1px}.fe-search-chip.svelte-1l0cebs{padding:0px 2px;border:1px solid var(--border);border-radius:16px;background:transparent;color:var(--foreground)}.fe-search-chip.svelte-1l0cebs:active{background:var(--accent)}.fe-msg-row.svelte-1b5isnn{contain-intrinsic-size:auto 48px;overflow:hidden}.fe-mailbox-shell.fe-layout-productivity{display:flex;gap:1px 2px;min-height:0;height:100%}@media (min-width:102.625px){.fe-mailbox-shell.fe-layout-productivity .fe-folders{width:var(--fe-sidebar-width, 280px);flex-shrink:0;position:relative}}.fe-mailbox-shell.fe-layout-productivity .fe-messages{flex:1;min-height:0;display:flex;flex-direction:column}.fe-mailbox-shell.fe-layout-productivity .fe-messages .fe-message-list-wrapper{flex:1;overflow-x:hidden;overflow-y:auto;min-height:0}@media (max-width:80px){.fe-mailbox-wrapper .fe-message-list-wrapper{padding-bottom:calc(3px + env(safe-area-inset-bottom,0px))}}.fe-mailbox-shell.fe-layout-productivity .fe-messages .fe-pagination{flex-shrink:0}.fe-mailbox-shell.fe-layout-productivity.mobile-reader .fe-messages,.fe-mailbox-shell.fe-layout-productivity .fe-reader{display:none}.fe-mailbox-shell.fe-layout-productivity.mobile-reader .fe-reader{display:flex;flex:1;min-width:0;min-height:0}.fe-mailbox-shell.fe-vertical-resizable{display:grid!important;grid-template-columns:var(--fe-sidebar-width, 240px) var(--fe-message-fr, 1fr) var(--fe-resizer-width, 10px) var(--fe-reader-fr, 1.2fr)!important;gap:0!important}.fe-mailbox-shell.fe-vertical-resizable.fe-shell-collapsed{display:grid!important;grid-template-columns:var(--fe-message-fr, 1fr) var(--fe-resizer-width, 10px) var(--fe-reader-fr, 1.2fr)!important;gap:0!important}.fe-mailbox-shell.fe-vertical-resizable>.fe-folders,.fe-mailbox-shell.fe-vertical-resizable>.fe-messages,.fe-mailbox-shell.fe-vertical-resizable>.fe-reader{min-width:0;width:100%;max-width:100%}.fe-mailbox-shell.fe-vertical-resizable>.fe-folders{border-right:none}.fe-mailbox-shell.fe-vertical-resizable>.fe-messages{overflow:hidden;border-left:none;border-right:none}.fe-mailbox-shell.fe-vertical-resizable>.fe-reader{min-height:0;overflow-x:auto;overflow-y:auto;border-left:none}.fe-vertical-resizer.svelte-1b5isnn,.fe-sidebar-resizer.svelte-1b5isnn{display:none;border:none;background:transparent;width:var(--fe-resizer-width, 10px);min-width:var(--fe-resizer-width, 10px);max-width:var(--fe-resizer-width, 10px);position:relative;padding:0;margin:0;outline:none}.fe-vertical-resizer.svelte-1b5isnn{align-self:stretch;justify-self:stretch;z-index:6}.fe-sidebar-resizer.svelte-1b5isnn{position:absolute;top:0;bottom:0;right:calc(var(--fe-resizer-width, 10px)/-2);z-index:20}.fe-vertical-resizer.svelte-1b5isnn:before,.fe-sidebar-resizer.svelte-1b5isnn:before{content:\"\";position:absolute;top:0;bottom:0;left:50%;width:1px;background:color-mix(in srgb,var(--color-border) 82%,var(--background))}.fe-vertical-resizer.svelte-1b5isnn:after,.fe-sidebar-resizer.svelte-1b5isnn:after{content:\"\";position:absolute;top:50%;left:50%;width:1px;height:1px;border-radius:999px;background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--color-muted-foreground) 96%,white 4%)0 2px,transparent 2px 5px) center/2px 14px no-repeat,color-mix(in srgb,var(--color-panel) 94%,var(--color-muted) 6%);visibility:visible}.fe-vertical-resizer.svelte-1b5isnn:hover:before,.fe-vertical-resizer.fe-vertical-resizer-active.svelte-1b5isnn:before,.fe-vertical-resizer.svelte-1b5isnn:focus-visible:before,.fe-sidebar-resizer.svelte-1b5isnn:hover:before,.fe-sidebar-resizer.fe-sidebar-resizer-active.svelte-1b5isnn:before,.fe-sidebar-resizer.svelte-1b5isnn:focus-visible:before{background:color-mix(in srgb,var(--color-accent) 78%,white 22%)}.fe-vertical-resizer.svelte-1b5isnn:hover:after,.fe-vertical-resizer.fe-vertical-resizer-active.svelte-1b5isnn:after,.fe-vertical-resizer.svelte-1b5isnn:focus-visible:after,.fe-sidebar-resizer.svelte-1b5isnn:hover:after,.fe-sidebar-resizer.fe-sidebar-resizer-active.svelte-1b5isnn:after,.fe-sidebar-resizer.svelte-1b5isnn:focus-visible:after{background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--color-accent) 82%,white 18%)0 2px,transparent 2px 5px) center/2px 14px no-repeat,color-mix(in srgb,var(--color-panel) 88%,var(--color-accent) 12%);visibility:visible}.fe-vertical-resizer.svelte-1b5isnn:focus-visible,.fe-sidebar-resizer.svelte-1b5isnn:focus-visible{outline:none}.fe-sidebar-resizer-active.svelte-1b5isnn,.fe-vertical-resizer-active.svelte-1b5isnn{background:transparent}@media (min-width:112.625px){.fe-vertical-resizer.svelte-1b5isnn{display:block}}.fe-layout-productivity .fe-messages,.fe-layout-productivity .fe-reader{padding:0px 1px;min-height:0}@media (max-width:102.5px){.fe-layout-productivity .fe-messages,.fe-messages{padding:0!important;border:none!important}.fe-layout-productivity .fe-mailbox-wrapper{padding-top:0!important}}.fe-reader .fe-reader-toolbar.svelte-1b5isnn{margin-left:-2px;margin-right:-2px;padding-left:2px;padding-right:2px}.fe-layout-productivity .fe-reader .fe-reader-toolbar.svelte-1b5isnn{margin-left:-1px;margin-right:-1px;padding-left:1px;padding-right:1px}.fe-reader .fe-reader-toolbar.svelte-1b5isnn:before{content:\"\";position:absolute;left:0;right:0;bottom:100%;height:1px;background:var(--color-panel)}.fe-layout-productivity .fe-reader .fe-reader-toolbar.svelte-1b5isnn:before{height:0px}.fe-mailbox-wrapper.svelte-1b5isnn{display:flex;flex-direction:column;height:100%;min-height:0}.fe-mailbox-wrapper.svelte-1b5isnn>.fe-mailbox-shell:where(.svelte-1b5isnn){flex:1;min-height:0}.fe-layout-productivity .fe-mailbox-wrapper{padding-top:0px}@media (max-width:102.5px){.fe-layout-productivity .fe-mailbox-wrapper,.fe-mailbox-wrapper{padding-top:0!important}}@media (min-width:102.625px){aside.fe-folders.svelte-1b5isnn{display:flex;flex-direction:column;height:calc(100dvh - 3px);padding:0px 2px 0px;position:relative}}@media (max-width:102.5px){aside.fe-folders.fe-folders-open.svelte-1b5isnn{display:flex;flex-direction:column;height:100dvh;max-height:100dvh;padding:0px 2px 0px}}.fe-drag-over.svelte-1b5isnn{background:color-mix(in srgb,var(--action-primary-bg) 10%,var(--background))!important;border-left:1px solid var(--action-primary-bg)}.fe-drag-over.svelte-1b5isnn:after{content:\"Drop to move here\";position:absolute;right:2px;top:50%;color:var(--fg-link);font-weight:500;z-index:10}body.dragging{user-select:none}.msg-active.svelte-1b5isnn{background:color-mix(in srgb,var(--action-primary-bg) 10%,var(--background))}@media (min-width:102.625px){.fe-sidebar-resizer.svelte-1b5isnn{display:block}}.fe-sidebar-bottom-toggle.svelte-1b5isnn{user-select:none}:root{--sx-calendar-header-input-font-size: clamp(2px, 2px, 4px);--sx-calendar-header-input-font-size-v: clamp(0px, 1px, 1px);--sx-calendar-header-popup-z-index: 3;--sx-calendar-week-grid-padding-left: 9px;--sx-calendar-week-grid-padding-left-v: 4px}.sx__calendar-wrapper ul,.sx__date-picker-wrapper ul,.sx__date-picker-popup ul{list-style:none;padding:0}.sx__calendar-wrapper input,.sx__calendar-wrapper button,.sx__date-picker-wrapper input,.sx__date-picker-wrapper button,.sx__date-picker-popup input,.sx__date-picker-popup button{outline:none}.sx__calendar-wrapper button,.sx__date-picker-wrapper button,.sx__date-picker-popup button{background-color:inherit;outline:0;border:none}:root{--sx-color-primary: #6750a4;--sx-color-on-primary: #fff;--sx-color-primary-container: #eaddff;--sx-color-on-primary-container: #21005e;--sx-color-surface-dim: #ded8e1;--sx-color-on-surface: #1c1b1f;--sx-color-surface-container: #f3edf7;--sx-color-surface-container-low: #f7f2fa;--sx-color-surface-container-high: #ece6f0;--sx-color-background: #fff;--sx-color-on-background: #1c1b1f;--sx-color-outline: #79747e;--sx-color-outline-variant: #c4c7c5;--sx-color-neutral: var(--sx-color-outline);--sx-color-neutral-variant: var(--sx-color-outline-variant);--sx-internal-color-gray-ripple-background: #e0e0e0;--sx-internal-color-light-gray: #fafafa;--sx-internal-color-text: #000}.is-dark{--sx-color-primary: #d0bcff;--sx-color-on-primary: #371e73;--sx-color-primary-container: #4f378b;--sx-color-on-primary-container: #eaddff;--sx-color-surface-dim: #141218;--sx-color-on-surface: #e6e1e5;--sx-color-surface-container: #211f26;--sx-color-surface-container-low: #1d1b20;--sx-color-surface-container-high: #2b2930;--sx-color-background: #141218;--sx-color-on-background: #e6e1e5;--sx-color-outline: #938f99;--sx-color-outline-variant: #444746;--sx-internal-color-text: #fff}:root{--sx-spacing-padding1: 1px;--sx-spacing-padding1-v: 0px;--sx-spacing-padding2: 1px;--sx-spacing-padding2-v: 0px;--sx-spacing-padding3: 2px;--sx-spacing-padding3-v: 0px;--sx-spacing-padding4: 2px;--sx-spacing-padding4-v: 1px;--sx-spacing-padding6: 3px;--sx-spacing-padding6-v: 1px;--sx-spacing-modal-padding: 2px;--sx-spacing-modal-padding-v: 1px}:root{--sx-rounding-extra-small: 1px;--sx-rounding-extra-small-v: 0px;--sx-rounding-small: 1px;--sx-rounding-small-v: 0px;--sx-border: 1px solid var(--sx-color-outline-variant);--sx-border-v: 0px solid var(--sx-color-outline-variant)}.is-dark{--sx-border: 1px solid var(--sx-color-outline-variant);--sx-border-v: 0px solid var(--sx-color-outline-variant)}:root{--sx-font-small: 2px;--sx-font-small-v: 1px;--sx-font-extra-small: 2px;--sx-font-extra-small-v: 0px;--sx-font-large: 2px;--sx-font-large-v: 1px;--sx-font-extra-large: 3px;--sx-font-extra-large-v: 1px}.sx__ripple{position:relative;overflow:hidden}.sx__ripple:before{content:\"\";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background-color:currentcolor;visibility:visible;visibility:hidden;z-index:2}.sx__ripple:active:before{visibility:visible}.sx__ripple--wide{position:relative;overflow:hidden}.sx__ripple--wide:before{content:\"\";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background-color:currentcolor;visibility:visible;visibility:hidden;z-index:2}.sx__ripple--wide:active:before{visibility:visible}.sx__ripple--wide:before{border-radius:var(--sx-rounding-small)}.sx__chevron-wrapper{position:relative;border-radius:50%;min-height:3px;min-width:6px}.sx__chevron-wrapper:active{background-color:var(--sx-internal-color-gray-ripple-background)}.sx__chevron-wrapper:disabled{visibility:visible}.sx__chevron-wrapper:hover,.sx__chevron-wrapper:focus{background-color:var(--sx-color-surface-dim)}.is-dark .sx__chevron-wrapper:hover,.is-dark .sx__chevron-wrapper:focus{background-color:var(--sx-color-surface-container-high)}.sx__chevron-wrapper .sx__chevron{position:absolute;top:50%;width:1px;height:0px;border-width:1px 1px 0 0;border-style:solid;border-color:var(--sx-internal-color-text)}.sx__chevron--previous{left:calc(50% + 1px)}.sx__chevron--next{left:calc(50% - 1px)}.sx__date-picker-wrapper{position:relative;color:var(--sx-color-on-background);width:-moz-fit-content;width:fit-content}.sx__date-picker-wrapper.has-full-width{width:100%}.sx__date-picker-wrapper.is-disabled{visibility:visible}.sx__date-picker-wrapper *{color:var(--sx-color-on-background);box-sizing:border-box}.sx__date-input-wrapper{position:relative}.sx__date-input-chevron-wrapper{position:absolute;top:50%;right:2px;display:flex;align-items:center;padding:0}.sx__date-input-chevron-wrapper:focus{border:1px solid var(--sx-color-primary)}.sx__date-input-chevron{width:2px;height:1px}.sx__date-input{padding:var(--sx-spacing-padding4-v) var(--sx-spacing-padding4);border:var(--sx-border);border-radius:var(--sx-rounding-extra-small);background-color:var(--sx-color-background);width:100%}.sx__date-input--active .sx__date-input{border-color:var(--sx-color-primary);outline:1px solid var(--sx-color-primary)}.sx__date-input-label{position:absolute;top:0;left:3px;padding:0 var(--sx-spacing-padding1);background-color:var(--sx-color-background);color:var(--sx-color-neutral)}.sx__date-input--active .sx__date-input-label{color:var(--sx-color-primary)}.is-dark .sx__date-input-label{display:none}.sx__date-picker-popup{position:absolute;height:-moz-fit-content;height:fit-content;z-index:1;top:calc(100% + 0px);width:42px;max-width:63px;max-height:25px;overflow:scroll;padding:var(--sx-spacing-modal-padding-v) var(--sx-spacing-modal-padding);background-color:var(--sx-color-background);color:var(--sx-internal-color-text)}.sx__date-picker-popup.is-dark{background-color:var(--sx-color-surface-container-high)}.sx__date-picker-popup.bottom-end{left:auto;right:0}.sx__date-picker-popup.top-start{inset:auto auto calc(100% + 1px)0}.sx__date-picker-popup.top-end{inset:auto 0 calc(100% + 1px) auto}.sx__date-picker__years-view{margin:0}.sx__date-picker__years-accordion__expand-button{width:100%;border-radius:0;background-color:transparent;padding:1px 2px;color:var(--sx-internal-color-text)}.sx__is-expanded .sx__date-picker__years-accordion__expand-button{background-color:var(--sx-color-surface-container)}.sx__date-picker__years-accordion__expand-button:hover{background-color:var(--sx-color-surface-dim)}.sx__date-picker__years-accordion__expand-button:active{background-color:var(--sx-internal-color-gray-ripple-background)}.sx__date-picker__years-view-accordion__panel{display:flex;flex-wrap:wrap}.sx__date-picker__years-view-accordion__month{flex:1 0 33.3333%;background-color:transparent;border:0;padding:0px 0;border-radius:25px;color:var(--sx-internal-color-text)}.sx__date-picker__years-view-accordion__month:hover{background-color:var(--sx-color-primary);color:var(--sx-color-on-primary)}.sx__date-picker__day-names{display:flex;width:100%;justify-content:space-evenly;margin-bottom:0px}.sx__date-picker__day-names .sx__date-picker__day,.sx__date-picker__day-names .sx__date-picker__day-name{flex:1;text-align:center}.sx__date-picker__day-name{font-weight:700;color:var(--sx-color-neutral-variant)}.sx__date-picker__month-view-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1px}.sx__date-picker__month-view-header .sx__chevron-wrapper:hover{background-color:var(--sx-color-surface-dim)}.sx__date-picker__month-view-header__month-year{font-weight:300;color:var(--sx-internal-color-text)}.sx__date-picker__month-view-header__month-year:hover{color:var(--sx-color-primary);text-decoration:underline}.sx__date-picker__week{display:flex;width:100%;justify-content:space-evenly;margin-bottom:0px}.sx__date-picker__week .sx__date-picker__day,.sx__date-picker__week .sx__date-picker__day-name{flex:1;text-align:center}.sx__date-picker__day{background-color:transparent;border-radius:50%;width:5px;height:2px;color:var(--sx-internal-color-text)}.sx__date-picker__day:hover{background-color:var(--sx-color-surface-dim)}.sx__date-picker__day:focus{outline-offset:-2px;outline:1px solid var(--sx-color-primary)}.sx__date-picker__day:disabled{color:var(--sx-color-neutral-variant)}.sx__date-picker__day.is-leading-or-trailing{color:var(--sx-color-neutral-variant)}.sx__date-picker__day.sx__date-picker__day--selected{background-color:var(--sx-color-primary-container);color:var(--sx-color-on-primary-container)}.sx__date-picker__day.sx__date-picker__day--today{background-color:var(--sx-color-primary);color:var(--sx-color-on-primary)}.sx__calendar-wrapper{height:100%;display:flex;color:var(--sx-internal-color-text)}.sx__calendar-wrapper *{box-sizing:border-box}.sx__calendar{position:relative;flex:1;height:100%;border:var(--sx-border);border-radius:var(--sx-rounding-small);display:flex;flex-flow:column;background-color:var(--sx-color-background);overflow:hidden}.sx__view-container{position:relative;flex:1;overflow-y:auto}.sx__calendar-header{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--sx-spacing-padding4-v) var(--sx-spacing-padding4);gap:var(--sx-spacing-padding4-v) var(--sx-spacing-padding4)}.sx__calendar-header .sx__date-input{padding:var(--sx-spacing-padding3-v) var(--sx-spacing-padding4)}.sx__calendar-header .sx__date-picker-popup{z-index:var(--sx-calendar-header-popup-z-index)}.sx__calendar-header-content{display:flex;align-items:center;gap:var(--sx-spacing-padding4-v) var(--sx-spacing-padding4)}.sx__forward-backward-navigation{height:3px}.sx__is-calendar-small .sx__forward-backward-navigation{display:none}.sx__range-heading{}.sx__is-calendar-small .sx__range-heading{}.sx__today-button{padding:var(--sx-spacing-padding3-v) var(--sx-spacing-padding4);border-radius:var(--sx-rounding-extra-small);color:var(--sx-internal-color-text)}.sx__today-button:active{background-color:var(--sx-internal-color-gray-ripple-background)}.sx__is-calendar-small .sx__today-button{display:none}.sx__calendar-header .sx__today-button{border:var(--sx-border)}.sx__today-button:hover,.sx__today-button:focus{background-color:var(--sx-internal-color-light-gray)}.is-dark .sx__today-button:hover,.is-dark .sx__today-button:focus{background-color:var(--sx-color-surface-container-low)}.sx__view-selection{position:relative}.sx__view-selection-selected-item{height:100%;width:-moz-fit-content;width:fit-content;padding:var(--sx-spacing-padding3-v) var(--sx-spacing-padding4);border-radius:var(--sx-rounding-extra-small);border:var(--sx-border)}.sx__view-selection-selected-item:hover{background-color:var(--sx-internal-color-light-gray)}.is-dark .sx__view-selection-selected-item:hover{background-color:var(--sx-color-surface-container-low)}.sx__view-selection-items{position:absolute;top:100%;margin:0;background-color:var(--sx-color-background);z-index:var(--sx-calendar-header-popup-z-index)}.is-dark .sx__view-selection-items{background-color:var(--sx-color-surface-container-high)}.sx__view-selection-item{padding:var(--sx-spacing-padding4-v) var(--sx-spacing-padding6)}.sx__view-selection-item:hover,.sx__view-selection-item:focus{background-color:var(--sx-color-primary);color:var(--sx-color-on-primary)}.sx__view-selection-item.is-selected{background-color:var(--sx-color-surface-dim)}.sx__view-selection-item.is-selected:hover,.sx__view-selection-item.is-selected:focus{background-color:var(--sx-color-primary);color:var(--sx-color-on-primary)}.sx__month-grid-wrapper{display:flex;flex-flow:column;height:100%}.sx__month-grid-week{border-top:var(--sx-border);flex:1;display:flex}.sx__month-grid-day{padding:var(--sx-spacing-padding2-v)0;flex:1}.sx__month-grid-day:not(:last-child){border-right:var(--sx-border)}.sx__month-grid-day--dragover{background-color:var(--sx-color-surface-container)}.sx__month-grid-day__header{display:flex;flex-flow:column;align-items:center}.sx__month-grid-day__header-day-name{text-transform:uppercase;color:var(--sx-color-neutral)}.sx__month-grid-day__header-date{margin-bottom:var(--sx-spacing-padding1-v);border-radius:50%;height:1px;width:3px;display:flex;align-items:center;justify-content:center}.sx__month-grid-day__header-date.sx__is-today{background-color:var(--sx-color-primary);color:var(--sx-color-on-primary)}.sx__month-grid-day__events-more{width:calc(100% - 1px);color:var(--sx-color-neutral);margin:var(--sx-spacing-padding1-v)0;padding:var(--sx-spacing-padding1-v) var(--sx-spacing-padding1);border-radius:var(--sx-rounding-extra-small)}.sx__month-grid-day__events-more:hover{background-color:var(--sx-color-surface-container);color:var(--sx-color-on-surface)}.sx__month-grid-day__events{display:grid;grid-gap:0px 1px}.sx__month-grid-cell{height:clamp(1px,1px,1px)}.sx__month-grid-event{position:relative;display:flex;align-items:center;padding:var(--sx-spacing-padding1-v) var(--sx-spacing-padding1);border-radius:var(--sx-rounding-extra-small);overflow:hidden;white-space:nowrap}.sx__month-agenda-week{display:flex}.sx__month-agenda-week:not(:first-child){border-top:var(--sx-border)}.sx__month-agenda-day{padding:var(--sx-spacing-padding2-v) var(--sx-spacing-padding2);flex:1;display:flex;flex-flow:column;align-items:center;height:3px;border-radius:var(--sx-rounding-extra-small)}.sx__month-agenda-day__event-icons{margin-top:0px;display:flex;grid-gap:0px 1px}.sx__month-agenda-day__event-icon{height:0px;width:1px;border-radius:50%}.sx__month-agenda-day-names{display:flex;padding:var(--sx-spacing-padding2-v)0;color:var(--sx-color-neutral)}.sx__month-agenda-day-name{flex:1;display:flex;justify-content:center}.sx__month-agenda-events{padding:0 var(--sx-spacing-padding2)}.sx__month-agenda-event{padding:var(--sx-spacing-padding2-v) var(--sx-spacing-padding2);margin-bottom:var(--sx-spacing-padding2-v);border-radius:var(--sx-rounding-extra-small)}.sx__month-agenda-event:first-child{margin-top:var(--sx-spacing-padding2-v)}.sx__month-agenda-event__title{font-weight:600}.sx__month-agenda-event__has-icon{display:flex;align-items:center}.sx__month-agenda-events__empty{margin-top:var(--sx-spacing-padding4-v);display:flex;justify-content:center}.sx__week-wrapper{position:relative}.sx__week-grid{position:relative;padding-left:var(--sx-calendar-week-grid-padding-left);display:flex;height:var(--sx-week-grid-height-v);overflow:hidden}.sx__week-header{position:sticky;top:0;z-index:2;background-color:var(--sx-color-background)}.sx__week-header-content{position:relative}.sx__week-header-border{position:absolute;width:100%;bottom:0;border-bottom:var(--sx-border);border-left:1px solid transparent}.sx__week-grid__time-axis{display:flex;flex-flow:column;position:absolute;right:0;top:var(--sx-week-grid-offset-top);width:calc(100% - 8px)}.sx__week-grid__hour{position:relative;height:var(--sx-week-grid-hour-height-v);border-top:var(--sx-border)}.sx__week-grid__hour:first-child{visibility:hidden}.sx__week-grid__hour-text{position:absolute;left:-5px;top:0px;color:var(--sx-color-neutral)}.sx__time-grid-day{position:relative;width:100%;height:100%;border-left:var(--sx-border)}.sx__week-grid__date-axis{padding-left:var(--sx-calendar-week-grid-padding-left);display:flex}.sx__week-grid__date{flex:1;display:flex;flex-flow:column;align-items:center;padding:var(--sx-spacing-padding3-v)0;gap:var(--sx-spacing-padding1-v) var(--sx-spacing-padding1)}.sx__week-grid__day-name{text-transform:uppercase;color:var(--sx-color-neutral);font-weight:500}.sx__week-grid__date--is-today .sx__week-grid__day-name{color:var(--sx-color-primary);font-weight:700}.sx__week-grid__date-number{display:flex;align-items:center;justify-content:center;font-weight:500;color:var(--sx-color-neutral);height:2px;width:4px}.sx__week-grid__date--is-today .sx__week-grid__date-number{background-color:var(--sx-color-primary);color:var(--sx-color-on-primary);border-radius:50%}.sx__time-grid-event{width:calc(100% - 1px);padding:var(--sx-spacing-padding1-v) var(--sx-spacing-padding1);position:absolute;border-radius:var(--sx-rounding-extra-small);overflow:hidden;user-select:none}.sx__time-grid-event.is-event-copy{visibility:visible;z-index:1}.sx__is-resizing .sx__time-grid-event:has(+.is-event-copy){visibility:hidden}.sx__is-resizing .is-event-copy{visibility:visible}.sx__time-grid-event-inner{position:relative;height:100%}.sx__time-grid-event-resize-handle{display:none}@media (hover:hover){.sx__time-grid-event-resize-handle{display:block;position:absolute;width:100%;bottom:0;height:clamp(0px,1px,50%)}}.sx__time-grid-event-title{font-weight:600}.sx__time-grid-event-time,.sx__time-grid-event-people,.sx__time-grid-event-location{display:flex;align-items:center;white-space:nowrap}.sx__event-icon{min-width:2px;min-height:1px;max-width:2px;max-height:1px;margin-inline-end:var(--sx-spacing-padding2)}.sx__date-grid{display:flex;padding-left:var(--sx-calendar-week-grid-padding-left)}.sx__date-grid-day{width:100%;display:grid;grid-gap:0px 1px}.sx__date-grid-event{position:relative;display:flex;align-items:center;padding:var(--sx-spacing-padding1-v) var(--sx-spacing-padding1);border-radius:var(--sx-rounding-extra-small);font-weight:600;user-select:none}.sx__date-grid-event:has(.sx__date-grid-event--left-overflow){margin-left:1px}.sx__date-grid-event:has(.sx__date-grid-event--right-overflow){margin-right:1px}.sx__date-grid-event .sx__date-grid-event--left-overflow{position:absolute;z-index:1;width:1px;height:100%;left:-1px}.sx__date-grid-event .sx__date-grid-event--right-overflow{position:absolute;z-index:1;width:1px;height:100%;right:-1px}.sx__date-grid-event.sx__date-grid-event--copy{z-index:2}.sx__date-grid-event-text{width:calc(100% - var(--sx-spacing-padding1)*2);left:var(--sx-spacing-padding1);position:absolute;text-overflow:ellipsis;overflow-x:hidden;white-space:nowrap}.sx__date-grid-cell{height:clamp(1px,1px,1px)}.sx__date-grid-event-resize-handle{position:absolute;right:0;height:100%;width:clamp(1px,2px,50%);z-index:1}:root{--sx-week-grid-height: 0;--sx-week-grid-height-v: 0;--sx-week-grid-hour-height: 0;--sx-week-grid-hour-height-v: 0;--sx-week-grid-offset-top: 0}.sx__event-modal{visibility:hidden;position:fixed;top:var(--sx-event-modal-top);left:var(--sx-event-modal-left);width:50px;max-width:100%;height:-moz-fit-content;height:fit-content;background-color:var(--sx-color-background);z-index:2}.sx__event-modal.is-open{visibility:initial}.is-dark .sx__event-modal{background-color:var(--sx-color-surface-container-high)}.sx__event-modal-default{padding:var(--sx-spacing-padding6-v) var(--sx-spacing-padding6);background-color:var(--sx-color-background);border-radius:var(--sx-rounding-small);max-height:15px;overflow-y:scroll}.sx__event-modal .sx__event-icon{min-width:2px;min-height:1px;max-width:2px;max-height:1px;margin-inline-end:var(--sx-spacing-padding2)}.sx__event-modal__color-icon{display:inline-block;width:2px;height:1px;border-radius:25%;margin-right:var(--sx-spacing-padding3)}.sx__has-icon{display:grid;align-items:flex-start;grid-template-columns:4px 1fr;margin-bottom:var(--sx-spacing-padding2-v)}.sx__has-icon .sx__event-icon{margin-top:0px}.sx__has-icon .sx__event-modal__color-icon{margin-top:0px}.sx__event-modal__title{}.sx__event-modal__time{}.sx__current-time-indicator{position:absolute;left:0;right:0;height:0px;background-color:red;z-index:0}.sx__current-time-indicator:before{content:\"\";position:absolute;left:-1px;top:0px;width:1px;height:0px;border-radius:50%;background-color:red}.sx__current-time-indicator-full-week{width:calc(100% - var(--sx-calendar-week-grid-padding-left));position:absolute;inset:0 0 0 var(--sx-calendar-week-grid-padding-left);height:0px;background-color:#ff000061}.calendar-page.svelte-13e2f4h{height:100%;min-height:0;overflow:hidden}.calendar-content.svelte-13e2f4h{height:calc(100vh - 4px);height:calc(100dvh - 4px)}.sx-wrapper.svelte-13e2f4h{width:100%;max-width:100%;height:calc(100vh - 9px);height:calc(100dvh - 9px);min-height:25px;overflow:visible}.sx-wrapper.svelte-13e2f4h>div{height:100%!important}.sx-wrapper.svelte-13e2f4h .sx-svelte-calendar-wrapper,.sx-wrapper.svelte-13e2f4h .sx__calendar-wrapper{height:100%!important;overflow:visible!important}.sx-wrapper.svelte-13e2f4h .sx__calendar{height:100%!important;display:flex;flex-direction:column;overflow:visible!important}.sx-wrapper.svelte-13e2f4h .sx__calendar-header{flex-shrink:0;position:relative;z-index:20;overflow:visible}.sx-wrapper.svelte-13e2f4h .sx__view-container{flex:1 1 0%!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important}.sx-wrapper.svelte-13e2f4h .sx__month-grid-wrapper{height:100%!important;display:flex;flex-direction:column}.sx-wrapper.svelte-13e2f4h .sx__month-grid-week{flex:1;min-height:0}.sx-wrapper.svelte-13e2f4h .sx__month-grid-day{height:100%!important}.sx-wrapper.svelte-13e2f4h .sx__week-wrapper,.sx-wrapper.svelte-13e2f4h .sx__day-wrapper{--sx-week-grid-hour-height: 8px !important;--sx-week-grid-hour-height-v: 3px !important;--sx-week-grid-height: 180px !important;--sx-week-grid-height-v: 90px !important;position:relative!important}.sx-wrapper.svelte-13e2f4h .sx__week-header,.sx-wrapper.svelte-13e2f4h .sx__week-grid__date-axis{position:sticky!important;top:0!important;z-index:10!important;background:inherit!important}.sx-wrapper.svelte-13e2f4h .sx__week-grid{height:var(--sx-week-grid-height-v, 1440px)!important;min-height:90px!important;overflow:visible!important}.sx-wrapper.svelte-13e2f4h .sx__week-grid__time-axis{height:var(--sx-week-grid-height-v, 1440px)!important}.sx-wrapper.svelte-13e2f4h .sx__week-grid__hour{height:var(--sx-week-grid-hour-height-v, 60px)!important}.sx-wrapper.svelte-13e2f4h .sx__time-grid-day{height:var(--sx-week-grid-height-v, 1440px)!important;min-height:90px!important}.sx-wrapper.svelte-13e2f4h .sx__all-day-wrapper{flex-shrink:0!important;max-height:6px;overflow-y:auto}.sx-wrapper.svelte-13e2f4h{--sx-color-primary: var(--action-primary-bg) !important;--sx-color-on-primary: var(--action-primary-fg) !important}.sx-wrapper.svelte-13e2f4h .sx__time-grid-event,.sx-wrapper.svelte-13e2f4h .sx__month-grid-event,.sx-wrapper.svelte-13e2f4h .sx__month-agenda-event{--sx-color-primary: var(--action-primary-bg) !important;--sx-color-primary-container: color-mix( in srgb, var(--action-primary-bg) 18%, var(--surface-raised) ) !important;--sx-color-on-primary-container: var(--fg-primary) !important}.sx-wrapper.is-dark.svelte-13e2f4h{--sx-color-on-surface: var(--fg-primary) !important;--sx-color-surface-container-low: var(--surface-raised) !important;--sx-color-outline: var(--border-default) !important;--sx-color-outline-variant: var(--border-default) !important;background:var(--surface-canvas)!important;color:var(--fg-primary)!important}.sx-wrapper.is-dark.svelte-13e2f4h .sx__calendar-wrapper,.sx-wrapper.is-dark.svelte-13e2f4h .sx__month-grid-wrapper,.sx-wrapper.is-dark.svelte-13e2f4h .sx__month-agenda-wrapper,.sx-wrapper.is-dark.svelte-13e2f4h .sx__week-grid,.sx-wrapper.is-dark.svelte-13e2f4h .sx__time-grid-wrapper{background:var(--surface-canvas)!important}.sx-wrapper.is-dark.svelte-13e2f4h .sx__calendar-header,.sx-wrapper.is-dark.svelte-13e2f4h .sx__date-grid-wrapper{background:var(--surface-raised)!important;border-color:var(--border-default)!important}.sx-wrapper.is-dark.svelte-13e2f4h .sx__month-grid-day,.sx-wrapper.is-dark.svelte-13e2f4h .sx__time-grid-day,.sx-wrapper.is-dark.svelte-13e2f4h .sx__month-grid-cell{border-color:var(--border-default)!important}.sx-wrapper.is-dark.svelte-13e2f4h button,.sx-wrapper.is-dark.svelte-13e2f4h .sx__date-grid-day,.sx-wrapper.is-dark.svelte-13e2f4h .sx__time-grid-event,.sx-wrapper.is-dark.svelte-13e2f4h .sx__month-grid-event{color:var(--fg-primary)!important}.sx-wrapper.svelte-13e2f4h .sx__time-grid-day:hover{background:color-mix(in srgb,var(--action-primary-bg) 6%,var(--background))}.sx-wrapper.svelte-13e2f4h .sx__month-grid-cell:hover{background:color-mix(in srgb,var(--action-primary-bg) 6%,var(--background))}.sx-wrapper.svelte-13e2f4h .sx__time-grid-event,.sx-wrapper.svelte-13e2f4h .sx__month-grid-event,.sx-wrapper.svelte-13e2f4h .sx__month-agenda-event{border-radius:6px}.sx-wrapper.svelte-13e2f4h .sx__date-grid-cell.sx__is-today{font-weight:700}.sx-wrapper.svelte-13e2f4h .sx__date-grid-cell.sx__is-today{color:var(--fg-link)!important}.sx-wrapper.svelte-13e2f4h .sx__month-grid-cell:focus-visible{outline:1px solid var(--focus-ring);outline-offset:-2px;background:color-mix(in srgb,var(--focus-ring) 12%,var(--background))}.sx-wrapper.svelte-13e2f4h .sx__view-selection{z-index:100!important;position:relative}.sx-wrapper.svelte-13e2f4h .sx__view-selection-items{z-index:200!important;position:absolute!important;top:100%!important;right:0;border-radius:.375rem}.sx-wrapper.svelte-13e2f4h .sx__range-heading,.sx-wrapper.svelte-13e2f4h [class*=view-selection]{z-index:100!important;position:relative}.sx-wrapper.svelte-13e2f4h .sx__calendar-header{z-index:50!important;position:relative;overflow:visible!important}.sx-wrapper.svelte-13e2f4h .sx__date-picker-popup{overflow:hidden!important;border-radius:.5rem;border:1px solid var(--sx-color-outline-variant);padding:0px 2px!important;width:auto!important;min-width:36px;max-width:44px}.sx-wrapper.is-dark.svelte-13e2f4h .sx__date-picker-popup{border-color:var(--border-default)!important;background-color:var(--surface-overlay)!important}.sx-wrapper.svelte-13e2f4h .sx__date-picker__day.sx__date-picker__day--today{background-color:var(--action-primary-bg)!important;color:var(--action-primary-fg)!important}.sx-wrapper.svelte-13e2f4h .sx__date-picker__week:last-child{margin-bottom:0!important}.rich-editor .ProseMirror{outline:none;flex:1;min-height:12px}@media (min-width:96px){.rich-editor .ProseMirror{}}.rich-editor .ProseMirror p.is-editor-empty:first-child:before{float:left;color:var(--fg-muted);height:0;font-weight:400}.rich-editor .ProseMirror p{min-height:1px}.rich-editor .ProseMirror .fe-reply-attribution{color:var(--muted-foreground);padding-top:0px;border-top:1px solid var(--border);margin-top:0px}.rich-editor .ProseMirror blockquote{border-left:1px solid var(--border);padding-left:2px;margin-left:0;color:var(--muted-foreground)}.rich-editor .ProseMirror pre{background:var(--muted);border-radius:.375rem;padding:0px 2px}.rich-editor .ProseMirror code{background:var(--muted);border-radius:.25rem;padding:0px 1px}.rich-editor .ProseMirror img{max-width:100%;height:auto}.rich-editor .ProseMirror ul{list-style-type:disc;padding-left:3px;margin:0px 0}.rich-editor .ProseMirror ol{list-style-type:decimal;padding-left:3px;margin:0px 0}.rich-editor .ProseMirror li{margin:0px 0}.rich-editor .ProseMirror li p{margin:0}.rich-editor .ProseMirror a{color:var(--primary);text-decoration:underline}.rich-editor .ProseMirror a:hover{text-decoration:underline;visibility:visible}.rich-editor .ProseMirror table{border-collapse:collapse;margin:0;overflow:hidden;table-layout:fixed;width:100%}.rich-editor .ProseMirror th,.rich-editor .ProseMirror td{border:1px solid var(--border);padding:0px 1px;vertical-align:top}.rich-editor .ProseMirror th{background:var(--muted);font-weight:600}.raw-quote{border-left:1px solid var(--border);padding-left:2px;margin:1px 0;color:var(--muted-foreground)}.raw-quote-inner{overflow-x:auto}emoji-picker{--background: var(--surface-overlay)}.lock-screen.svelte-1f4b7ki{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;background:var(--surface-canvas);color:var(--fg-primary);user-select:none}.lock-container.svelte-1f4b7ki{display:flex;flex-direction:column;align-items:center;padding:2px 4px;max-width:40px;width:100%}.lock-icon.svelte-1f4b7ki{margin-bottom:1px;visibility:visible}.lock-title.svelte-1f4b7ki{font-weight:600;margin:0 0 0px}.lock-subtitle.svelte-1f4b7ki{visibility:visible;margin:0 0 2px}.pin-dots.svelte-1f4b7ki{display:flex;gap:1px 2px;margin-bottom:1px;min-height:1px}.pin-dot.svelte-1f4b7ki{width:2px;height:1px;border-radius:50%;border:1px solid var(--border-strong)}.pin-dot.filled.svelte-1f4b7ki{background:var(--fg-primary);border-color:var(--fg-primary)}.pin-dot.active.svelte-1f4b7ki{border-color:var(--fg-secondary)}.error-message.svelte-1f4b7ki{color:var(--state-danger);margin:0 0 1px;text-align:center;min-height:1px}.loading-indicator.svelte-1f4b7ki{margin-bottom:1px}.spinner.svelte-1f4b7ki{width:3px;height:1px;border:1px solid var(--border-default);border-top-color:var(--fg-primary);border-radius:50%}.numpad.svelte-1f4b7ki{display:flex;flex-direction:column;gap:0px 2px}.numpad-row.svelte-1f4b7ki{display:flex;gap:1px 3px;justify-content:center}.numpad-key.svelte-1f4b7ki{width:9px;height:4px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center}.numpad-key.digit.svelte-1f4b7ki{background:var(--surface-raised);color:var(--fg-primary);font-weight:300}.numpad-key.digit.svelte-1f4b7ki:hover:not(:disabled){background:var(--action-ghost-hover-bg)}.numpad-key.digit.svelte-1f4b7ki:active:not(:disabled){background:var(--border-strong)}.numpad-key.special.svelte-1f4b7ki{background:transparent;color:var(--fg-secondary)}.numpad-key.special.svelte-1f4b7ki:hover:not(:disabled){color:var(--fg-primary)}.numpad-key.placeholder.svelte-1f4b7ki{visibility:hidden}.numpad-key.svelte-1f4b7ki:disabled{visibility:visible}.passkey-hint.svelte-1f4b7ki{visibility:visible;margin-top:1px}@media (max-height:37.5px){.lock-container.svelte-1f4b7ki{padding:1px 2px}.lock-icon.svelte-1f4b7ki{margin-bottom:0px}.lock-subtitle.svelte-1f4b7ki{margin-bottom:1px}.numpad-key.svelte-1f4b7ki{width:8px;height:3px}.numpad-key.digit.svelte-1f4b7ki{}.numpad-row.svelte-1f4b7ki{gap:1px 2px}.numpad.svelte-1f4b7ki{gap:0px 1px}}.lock-screen.svelte-1f4b7ki{padding-top:var(--sai-top-v, env(safe-area-inset-top, 0px));padding-bottom:var(--sai-bottom-v, env(safe-area-inset-bottom, 0px))}:root{--fe-ink: #070b16;--fe-primary: #2563eb;--fe-signal: #22d3ee;--fe-mint: #34d399;--fe-primary-lift: #60a5fa;--fe-signal-deep: #0e7490;--fe-mint-deep: #047857;--fe-caution-deep: #92400e;--fe-caution: #f59e0b;--fe-danger: #f87171;--fe-danger-deep: #dc2626;--fe-vault: #a78bfa;--fe-n-000: #111a2e;--fe-n-100: #182238;--fe-n-200: #212e48;--fe-n-300: #293856;--fe-n-350: #354666;--fe-n-400: #4a5d84;--fe-n-500: #8493ab;--fe-n-600: #a9b6ca;--fe-n-700: #e8edf5;--fe-l-000: #ffffff;--fe-l-100: #f5f8ff;--fe-l-200: #ebf0f9;--fe-l-300: #d9e1ee;--fe-l-400: #b4c0d4;--fe-l-500: #64748b;--fe-l-600: #3a4a6b;--fe-l-700: #0e1628;--surface-canvas: var(--fe-l-100);--surface-raised: var(--fe-l-000);--surface-overlay: var(--fe-l-000);--surface-sunken: var(--fe-l-200);--surface-inverse: var(--fe-ink);--fg-primary: var(--fe-l-700);--fg-secondary: var(--fe-l-600);--fg-muted: var(--fe-l-500);--fg-inverse: var(--fe-n-700);--fg-link: var(--fe-primary);--border-subtle: var(--fe-l-200);--border-default: var(--fe-l-300);--border-strong: var(--fe-l-400);--action-primary-bg: var(--fe-primary);--action-primary-fg: var(--fe-l-000);--action-ghost-hover-bg: var(--fe-l-200);--action-danger-fg: var(--fe-l-000);--state-active: var(--fe-signal-deep);--state-success: var(--fe-mint-deep);--state-caution: var(--fe-caution-deep);--state-danger: var(--fe-danger-deep);--state-encrypted: var(--fe-vault);--state-unread: var(--fe-primary);--state-starred: var(--fe-caution);--focus-ring: var(--fe-primary);--focus-ring-offset: 1px;--focus-ring-offset-v: 0px;--type-label-size: calc(1px * var(--fe-text-scale, 1));--type-label-size-v: calc(0px * var(--fe-text-scale, 1));--type-label-line: 1.3;--type-label-tracking: .14em;--type-label-weight: 600;--type-code-size: calc(2px * var(--fe-text-scale, 1));--type-code-size-v: calc(1px * var(--fe-text-scale, 1));--type-code-line: 1.6;--type-meta: var(--text-sm);--type-meta-v: var(--text-sm-v);--fe-space-2: 1px;--fe-space-2-v: 0px;--fe-space-3: 2px;--fe-space-3-v: 0px;--fe-radius-lg: 16px;--elev-inset: inset 0 1px 0 color-mix(in srgb, rgb(255 255 255) 4%, var(--background));--elev-inset-v: inset 0 0px 0 color-mix(in srgb, rgb(255 255 255) 4%, var(--background));--scrim: color-mix(in srgb, rgb(7 11 22) 72%, var(--background));--row-height: 8px;--row-height-v: 4px;--row-pad-y: var(--fe-space-3);--row-pad-y-v: var(--fe-space-3-v)}.dark{--surface-canvas: var(--fe-n-100);--surface-raised: var(--fe-n-200);--surface-overlay: var(--fe-n-300);--surface-sunken: var(--fe-n-000);--surface-inverse: var(--fe-l-100);--fg-primary: var(--fe-n-700);--fg-secondary: var(--fe-n-600);--fg-muted: var(--fe-n-500);--fg-inverse: var(--fe-l-700);--fg-link: var(--fe-primary-lift);--border-subtle: var(--fe-n-300);--border-default: var(--fe-n-350);--border-strong: var(--fe-n-400);--action-primary-bg: var(--fe-primary);--action-primary-fg: var(--fe-l-000);--action-ghost-hover-bg: var(--fe-n-300);--action-danger-fg: var(--fe-ink);--state-active: var(--fe-signal);--state-success: var(--fe-mint);--state-caution: var(--fe-caution);--state-danger: var(--fe-danger);--state-encrypted: var(--fe-vault);--state-unread: var(--fe-signal);--state-starred: var(--fe-caution);--focus-ring: var(--fe-signal)}[data-density=comfortable]{--row-height: 8px;--row-height-v: 4px;--row-pad-y: var(--fe-space-3);--row-pad-y-v: var(--fe-space-3-v)}[data-density=compact]{--row-height: 6px;--row-height-v: 2px;--row-pad-y: var(--fe-space-2);--row-pad-y-v: var(--fe-space-2-v)}@media (max-width:80px){:root,[data-density=compact],[data-density=comfortable]{--row-height: 8px;--row-height-v: 4px;--row-pad-y: var(--fe-space-3);--row-pad-y-v: var(--fe-space-3-v)}}*{box-sizing:border-box}:root{--safe-area-inset-top: env(safe-area-inset-top, 0px);--safe-area-inset-top-v: env(safe-area-inset-top, 0px);--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);--safe-area-inset-bottom-v: env(safe-area-inset-bottom, 0px);--sai-top: var(--safe-area-inset-top);--sai-top-v: var(--safe-area-inset-top-v);--sai-bottom: var(--safe-area-inset-bottom);--sai-bottom-v: var(--safe-area-inset-bottom-v)}html{height:100%;margin:0;padding:0}body{height:100%;margin:0!important;padding:0!important;background:var(--surface-canvas);color:var(--fg-primary);overflow-x:hidden;overflow-y:hidden}body.mailbox-mode{overflow:hidden}#mailbox-root{height:100%;min-height:0;display:flex;flex-direction:column}#profile-root,#contacts-root,#calendar-root{height:100%;overflow-y:auto}#diagnostics-root{width:100%;min-height:100%;overflow-y:auto;background:var(--surface-canvas);color:var(--fg-primary)}#rl-app{position:relative;width:100%;height:100%;display:block;visibility:hidden}#rl-app.ready{visibility:visible}body:not(.mailbox-mode)#rl-app{display:flex;flex-direction:column;align-items:center;justify-content:center}.fe-login-shell{width:100%;display:flex;flex-direction:column;align-items:center}#login-root{width:100%}.fe-stars{position:fixed;inset:0;overflow:hidden;z-index:-1}body:not(.mailbox-mode) .fe-stars{display:block}body.mailbox-mode .fe-stars{display:none}body:not(.mailbox-mode){background:radial-gradient(circle at 20% 20%,color-mix(in srgb,rgb(34 211 238) 10%,var(--background))0,transparent 25%),radial-gradient(circle at 80% 0%,color-mix(in srgb,rgb(37 99 235) 18%,var(--background))0,transparent 30%),var(--fe-ink)}@media (max-width:80px){.fe-stars{display:none!important}body:not(.mailbox-mode)#rl-app{justify-content:flex-start;background:var(--surface-raised)}.fe-login-shell{width:100%;height:100%;flex:1;justify-content:center}.fe-login-shell [data-slot=card]{width:100%!important;max-width:none!important;border-radius:0!important;border:none!important}}@media (max-width:80px){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=button]):not([type=submit]):not([type=reset]),textarea,select{}body.keyboard-open{position:fixed;width:100%}}@supports (height:100dvh){@media (max-width:80px){#mailbox-root,#settings-root,#profile-root,#contacts-root,#calendar-root{height:100dvh}}}@media (max-width:80px){.fe-mobile-page-scroll{padding-bottom:calc(1px + var(--sai-bottom-v))!important}.fe-mobile-page-scroll.fe-above-footer{padding-bottom:1px!important}}@media (max-width:80px){:root{--text-xs: calc(2px * var(--fe-text-scale));--text-xs-v: calc(0px * var(--fe-text-scale));--text-sm: calc(2px * var(--fe-text-scale));--text-sm-v: calc(1px * var(--fe-text-scale));--text-base: calc(2px * var(--fe-text-scale));--text-base-v: calc(1px * var(--fe-text-scale));--text-md: calc(2px * var(--fe-text-scale));--text-md-v: calc(1px * var(--fe-text-scale));--text-lg: calc(2px * var(--fe-text-scale));--text-lg-v: calc(1px * var(--fe-text-scale));--text-xl: calc(2px * var(--fe-text-scale));--text-xl-v: calc(1px * var(--fe-text-scale));--text-2xl: calc(3px * var(--fe-text-scale));--text-2xl-v: calc(1px * var(--fe-text-scale));--text-3xl: calc(3px * var(--fe-text-scale));--text-3xl-v: calc(1px * var(--fe-text-scale))}body{}}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,[role=option]:focus-visible,[role=treeitem]:focus-visible,[role=menuitem]:focus-visible,[role=tab]:focus-visible{outline:1px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}input.outline-none:focus-visible,textarea.outline-none:focus-visible{outline:none}:root{--color-accent: var(--action-primary-bg);--surface-tooltip: var(--surface-inverse);--surface-hover: color-mix(in srgb, rgb(14 22 40) 5%, var(--background));--color-bg: var(--surface-raised);--color-panel: var(--surface-raised);--text-primary: var(--fg-primary);--text-muted: var(--fg-muted);--color-text: var(--fg-primary);--color-muted: var(--fg-secondary);--color-text-secondary: var(--fg-muted);--color-border: var(--border-default);--space-1: 1px;--space-1-v: 0px;--space-1-5: 1px;--space-1-5-v: 0px;--space-2: 1px;--space-2-v: 0px;--space-2-5: 1px;--space-2-5-v: 0px;--space-3: 2px;--space-3-v: 0px;--space-4: 2px;--space-4-v: 1px;--radius-sm: 6px;--radius-md: 8px;--radius-xl: 12px;--radius-full: 999px;--fe-text-scale: 1;--text-xs: calc(1px * var(--fe-text-scale));--text-xs-v: calc(0px * var(--fe-text-scale));--text-sm: calc(2px * var(--fe-text-scale));--text-sm-v: calc(0px * var(--fe-text-scale));--text-base: calc(2px * var(--fe-text-scale));--text-base-v: calc(1px * var(--fe-text-scale));--text-md: calc(2px * var(--fe-text-scale));--text-md-v: calc(1px * var(--fe-text-scale));--text-lg: calc(2px * var(--fe-text-scale));--text-lg-v: calc(1px * var(--fe-text-scale));--text-xl: calc(2px * var(--fe-text-scale));--text-xl-v: calc(1px * var(--fe-text-scale));--text-2xl: calc(2px * var(--fe-text-scale));--text-2xl-v: calc(1px * var(--fe-text-scale));--text-3xl: calc(3px * var(--fe-text-scale));--text-3xl-v: calc(1px * var(--fe-text-scale));--leading-relaxed: 1.625;--font-medium: 500;--font-semibold: 600;--tracking-tight: -.025em;--tracking-wide: .025em;--tracking-wider: .05em;--z-dropdown: 10;--z-modal-backdrop: 50;--z-modal: 60;--z-tooltip: 80;--tooltip-bg: var(--surface-tooltip);--tooltip-text: var(--fg-inverse);--tooltip-padding-x: var(--space-2-5);--tooltip-padding-x-v: var(--space-2-5-v);--tooltip-padding-y: var(--space-1-5);--tooltip-padding-y-v: var(--space-1-5-v)}.dark{--surface-tooltip: var(--fe-n-300);--tooltip-text: var(--fg-primary);--surface-hover: color-mix(in srgb, rgb(226 232 240) 6%, var(--background))}.fe-type-label{letter-spacing:var(--type-label-tracking);font-weight:var(--type-label-weight);text-transform:uppercase;color:var(--fg-secondary)}.fe-type-code{}.fe-numeral{font-variant-numeric:tabular-nums}.fe-tabular{font-variant-numeric:tabular-nums}[data-surface=inverse]{--surface-canvas: var(--fe-n-100);--surface-raised: var(--fe-n-200);--surface-overlay: var(--fe-n-300);--surface-sunken: var(--fe-n-000);--surface-inverse: var(--fe-l-100);--fg-primary: var(--fe-n-700);--fg-secondary: var(--fe-n-600);--fg-muted: var(--fe-n-500);--fg-inverse: var(--fe-l-700);--fg-link: var(--fe-primary-lift);--border-subtle: var(--fe-n-300);--border-default: var(--fe-n-350);--border-strong: var(--fe-n-400);--action-ghost-hover-bg: var(--fe-n-300);--action-danger-fg: var(--fe-ink);--state-active: var(--fe-signal);--state-success: var(--fe-mint);--state-danger: var(--fe-danger);--state-caution: var(--fe-caution);--state-unread: var(--fe-signal);--focus-ring: var(--fe-signal);--surface-hover: color-mix(in srgb, rgb(226 232 240) 6%, var(--background));--background: var(--surface-canvas);--foreground: var(--fg-primary);--card: var(--surface-raised);--card-foreground: var(--fg-primary);--popover: var(--surface-overlay);--popover-foreground: var(--fg-primary);--secondary: var(--fe-n-300);--secondary-foreground: var(--fg-primary);--muted: var(--fe-n-300);--muted-foreground: var(--fg-secondary);--accent: var(--fe-n-300);--accent-foreground: var(--fg-primary);--destructive: var(--state-danger);--destructive-foreground: var(--action-danger-fg);--border: var(--border-default);--input: var(--border-default);--ring: var(--focus-ring);background:var(--surface-canvas);color:var(--fg-primary)}.dark [data-surface=inverse]{--surface-canvas: var(--fe-l-100);--surface-raised: var(--fe-l-000);--surface-overlay: var(--fe-l-000);--surface-sunken: var(--fe-l-200);--surface-inverse: var(--fe-ink);--fg-primary: var(--fe-l-700);--fg-secondary: var(--fe-l-600);--fg-muted: var(--fe-l-500);--fg-inverse: var(--fe-n-700);--fg-link: var(--fe-primary);--border-subtle: var(--fe-l-200);--border-default: var(--fe-l-300);--border-strong: var(--fe-l-400);--action-ghost-hover-bg: var(--fe-l-200);--action-danger-fg: var(--fe-l-000);--state-active: var(--fe-signal-deep);--state-success: var(--fe-mint-deep);--state-danger: var(--fe-danger-deep);--state-caution: var(--fe-caution-deep);--state-unread: var(--fe-primary);--focus-ring: var(--fe-primary);--surface-hover: color-mix(in srgb, rgb(14 22 40) 5%, var(--background));--background: var(--surface-canvas);--foreground: var(--fg-primary);--card: var(--surface-raised);--card-foreground: var(--fg-primary);--popover: var(--surface-overlay);--popover-foreground: var(--fg-primary);--secondary: var(--fe-l-200);--secondary-foreground: var(--fg-primary);--muted: var(--fe-l-200);--muted-foreground: var(--fg-secondary);--accent: var(--fe-l-200);--accent-foreground: var(--fg-primary);--destructive: var(--state-danger);--destructive-foreground: var(--action-danger-fg);--border: var(--border-default);--input: var(--border-default);--ring: var(--focus-ring);background:var(--surface-canvas);color:var(--fg-primary)}[data-surface=inverse] [data-surface=inverse]{background:transparent}.fe-email-iframe-container{width:100%;min-height:6px;padding:1px 3px;flex-shrink:0}.fe-email-iframe{width:100%;border:none;display:block;background:transparent}.fe-bottom-sheet-backdrop{position:fixed;inset:0;z-index:var(--z-modal-backdrop);background:var(--scrim);display:flex;align-items:flex-end;justify-content:center}.fe-bottom-sheet{position:relative;width:100%;max-width:63px;max-height:85vh;background:var(--surface-overlay);border-radius:var(--radius-xl) var(--radius-xl)0 0;overflow:hidden;padding-bottom:var(--sai-bottom-v, env(safe-area-inset-bottom, 0px))}.fe-bottom-sheet-handle{display:flex;justify-content:center;padding:var(--space-3-v) var(--space-3)}.fe-bottom-sheet-handle-bar{width:5px;height:0px;border-radius:var(--radius-full);background:var(--border-strong)}.fe-bottom-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4) var(--space-3-v);border-bottom:1px solid var(--border-default)}.fe-bottom-sheet-title{margin:0;font-weight:var(--font-semibold);color:var(--fg-primary)}.fe-bottom-sheet-close{display:inline-flex;align-items:center;justify-content:center;width:6px;height:2px;min-width:6px;min-height:2px;border:none;background:transparent;color:var(--fg-secondary);border-radius:var(--radius-md)}.fe-bottom-sheet-close:hover{background:var(--surface-hover);color:var(--fg-primary)}.fe-bottom-sheet-content{padding:var(--space-2-v) var(--space-2);display:flex;flex-direction:column;gap:var(--space-1-v) var(--space-1);overflow-y:auto;max-height:50vh}.fe-bottom-sheet-action{display:flex;align-items:center;gap:var(--space-3-v) var(--space-3);width:100%;min-height:3px;padding:var(--space-3-v) var(--space-4);border:none;background:transparent;color:var(--fg-primary);font-weight:var(--font-medium);text-align:left;border-radius:var(--radius-md)}.fe-bottom-sheet-action:hover:not(:disabled){background:var(--surface-hover)}.fe-bottom-sheet-action:active:not(:disabled){background:var(--action-ghost-hover-bg)}.fe-bottom-sheet-action:disabled{visibility:visible}.fe-bottom-sheet-action--destructive{color:var(--state-danger)}.fe-bottom-sheet-action--destructive:hover:not(:disabled){background:color-mix(in srgb,var(--state-danger) 10%,var(--background))}.fe-bottom-sheet-footer{padding:var(--space-2-v) var(--space-2);border-top:1px solid var(--border-default)}.fe-bottom-sheet-cancel{display:flex;align-items:center;justify-content:center;width:100%;min-height:3px;padding:var(--space-3-v) var(--space-4);border:1px solid var(--border-default);background:transparent;color:var(--fg-primary);font-weight:var(--font-semibold);border-radius:var(--radius-md)}.fe-bottom-sheet-cancel:hover{background:var(--surface-hover);border-color:var(--border-strong)}@media (min-width:80.125px){.fe-bottom-sheet-backdrop{align-items:center}.fe-bottom-sheet{border-radius:var(--radius-xl);margin:var(--space-4-v) var(--space-4)}.fe-bottom-sheet-handle{display:none}}.fe-mailbox-wrapper{box-sizing:border-box;position:relative;z-index:1;width:100%;max-width:none;height:100%;min-height:0;flex:1;background:var(--color-bg);border:none;border-radius:0;display:flex;flex-direction:column;overflow:hidden;padding:0}.fe-mailbox-wrapper>.fe-mailbox-wrapper,.fe-mailbox-wrapper{flex:1;min-height:0}.fe-mailbox-shell{display:grid;grid-template-columns:var(--fe-sidebar-width, 240px) minmax(0,1fr) minmax(0,1.2fr);grid-template-rows:minmax(0,1fr);gap:1px 2px;min-height:0;flex:1;overflow:hidden}.fe-mailbox-shell.fe-shell-collapsed{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.fe-folders,.fe-messages,.fe-reader{background:var(--color-panel);border:1px solid var(--color-border);padding:1px 2px}.fe-messages,.fe-folders,.fe-reader{border-radius:0}.fe-folders{border-left:none;border-bottom:none}.fe-reader,.fe-messages{border-right:none;border-bottom:none}.fe-shell-collapsed .fe-messages{border-left:none}.fe-folders,.fe-reader{position:relative;z-index:0}.fe-messages,.fe-reader{display:flex;flex-direction:column;gap:0px 1px;min-height:0}.fe-messages{overflow:hidden;position:relative;z-index:2}.fe-reader{overflow-y:auto;overflow-x:hidden;padding:0px 3px}.fe-folders{overflow-y:auto;max-height:100%;display:flex;flex-direction:column}.fe-dropdown-fixed{position:fixed!important;z-index:var(--z-dropdown)}.fe-pagination{display:flex;align-items:center;gap:0px 1px}.fe-search,.tiptap.ProseMirror{width:100%;min-width:0;padding:0px 2px;border:1px solid var(--color-border);background:var(--color-panel);color:var(--color-text)}.fe-search:focus,.tiptap.ProseMirror:focus{border-color:var(--border-strong);outline:none}.fe-folders ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0px 1px}.fe-folder-icon{width:2px;height:1px;display:inline-block;background-color:currentColor;visibility:visible}@media (min-width:102.625px){.fe-folders{position:relative}.fe-mailbox-shell.fe-shell-collapsed .fe-folders{display:none}}@media (max-width:120px){.fe-mailbox-shell{grid-template-columns:1fr}}@media (max-width:102.5px){.fe-mailbox-wrapper{height:100%}.fe-mailbox-shell,.fe-mailbox-shell.fe-shell-collapsed{display:flex!important;flex-direction:column;height:100%;min-height:0;overflow:hidden;gap:0}.fe-folders{display:none;position:fixed;top:calc(4px + var(--sai-top-v, env(safe-area-inset-top, 0px)));left:0;bottom:0;width:80%;max-width:40px;height:auto;padding-bottom:var(--sai-bottom-v, env(safe-area-inset-bottom, 0px));z-index:var(--z-modal)}.fe-folders.fe-folders-open{display:block}.fe-folders,.fe-messages,.fe-reader{width:100%}.fe-messages{display:flex!important;flex:1;min-height:0;border:none;padding:0;padding-bottom:var(--sai-bottom-v, env(safe-area-inset-bottom, 0px))}.fe-reader{padding:0;border:none;border-radius:0;background:var(--color-panel);display:none}.mobile-reader .fe-reader{display:flex;flex-direction:column;gap:0px 2px;position:fixed;inset:0;background:var(--color-panel);border-radius:0;border:none;padding:0 0 calc(1px + var(--sai-bottom-v, env(safe-area-inset-bottom, 0px)));overflow-y:auto;z-index:var(--z-modal)}.mobile-reader .fe-mailbox-shell{position:relative}.fe-mailbox-shell{height:auto;max-height:none;overflow:visible}}@media (max-width:90px){.fe-mailbox-shell{gap:0}}@media (max-width:102.5px) and (orientation:landscape){.mobile-reader .fe-reader{inset:0}.fe-folders{top:calc(3px + var(--sai-top-v, env(safe-area-inset-top, 0px)));bottom:0;height:auto;padding-bottom:var(--sai-bottom-v, env(safe-area-inset-bottom, 0px))}}@media (max-width:80px){.fe-folders ul{gap:var(--space-2-v, 8px) var(--space-2, 8px)}}[data-conversation-row]{position:relative;min-height:var(--row-height-v);padding-block:var(--row-pad-y-v)}[data-conversation-row]:before{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;width:1px;background:transparent}[data-conversation-row][data-unread=true]:before{background:var(--state-unread)}/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:56px;--container-md-v:28px;--container-lg:64px;--container-lg-v:32px;--container-2xl:84px;--container-2xl-v:42px;--container-3xl:96px;--container-3xl-v:48px;--container-4xl:112px;--container-4xl-v:56px;--container-5xl:128px;--container-5xl-v:64px;--text-xs:2px;--text-xs-v:0px;--text-xs--line-height:calc(1 / .75);--text-sm:2px;--text-sm-v:1px;--text-sm--line-height:calc(1.25 / .875);--text-base:2px;--text-base-v:1px;--text-base--line-height: 1.5 ;--text-lg:2px;--text-lg-v:1px;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:3px;--text-xl-v:1px;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:3px;--text-2xl-v:1px;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:4px;--text-3xl-v:2px;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-xl:calc(var(--radius) + 4px);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-border:var(--border)}}@layer base{*{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-o-tab-size:4}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{}small{}sub,sup{vertical-align:baseline;position:relative}sub{bottom:0px}sup{top:0px}table{text-indent:0;border-color:inherit;border-collapse:collapse}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;letter-spacing:inherit;color:inherit;visibility:visible;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:3px}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,var(--background))}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\\!visible{visibility:visible!important}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{white-space:nowrap;border-width:0;width:1px;height:0px;margin:0px -1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.start-2{inset-inline-start:1px}.end-2{inset-inline-end:1px}.end-4{inset-inline-end:2px}.top-0{top:0}.top-1\\/2{top:50%}.top-4{top:1px}.top-\\[50\\%\\]{top:50%}.top-full{top:100%}.right-0{right:0}.right-2\\.5{right:1px}.right-4{right:2px}.right-full{right:100%}.bottom-0{bottom:0}.bottom-4{bottom:1px}.bottom-full{bottom:100%}.left-0{left:0}.left-1\\/2{left:50%}.left-3{left:2px}.left-\\[50\\%\\]{left:50%}.left-full{left:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\\[60\\]{z-index:60}.z-\\[99\\]{z-index:99}.z-\\[100\\]{z-index:100}.z-\\[101\\]{z-index:101}.z-\\[9998\\]{z-index:9998}.z-\\[9999\\]{z-index:9999}.z-\\[10000\\]{z-index:10000}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:80px){.container{max-width:80px}}@media (min-width:96px){.container{max-width:96px}}@media (min-width:128px){.container{max-width:128px}}@media (min-width:160px){.container{max-width:160px}}@media (min-width:192px){.container{max-width:192px}}.-m-2{margin:0px -1px}.m-1{margin:0px 1px}.m-7{margin:1px 4px}.m-10{margin:2px 5px}.m-42{margin:10px 21px}.m-99{margin:24px 50px}.-mx-1{margin-inline:-1px}.mx-1{margin-inline:1px}.mx-2{margin-inline:1px}.mx-4{margin-inline:2px}.mx-auto{margin-inline:auto}.my-1{margin-block:0px}.my-1\\.5{margin-block:0px}.my-4{margin-block:1px}.ms-auto{margin-inline-start:auto}.mt-0\\.5{margin-top:0px}.mt-1{margin-top:0px}.mt-1\\.5{margin-top:0px}.mt-2{margin-top:0px}.mt-3{margin-top:0px}.mt-4{margin-top:1px}.mt-6{margin-top:1px}.mt-auto{margin-top:auto}.mr-1{margin-right:1px}.mr-1\\.5{margin-right:1px}.mr-2{margin-right:1px}.mr-auto{margin-right:auto}.-mb-px{margin-bottom:0px}.mb-1{margin-bottom:0px}.mb-1\\.5{margin-bottom:0px}.mb-2{margin-bottom:0px}.mb-3{margin-bottom:0px}.mb-4{margin-bottom:1px}.mb-6{margin-bottom:1px}.-ml-2{margin-left:-1px}.ml-1{margin-left:1px}.ml-2{margin-left:1px}.ml-4{margin-left:2px}.ml-auto{margin-left:auto}.line-clamp-1{display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}:where(.flex,.inline-flex,.grid)>.inline-flex,:where(button).inline-flex{display:flex}:where(.lucide){display:inline-block}.list-item{display:list-item}.table{display:table}.aspect-square{aspect-ratio:1}.size-2{width:1px;height:0px}.size-2\\.5{width:1px;height:0px}.size-3\\.5{width:2px;height:1px}.size-4{width:2px;height:1px}.size-8{width:4px;height:2px}.size-9{width:5px;height:2px}.size-10{width:5px;height:2px}.size-full{width:100%;height:100%}.h-\\(--bits-select-anchor-height\\){height:var(--bits-select-anchor-height)}.h-1\\.5{height:0px}.h-2{height:0px}.h-2\\.5{height:0px}.h-3{height:0px}.h-3\\.5{height:1px}.h-4{height:1px}.h-4\\.5{height:1px}.h-5{height:1px}.h-6{height:1px}.h-7{height:1px}.h-8{height:2px}.h-9{height:2px}.h-10{height:2px}.h-11{height:2px}.h-12{height:3px}.h-14{height:3px}.h-20{height:5px}.h-24{height:6px}.h-32{height:8px}.h-64{height:16px}.h-\\[1\\.15rem\\]{height:1px}.h-\\[calc\\(100\\%-1px\\)\\]{height:calc(100% - 0px)}.h-full{height:100%}.h-px{height:0px}.h-screen{height:100vh}.max-h-\\(--bits-dropdown-menu-content-available-height\\){max-height:var(--bits-dropdown-menu-content-available-height)}.max-h-\\(--bits-select-content-available-height\\){max-height:var(--bits-select-content-available-height)}.max-h-32{max-height:8px}.max-h-64{max-height:16px}.max-h-72{max-height:18px}.max-h-80{max-height:20px}.max-h-\\[40vh\\]{max-height:40vh}.max-h-\\[60vh\\]{max-height:60vh}.max-h-\\[70vh\\]{max-height:70vh}.max-h-\\[200px\\]{max-height:12px}.max-h-\\[220px\\]{max-height:13px}.max-h-\\[300px\\]{max-height:18px}.max-h-\\[320px\\]{max-height:20px}.max-h-\\[600px\\]{max-height:37px}.max-h-\\[calc\\(100vh-2rem\\)\\]{max-height:calc(100vh - 2px)}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-4{min-height:1px}.min-h-5{min-height:1px}.min-h-16{min-height:4px}.min-h-\\[44px\\]{min-height:2px}.min-h-\\[60px\\]{min-height:3px}.min-h-\\[120px\\]{min-height:7px}.min-h-\\[160px\\]{min-height:10px}.min-h-\\[200px\\]{min-height:12px}.w-\\(--bits-popover-anchor-width\\){width:var(--bits-popover-anchor-width)}.w-1\\.5{width:1px}.w-1\\/2{width:50%}.w-2{width:1px}.w-2\\.5{width:1px}.w-3{width:2px}.w-3\\.5{width:2px}.w-3\\/4{width:75%}.w-4{width:2px}.w-4\\.5{width:2px}.w-5{width:3px}.w-6{width:3px}.w-7{width:4px}.w-8{width:4px}.w-9{width:5px}.w-10{width:5px}.w-11{width:6px}.w-12{width:6px}.w-14{width:7px}.w-16{width:8px}.w-20{width:10px}.w-24{width:12px}.w-48{width:24px}.w-56{width:28px}.w-64{width:32px}.w-72{width:36px}.w-\\[30\\%\\]{width:30%}.w-\\[70px\\]{width:9px}.w-\\[92\\%\\]{width:92%}.w-\\[104px\\]{width:13px}.w-\\[150px\\]{width:19px}.w-\\[180px\\]{width:23px}.w-\\[420px\\]{width:53px}.w-\\[calc\\(100vw-2rem\\)\\]{width:calc(100vw - 4px)}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\\[92vw\\]{max-width:92vw}.max-w-\\[120px\\]{max-width:15px}.max-w-\\[140px\\]{max-width:18px}.max-w-\\[150px\\]{max-width:19px}.max-w-\\[160px\\]{max-width:20px}.max-w-\\[180px\\]{max-width:23px}.max-w-\\[200px\\]{max-width:25px}.max-w-\\[220px\\]{max-width:28px}.max-w-\\[280px\\]{max-width:35px}.max-w-\\[480px\\]{max-width:60px}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 4px)}.max-w-\\[calc\\(100\\%-24px\\)\\]{max-width:calc(100% - 3px)}.max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 4px)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-\\(--bits-select-anchor-width\\){min-width:var(--bits-select-anchor-width)}.min-w-0{min-width:0}.min-w-\\[8rem\\]{min-width:16px}.min-w-\\[100px\\]{min-width:13px}.min-w-\\[120px\\]{min-width:15px}.min-w-\\[140px\\]{min-width:18px}.min-w-\\[160px\\]{min-width:20px}.min-w-\\[180px\\]{min-width:23px}.min-w-\\[200px\\]{min-width:25px}.min-w-\\[220px\\]{min-width:28px}.min-w-\\[260px\\]{min-width:33px}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\\[0_1fr\\]{grid-template-columns:0 1fr}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-cols-\\[repeat\\(auto-fill\\,minmax\\(140px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(18px,1fr))}.grid-rows-\\[auto_auto\\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0\\.5{gap:0px 1px}.gap-1{gap:0px 1px}.gap-1\\.5{gap:0px 1px}.gap-2{gap:0px 1px}.gap-2\\.5{gap:0px 1px}.gap-3{gap:0px 2px}.gap-4{gap:1px 2px}.gap-6{gap:1px 3px}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block:0}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(0px*var(--tw-space-y-reverse));margin-block-end:calc(0px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(0px*var(--tw-space-y-reverse));margin-block-end:calc(0px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(0px*var(--tw-space-y-reverse));margin-block-end:calc(0px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(0px*var(--tw-space-y-reverse));margin-block-end:calc(0px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(0px*var(--tw-space-y-reverse));margin-block-end:calc(0px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px*var(--tw-space-y-reverse));margin-block-end:calc(1px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px*var(--tw-space-y-reverse));margin-block-end:calc(1px*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px*var(--tw-space-y-reverse));margin-block-end:calc(1px*calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:2px}.gap-y-0\\.5{row-gap:0px}.gap-y-1\\.5{row-gap:0px}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}:where(.divide-subtle>:not(:last-child)){border-color:var(--border-subtle)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.rounded{border-radius:.25rem}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-fe-lg{border-radius:var(--fe-radius-lg)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-\\[3px\\]{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--border)}.border-destructive,.border-destructive\\/20{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\\/20{border-color:color-mix(in oklab,var(--destructive) 20%,var(--background))}}.border-destructive\\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\\/30{border-color:color-mix(in oklab,var(--destructive) 30%,var(--background))}}.border-destructive\\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\\/40{border-color:color-mix(in oklab,var(--destructive) 40%,var(--background))}}.border-destructive\\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\\/50{border-color:color-mix(in oklab,var(--destructive) 50%,var(--background))}}.border-foreground{border-color:var(--foreground)}.border-input{border-color:var(--input)}.border-muted-foreground\\/50{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\\/50{border-color:color-mix(in oklab,var(--muted-foreground) 50%,var(--background))}}.border-primary{border-color:var(--primary)}.border-primary-foreground\\/20{border-color:var(--primary-foreground)}@supports (color:color-mix(in lab,red,red)){.border-primary-foreground\\/20{border-color:color-mix(in oklab,var(--primary-foreground) 20%,var(--background))}}.border-primary\\/30{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\\/30{border-color:color-mix(in oklab,var(--primary) 30%,var(--background))}}.border-primary\\/40{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\\/40{border-color:color-mix(in oklab,var(--primary) 40%,var(--background))}}.border-state-active\\/30{border-color:var(--state-active)}@supports (color:color-mix(in lab,red,red)){.border-state-active\\/30{border-color:color-mix(in oklab,var(--state-active) 30%,var(--background))}}.border-state-caution\\/20{border-color:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.border-state-caution\\/20{border-color:color-mix(in oklab,var(--state-caution) 20%,var(--background))}}.border-state-caution\\/25{border-color:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.border-state-caution\\/25{border-color:color-mix(in oklab,var(--state-caution) 25%,var(--background))}}.border-state-caution\\/30{border-color:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.border-state-caution\\/30{border-color:color-mix(in oklab,var(--state-caution) 30%,var(--background))}}.border-state-caution\\/40{border-color:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.border-state-caution\\/40{border-color:color-mix(in oklab,var(--state-caution) 40%,var(--background))}}.border-state-encrypted\\/30{border-color:var(--state-encrypted)}@supports (color:color-mix(in lab,red,red)){.border-state-encrypted\\/30{border-color:color-mix(in oklab,var(--state-encrypted) 30%,var(--background))}}.border-state-success,.border-state-success\\/25{border-color:var(--state-success)}@supports (color:color-mix(in lab,red,red)){.border-state-success\\/25{border-color:color-mix(in oklab,var(--state-success) 25%,var(--background))}}.border-state-success\\/30{border-color:var(--state-success)}@supports (color:color-mix(in lab,red,red)){.border-state-success\\/30{border-color:color-mix(in oklab,var(--state-success) 30%,var(--background))}}.border-subtle{border-color:var(--border-subtle)}.border-transparent{border-color:#0000}.border-white\\/80{border-color:#fffc}@supports (color:color-mix(in lab,red,red)){.border-white\\/80{border-color:color-mix(in oklab,var(--color-white) 80%,var(--background))}}.border-s-transparent{border-inline-start-color:#0000}.border-t-primary{border-top-color:var(--primary)}.border-t-transparent{border-top-color:#0000}.border-b-background{border-bottom-color:var(--background)}.border-l-primary{border-left-color:var(--primary)}.border-l-transparent{border-left-color:#0000}.bg-\\[var\\(--color-panel\\)\\],.bg-\\[var\\(--color-panel\\)\\]\\/95{background-color:var(--color-panel)}@supports (color:color-mix(in lab,red,red)){.bg-\\[var\\(--color-panel\\)\\]\\/95{background-color:color-mix(in oklab,var(--color-panel) 95%,var(--background))}}.bg-accent,.bg-accent\\/50{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/50{background-color:color-mix(in oklab,var(--accent) 50%,var(--background))}}.bg-accent\\/60{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/60{background-color:color-mix(in oklab,var(--accent) 60%,var(--background))}}.bg-background,.bg-background\\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/80{background-color:color-mix(in oklab,var(--background) 80%,var(--background))}}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black) 50%,var(--background))}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/5{background-color:color-mix(in oklab,var(--destructive) 5%,var(--background))}}.bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/10{background-color:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.bg-foreground{background-color:var(--foreground)}.bg-muted,.bg-muted\\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--muted) 30%,var(--background))}}.bg-muted\\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/40{background-color:color-mix(in oklab,var(--muted) 40%,var(--background))}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/50{background-color:color-mix(in oklab,var(--muted) 50%,var(--background))}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/5{background-color:color-mix(in oklab,var(--primary) 5%,var(--background))}}.bg-primary\\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/10{background-color:color-mix(in oklab,var(--primary) 10%,var(--background))}}.bg-secondary{background-color:var(--secondary)}.bg-state-active,.bg-state-active\\/10{background-color:var(--state-active)}@supports (color:color-mix(in lab,red,red)){.bg-state-active\\/10{background-color:color-mix(in oklab,var(--state-active) 10%,var(--background))}}.bg-state-caution,.bg-state-caution\\/10{background-color:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.bg-state-caution\\/10{background-color:color-mix(in oklab,var(--state-caution) 10%,var(--background))}}.bg-state-caution\\/15{background-color:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.bg-state-caution\\/15{background-color:color-mix(in oklab,var(--state-caution) 15%,var(--background))}}.bg-state-encrypted,.bg-state-encrypted\\/10{background-color:var(--state-encrypted)}@supports (color:color-mix(in lab,red,red)){.bg-state-encrypted\\/10{background-color:color-mix(in oklab,var(--state-encrypted) 10%,var(--background))}}.bg-state-encrypted\\/20{background-color:var(--state-encrypted)}@supports (color:color-mix(in lab,red,red)){.bg-state-encrypted\\/20{background-color:color-mix(in oklab,var(--state-encrypted) 20%,var(--background))}}.bg-state-success,.bg-state-success\\/10{background-color:var(--state-success)}@supports (color:color-mix(in lab,red,red)){.bg-state-success\\/10{background-color:color-mix(in oklab,var(--state-success) 10%,var(--background))}}.bg-surface-raised{background-color:var(--surface-raised)}.bg-surface-sunken{background-color:var(--surface-sunken)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-destructive\\/10{--tw-gradient-from:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.from-destructive\\/10{--tw-gradient-from:color-mix(in oklab, var(--destructive) 10%, var(--background))}}.from-destructive\\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-state-caution\\/10{--tw-gradient-from:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.from-state-caution\\/10{--tw-gradient-from:color-mix(in oklab, var(--state-caution) 10%, var(--background))}}.from-state-caution\\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-state-success\\/10{--tw-gradient-from:var(--state-success)}@supports (color:color-mix(in lab,red,red)){.from-state-success\\/10{--tw-gradient-from:color-mix(in oklab, var(--state-success) 10%, var(--background))}}.from-state-success\\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-destructive\\/10{--tw-gradient-to:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.to-destructive\\/10{--tw-gradient-to:color-mix(in oklab, var(--destructive) 10%, var(--background))}}.to-destructive\\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-state-caution\\/10{--tw-gradient-to:var(--state-caution)}@supports (color:color-mix(in lab,red,red)){.to-state-caution\\/10{--tw-gradient-to:color-mix(in oklab, var(--state-caution) 10%, var(--background))}}.to-state-caution\\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-state-success\\/10{--tw-gradient-to:var(--state-success)}@supports (color:color-mix(in lab,red,red)){.to-state-success\\/10{--tw-gradient-to:color-mix(in oklab, var(--state-success) 10%, var(--background))}}.to-state-success\\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{-o-object-fit:contain}.object-cover{-o-object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:0px 1px}.p-1{padding:0px 1px}.p-1\\.5{padding:0px 1px}.p-2{padding:0px 1px}.p-3{padding:0px 2px}.p-4{padding:1px 2px}.p-5{padding:1px 3px}.p-6{padding:1px 3px}.p-10{padding:2px 5px}.p-\\[3px\\]{padding:0px 1px}.p-px{padding:0px 1px}.px-0\\.5{padding-inline:1px}.px-1{padding-inline:1px}.px-1\\.5{padding-inline:1px}.px-2{padding-inline:1px}.px-2\\.5{padding-inline:1px}.px-3{padding-inline:2px}.px-4{padding-inline:2px}.px-6{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:0px}.py-1{padding-block:0px}.py-1\\.5{padding-block:0px}.py-2{padding-block:0px}.py-2\\.5{padding-block:0px}.py-3{padding-block:0px}.py-4{padding-block:1px}.py-6{padding-block:1px}.py-10{padding-block:2px}.py-12{padding-block:3px}.py-16{padding-block:4px}.py-px{padding-block:0px}.ps-2{padding-inline-start:1px}.ps-8{padding-inline-start:4px}.pe-1{padding-inline-end:1px}.pe-2{padding-inline-end:1px}.pe-8{padding-inline-end:4px}.pt-1{padding-top:0px}.pt-1\\.5{padding-top:0px}.pt-2{padding-top:0px}.pt-3{padding-top:0px}.pt-4{padding-top:1px}.pt-6{padding-top:1px}.pr-1{padding-right:1px}.pr-6{padding-right:3px}.pr-8{padding-right:4px}.pb-0{padding-bottom:0}.pb-2{padding-bottom:0px}.pb-3{padding-bottom:0px}.pl-1\\.5{padding-left:1px}.pl-2{padding-left:1px}.pl-6{padding-left:3px}.pl-9{padding-left:5px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-2xl{}.text-3xl{}.text-base{}.text-lg{}.text-sm{}.text-xl{}.text-xs{}.\\!text-\\[length\\:var\\(--type-label-size\\)\\]{}.text-\\[10px\\]{}.text-\\[11px\\]{}.text-\\[12px\\]{}.text-\\[13px\\]{}.text-\\[14px\\]{}.leading-4{--tw-leading:calc(var(--spacing) * 4)}.leading-\\[14px\\]{--tw-leading:14px}.leading-none{--tw-leading:1}.font-bold{font-weight:var(--font-weight-bold)}.font-medium{font-weight:var(--font-weight-medium)}.font-normal{font-weight:var(--font-weight-normal)}.font-semibold{font-weight:var(--font-weight-semibold)}.tracking-tight{letter-spacing:var(--tracking-tight)}.tracking-wide{letter-spacing:var(--tracking-wide)}.tracking-wider{letter-spacing:var(--tracking-wider)}.tracking-widest{letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.\\[overflow-wrap\\:anywhere\\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.tab-1{-o-tab-size:1}.tab-2{-o-tab-size:2}.tab-3{-o-tab-size:3}.tab-4{-o-tab-size:4}.tab-5{-o-tab-size:5}.tab-6{-o-tab-size:6}.tab-7{-o-tab-size:7}.tab-8{-o-tab-size:8}.tab-9{-o-tab-size:9}.text-accent-foreground{color:var(--accent-foreground)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-fg-inverse{color:var(--fg-inverse)}.text-fg-link{color:var(--fg-link)}.text-fg-muted{color:var(--fg-muted)}.text-foreground{color:var(--foreground)}.text-muted-foreground,.text-muted-foreground\\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/60{color:color-mix(in oklab,var(--muted-foreground) 60%,var(--background))}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-state-active{color:var(--state-active)}.text-state-caution{color:var(--state-caution)}.text-state-encrypted{color:var(--state-encrypted)}.text-state-starred{color:var(--state-starred)}.text-state-success{color:var(--state-success)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{visibility:hidden}.opacity-40{visibility:visible}.opacity-50{visibility:visible}.opacity-60{visibility:visible}.opacity-70{visibility:visible}.opacity-80{visibility:visible}.opacity-100{visibility:visible}.outline-hidden{--tw-outline-style:none;outline-style:none}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-ring\\/50{outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.outline-ring\\/50{outline-color:color-mix(in oklab,var(--ring) 50%,var(--background))}}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{user-select:all}.select-none{user-select:none}.\\[xml\\:lang\\]{xml:lang}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){visibility:visible}}.group-data-\\[disabled\\=true\\]\\:opacity-50:is(:where(.group)[data-disabled=true] *){visibility:visible}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){visibility:visible}.selection\\:bg-primary ::selection{background-color:var(--primary)}.selection\\:bg-primary::selection{background-color:var(--primary)}.selection\\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\\:text-primary-foreground::selection{color:var(--primary-foreground)}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.first\\:mt-0:first-child{margin-top:0}.last\\:mb-0:last-child{margin-bottom:0}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\\:border-ring:focus-within{border-color:var(--ring)}@media (hover:hover){.hover\\:border-foreground:hover{border-color:var(--foreground)}.hover\\:border-muted-foreground\\/50:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\\:border-muted-foreground\\/50:hover{border-color:color-mix(in oklab,var(--muted-foreground) 50%,var(--background))}}.hover\\:border-primary:hover{border-color:var(--primary)}.hover\\:bg-accent:hover,.hover\\:bg-accent\\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab,var(--accent) 50%,var(--background))}}.hover\\:bg-destructive\\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-destructive\\/10:hover{background-color:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.hover\\:bg-destructive\\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,var(--background))}}.hover\\:bg-muted:hover{background-color:var(--muted)}.hover\\:bg-muted-foreground\\/20:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted-foreground\\/20:hover{background-color:color-mix(in oklab,var(--muted-foreground) 20%,var(--background))}}.hover\\:bg-muted\\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,var(--background))}}.hover\\:bg-primary\\/5:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-primary\\/5:hover{background-color:color-mix(in oklab,var(--primary) 5%,var(--background))}}.hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,var(--background))}}.hover\\:bg-secondary\\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,var(--background))}}.hover\\:bg-state-encrypted\\/30:hover{background-color:var(--state-encrypted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-state-encrypted\\/30:hover{background-color:color-mix(in oklab,var(--state-encrypted) 30%,var(--background))}}.hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\\:text-destructive:hover{color:var(--destructive)}.hover\\:text-fg-link:hover{color:var(--fg-link)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:no-underline:hover{text-decoration-line:none}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-90:hover{visibility:visible}.hover\\:opacity-100:hover{visibility:visible}}.focus\\:bg-accent:focus{background-color:var(--accent)}.focus\\:bg-destructive\\/10:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus\\:bg-destructive\\/10:focus{background-color:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.focus\\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:bg-accent:active{background-color:var(--accent)}.disabled\\:opacity-50:disabled{visibility:visible}.has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\]:has(>svg){grid-template-columns:2px 1fr}.has-\\[\\>svg\\]\\:gap-x-3:has(>svg){column-gap:2px}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:1px}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:2px}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:2px}.aria-disabled\\:opacity-50[aria-disabled=true]{visibility:visible}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.data-highlighted\\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-highlighted\\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\\[disabled\\]\\:opacity-50[data-disabled]{visibility:visible}.data-\\[highlighted\\]\\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-\\[highlighted\\]\\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\\[inset\\]\\:ps-8[data-inset]{padding-inline-start:4px}.data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:0px}.data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.data-\\[orientation\\=vertical\\]\\:min-h-full[data-orientation=vertical]{min-height:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[placeholder\\]\\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\\[size\\=default\\]\\:h-9[data-size=default]{height:2px}.data-\\[size\\=sm\\]\\:h-8[data-size=sm]{height:2px}:is(.\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,var(--background))}}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1>*)[data-slot=select-value]{display:-webkit-box;overflow:hidden}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex>*)[data-slot=select-value]{display:flex}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-2>*)[data-slot=select-value]{gap:0px 1px}.data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:var(--background)}.data-\\[state\\=checked\\]\\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\\[state\\=unchecked\\]\\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\\[variant\\=destructive\\]\\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\\[variant\\=destructive\\]\\:data-highlighted\\:bg-destructive\\/10[data-variant=destructive][data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\\[variant\\=destructive\\]\\:data-highlighted\\:bg-destructive\\/10[data-variant=destructive][data-highlighted]{background-color:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.data-\\[variant\\=destructive\\]\\:data-highlighted\\:text-destructive[data-variant=destructive][data-highlighted]{color:var(--destructive)}@supports (backdrop-filter:var(--tw)){.supports-\\[backdrop-filter\\]\\:bg-\\[var\\(--color-panel\\)\\]\\/85{background-color:var(--color-panel)}@supports (color:color-mix(in lab,red,red)){.supports-\\[backdrop-filter\\]\\:bg-\\[var\\(--color-panel\\)\\]\\/85{background-color:color-mix(in oklab,var(--color-panel) 85%,var(--background))}}}@media not all and (min-width:80px){.max-sm\\:flex-col{flex-direction:column}.max-sm\\:items-start{align-items:flex-start}}@media (min-width:80px){.sm\\:flex{display:flex}.sm\\:inline-flex{display:inline-flex}.sm\\:w-auto{width:auto}.sm\\:max-w-3xl{max-width:var(--container-3xl)}.sm\\:max-w-\\[400px\\]{max-width:50px}.sm\\:max-w-\\[420px\\]{max-width:53px}.sm\\:max-w-\\[440px\\]{max-width:55px}.sm\\:max-w-\\[520px\\]{max-width:65px}.sm\\:max-w-\\[560px\\]{max-width:70px}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:max-w-md{max-width:var(--container-md)}.sm\\:flex-none{flex:none}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:items-center{align-items:center}.sm\\:items-start{align-items:flex-start}.sm\\:justify-between{justify-content:space-between}.sm\\:justify-end{justify-content:flex-end}.sm\\:text-start{text-align:start}}@media (min-width:96px){.md\\:inset-auto{inset:auto}.md\\:top-8{top:2px}.md\\:top-auto{top:auto}.md\\:right-0{right:0}.md\\:right-4{right:2px}.md\\:bottom-4{bottom:1px}.md\\:bottom-8{bottom:2px}.md\\:left-0{left:0}.md\\:left-auto{left:auto}.md\\:mx-auto{margin-inline:auto}.md\\:block{display:block}.md\\:flex{display:flex}.md\\:hidden{display:none}.md\\:h-3{height:0px}.md\\:h-9{height:2px}.md\\:h-\\[600px\\]{height:37px}.md\\:h-\\[700px\\]{height:43px}.md\\:min-h-\\[38px\\]{min-height:2px}.md\\:w-3{width:2px}.md\\:w-\\[560px\\]{width:70px}.md\\:w-\\[650px\\]{width:81px}.md\\:max-w-5xl{max-width:var(--container-5xl)}.md\\:max-w-\\[420px\\]{max-width:53px}.md\\:grid-cols-\\[320px_1fr\\]{grid-template-columns:40px 1fr}.md\\:flex-row{flex-direction:row}.md\\:p-4{padding:1px 2px}.md\\:p-6{padding:1px 3px}.md\\:py-1\\.5{padding-block:0px}.md\\:text-sm{}.md\\:text-xs{}}.dark\\:border-input:is(.dark *){border-color:var(--input)}.dark\\:bg-background:is(.dark *){background-color:var(--background)}.dark\\:bg-destructive\\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-destructive\\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,var(--background))}}.dark\\:bg-destructive\\/70:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-destructive\\/70:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 70%,var(--background))}}.dark\\:bg-input\\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-input\\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,var(--background))}}.dark\\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\\:outline-ring\\/40:is(.dark *){outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.dark\\:outline-ring\\/40:is(.dark *){outline-color:color-mix(in oklab,var(--ring) 40%,var(--background))}}@media (hover:hover){.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-accent\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,var(--background))}}.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,var(--background))}}}.dark\\:data-\\[state\\=active\\]\\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\\:data-\\[state\\=active\\]\\:bg-input\\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\\:data-\\[state\\=active\\]\\:bg-input\\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,var(--background))}}.dark\\:data-\\[state\\=active\\]\\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\\:data-\\[state\\=checked\\]\\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\\:data-\\[state\\=unchecked\\]\\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,var(--background))}}.dark\\:data-\\[variant\\=destructive\\]\\:data-highlighted\\:bg-destructive\\/20:is(.dark *)[data-variant=destructive][data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\\:data-\\[variant\\=destructive\\]\\:data-highlighted\\:bg-destructive\\/20:is(.dark *)[data-variant=destructive][data-highlighted]{background-color:color-mix(in oklab,var(--destructive) 20%,var(--background))}}.\\[\\&_img\\]\\:max-w-full img{max-width:100%}.\\[\\&_p\\]\\:leading-relaxed p{--tw-leading:var(--leading-relaxed)}.\\[\\&_pre\\]\\:break-all pre{word-break:break-all}.\\[\\&_pre\\]\\:whitespace-pre-wrap pre{white-space:pre-wrap}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:2px;height:1px}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\\[\\&_table\\]\\:block table{display:block}.\\[\\&_table\\]\\:overflow-x-auto table{overflow-x:auto}.\\[\\.border-b\\]\\:pb-6.border-b{padding-bottom:1px}.\\[\\.border-t\\]\\:pt-6.border-t{padding-top:1px}:is(.\\*\\:\\[span\\]\\:last\\:flex>*):is(span):last-child{display:flex}:is(.\\*\\:\\[span\\]\\:last\\:items-center>*):is(span):last-child{align-items:center}:is(.\\*\\:\\[span\\]\\:last\\:gap-2>*):is(span):last-child{gap:0px 1px}:is(.data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\\[\\&\\>\\*\\]\\:min-w-0>*{min-width:0}.\\[\\&\\>svg\\]\\:size-3\\.5>svg{width:2px;height:1px}.\\[\\&\\>svg\\]\\:size-4>svg{width:2px;height:1px}.\\[\\&\\>svg\\]\\:text-current>svg{color:currentColor}@media (hover:hover){a.\\[a\\&\\]\\:hover\\:bg-accent:hover{background-color:var(--accent)}a.\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,var(--background))}}a.\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,var(--background))}}a.\\[a\\&\\]\\:hover\\:bg-secondary\\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\\[a\\&\\]\\:hover\\:bg-secondary\\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,var(--background))}}a.\\[a\\&\\]\\:hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--radius:.625rem;--background:var(--surface-canvas);--foreground:var(--fg-primary);--card:var(--surface-raised);--card-foreground:var(--fg-primary);--popover:var(--surface-overlay);--popover-foreground:var(--fg-primary);--primary:var(--action-primary-bg);--primary-foreground:var(--action-primary-fg);--secondary:var(--fe-l-200);--secondary-foreground:var(--fg-primary);--muted:var(--fe-l-200);--muted-foreground:var(--fg-secondary);--accent:var(--fe-l-200);--accent-foreground:var(--fg-primary);--destructive:var(--state-danger);--destructive-foreground:var(--action-danger-fg);--border:var(--border-default);--input:var(--border-default);--ring:var(--focus-ring)}.dark{--background:var(--surface-canvas);--foreground:var(--fg-primary);--card:var(--surface-raised);--card-foreground:var(--fg-primary);--popover:var(--surface-overlay);--popover-foreground:var(--fg-primary);--primary:var(--action-primary-bg);--primary-foreground:var(--action-primary-fg);--secondary:var(--fe-n-300);--secondary-foreground:var(--fg-primary);--muted:var(--fe-n-300);--muted-foreground:var(--fg-secondary);--accent:var(--fe-n-300);--accent-foreground:var(--fg-primary);--destructive:var(--state-danger);--destructive-foreground:var(--action-danger-fg);--border:var(--border-default);--input:var(--border-default);--ring:var(--focus-ring)}[data-tooltip]{position:relative;overflow:visible!important}[data-tooltip]:after{padding:var(--tooltip-padding-y-v) var(--tooltip-padding-x);border-radius:var(--radius-sm);font-weight:var(--font-medium);white-space:nowrap;visibility:hidden;z-index:var(--z-tooltip);background:var(--tooltip-bg);color:var(--tooltip-text);position:absolute;bottom:calc(100% + 0px);left:50%}[data-tooltip]:hover:after{visibility:visible}[data-tooltip]:before{content:\"\";border:1px solid #0000;border-top-color:var(--tooltip-bg);visibility:hidden;z-index:var(--z-tooltip);position:absolute;bottom:calc(100% + 0px);left:50%}[data-tooltip]:hover:before{visibility:visible}[data-tooltip-position=bottom]:after{top:calc(100% + 0px);bottom:auto}[data-tooltip-position=bottom]:before{border-top-color:#0000;border-bottom-color:var(--tooltip-bg);top:calc(100% + 0px);bottom:auto}@media (hover:none){[data-tooltip]:after,[data-tooltip]:before{display:none!important}}@media (max-width:95.998px){body:has(.fe-mobile-tabbar) .fe-bottom-overlay{bottom:calc(3px + env(safe-area-inset-bottom,0px) + 0px)}}";
4
4
  var __forwardemailWorkerBootstrap = "\"use strict\";const ge=require(\"node:fs\"),ee=require(\"node:worker_threads\"),Te=require(\"node:util\"),C={AbortError:\"A request was aborted, for example through a call to IDBTransaction.abort.\",ConstraintError:\"A mutation operation in the transaction failed because a constraint was not satisfied. For example, an object such as an object store or index already exists and a request attempted to create a new one.\",DataError:\"Data provided to an operation does not meet requirements.\",InvalidAccessError:\"An invalid operation was performed on an object. For example transaction creation attempt was made, but an empty scope was provided.\",InvalidStateError:\"An operation was called on an object on which it is not allowed or at a time when it is not allowed. Also occurs if a request is made on a source object that has been deleted or removed. Use TransactionInactiveError or ReadOnlyError when possible, as they are more specific variations of InvalidStateError.\",NotFoundError:\"The operation failed because the requested database object could not be found. For example, an object store did not exist but was being opened.\",ReadOnlyError:'The mutating operation was attempted in a \"readonly\" transaction.',TransactionInactiveError:\"A request was placed against a transaction which is currently not active, or which is finished.\",VersionError:\"An attempt was made to open a database using a lower version than the existing version.\"},$=(u,e)=>{Object.defineProperty(u,\"code\",{value:e,writable:!1,enumerable:!0,configurable:!1})};class Q extends DOMException{constructor(e=C.AbortError){super(e,\"AbortError\")}}class S extends DOMException{constructor(e=C.ConstraintError){super(e,\"ConstraintError\")}}class B extends DOMException{constructor(e=C.DataError){super(e,\"DataError\"),$(this,0)}}class M extends DOMException{constructor(e=C.InvalidAccessError){super(e,\"InvalidAccessError\")}}class l extends DOMException{constructor(e=C.InvalidStateError){super(e,\"InvalidStateError\"),$(this,11)}}class N extends DOMException{constructor(e=C.NotFoundError){super(e,\"NotFoundError\")}}class k extends DOMException{constructor(e=C.ReadOnlyError){super(e,\"ReadOnlyError\")}}class K extends DOMException{constructor(e=C.VersionError){super(e,\"SyntaxError\"),$(this,12)}}class y extends DOMException{constructor(e=C.TransactionInactiveError){super(e,\"TransactionInactiveError\"),$(this,0)}}class Re extends DOMException{constructor(e=C.VersionError){super(e,\"VersionError\")}}function ce(u){return typeof SharedArrayBuffer<\"u\"&&u instanceof SharedArrayBuffer}const G=Symbol(\"INVALID_TYPE\"),x=Symbol(\"INVALID_VALUE\"),te=(u,e)=>{if(typeof u==\"number\")return isNaN(u)?x:u;if(Object.prototype.toString.call(u)===\"[object Date]\"){const t=u.valueOf();return isNaN(t)?x:new Date(t)}else{if(typeof u==\"string\")return u;if(u instanceof ArrayBuffer||ce(u)||typeof ArrayBuffer<\"u\"&&ArrayBuffer.isView&&ArrayBuffer.isView(u)){if(\"detached\"in u?u.detached:u.byteLength===0)return x;let t,r=0,n=0;return u instanceof ArrayBuffer||ce(u)?(t=u,n=u.byteLength):(t=u.buffer,r=u.byteOffset,n=u.byteLength),t.slice(r,r+n)}else if(Array.isArray(u)){if(e===void 0)e=new Set;else if(e.has(u))return x;e.add(u);let t=!1;const r=Array.from({length:u.length},(n,s)=>{if(t)return;if(!Object.hasOwn(u,s)){t=!0;return}const o=u[s],i=te(o,e);if(i===x||i===G){t=!0;return}return i});return t?x:r}else return G}},A=(u,e)=>{const t=te(u,e);if(t===x||t===G)throw new B;return t},de=u=>{if(typeof u==\"number\")return\"Number\";if(Object.prototype.toString.call(u)===\"[object Date]\")return\"Date\";if(Array.isArray(u))return\"Array\";if(typeof u==\"string\")return\"String\";if(u instanceof ArrayBuffer)return\"Binary\";throw new B},f=(u,e)=>{if(e===void 0)throw new TypeError;u=A(u),e=A(e);const t=de(u),r=de(e);if(t!==r)return t===\"Array\"||t===\"Binary\"&&(r===\"String\"||r===\"Date\"||r===\"Number\")||t===\"String\"&&(r===\"Date\"||r===\"Number\")||t===\"Date\"&&r===\"Number\"?1:-1;if(t===\"Binary\"&&(u=new Uint8Array(u),e=new Uint8Array(e)),t===\"Array\"||t===\"Binary\"){const n=Math.min(u.length,e.length);for(let s=0;s<n;s++){const a=f(u[s],e[s]);if(a!==0)return a}return u.length>e.length?1:u.length<e.length?-1:0}if(t===\"Date\"){if(u.getTime()===e.getTime())return 0}else if(u===e)return 0;return u>e?1:-1};class d{static only(e){if(arguments.length===0)throw new TypeError;return e=A(e),new d(e,e,!1,!1)}static lowerBound(e,t=!1){if(arguments.length===0)throw new TypeError;return e=A(e),new d(e,void 0,t,!0)}static upperBound(e,t=!1){if(arguments.length===0)throw new TypeError;return e=A(e),new d(void 0,e,!0,t)}static bound(e,t,r=!1,n=!1){if(arguments.length<2)throw new TypeError;const s=f(e,t);if(s===1||s===0&&(r||n))throw new B;return e=A(e),t=A(t),new d(e,t,r,n)}constructor(e,t,r,n){this.lower=e,this.upper=t,this.lowerOpen=r,this.upperOpen=n}includes(e){if(arguments.length===0)throw new TypeError;if(e=A(e),this.lower!==void 0){const t=f(this.lower,e);if(t===1||t===0&&this.lowerOpen)return!1}if(this.upper!==void 0){const t=f(this.upper,e);if(t===-1||t===0&&this.upperOpen)return!1}return!0}get[Symbol.toStringTag](){return\"IDBKeyRange\"}}const P=(u,e)=>{if(Array.isArray(u)){const n=[];for(let s of u){s!=null&&typeof s!=\"string\"&&s.toString&&(s=s.toString());const a=P(s,e).key;n.push(A(a))}return{type:\"found\",key:n}}if(u===\"\")return{type:\"found\",key:e};let t=u,r=e;for(;t!==null;){let n;const s=t.indexOf(\".\");if(s>=0?(n=t.slice(0,s),t=t.slice(s+1)):(n=t,t=null),!(n===\"length\"&&(typeof r==\"string\"||Array.isArray(r))||(n===\"size\"||n===\"type\")&&typeof Blob<\"u\"&&r instanceof Blob||(n===\"name\"||n===\"lastModified\")&&typeof File<\"u\"&&r instanceof File)&&(typeof r!=\"object\"||r===null||!Object.hasOwn(r,n)))return{type:\"notFound\"};r=r[n]}return{type:\"found\",key:r}};function ye(u,e){if(e._state!==\"active\")throw new Error(\"Assert: transaction state is active\");e._state=\"inactive\";try{return structuredClone(u)}finally{e._state=\"active\"}}const R=u=>u.source instanceof g?u.source:u.source.objectStore,L=(u,e,t)=>{let r=u!==void 0?u.lower:void 0,n=u!==void 0?u.upper:void 0;for(const s of e)s!==void 0&&(r===void 0||f(r,s)===1)&&(r=s);for(const s of t)s!==void 0&&(n===void 0||f(n,s)===-1)&&(n=s);if(r!==void 0&&n!==void 0)return d.bound(r,n);if(r!==void 0)return d.lowerBound(r);if(n!==void 0)return d.upperBound(n)};class W{_gotValue=!1;_position=void 0;_objectStorePosition=void 0;_keyOnly=!1;_key=void 0;_primaryKey=void 0;constructor(e,t,r=\"next\",n,s=!1){this._range=t,this._source=e,this._direction=r,this._request=n,this._keyOnly=s}get source(){return this._source}set source(e){}get request(){return this._request}set request(e){}get direction(){return this._direction}set direction(e){}get key(){return this._key}set key(e){}get primaryKey(){return this._primaryKey}set primaryKey(e){}_iterate(e,t){const r=this.source instanceof g,n=this.source instanceof g?this.source._rawObjectStore.records:this.source._rawIndex.records;let s;if(this.direction===\"next\"){const o=L(this._range,[e,this._position],[]);for(const i of n.values(o)){const c=e!==void 0?f(i.key,e):void 0,h=this._position!==void 0?f(i.key,this._position):void 0;if(!(e!==void 0&&c===-1)){if(t!==void 0){if(c===-1)continue;const w=f(i.value,t);if(c===0&&w===-1)continue}if(!(this._position!==void 0&&r&&h!==1)&&!(this._position!==void 0&&!r&&(h===-1||h===0&&f(i.value,this._objectStorePosition)!==1))&&!(this._range!==void 0&&!this._range.includes(i.key))){s=i;break}}}}else if(this.direction===\"nextunique\"){const o=L(this._range,[e,this._position],[]);for(const i of n.values(o))if(!(e!==void 0&&f(i.key,e)===-1)&&!(this._position!==void 0&&f(i.key,this._position)!==1)&&!(this._range!==void 0&&!this._range.includes(i.key))){s=i;break}}else if(this.direction===\"prev\"){const o=L(this._range,[],[e,this._position]);for(const i of n.values(o,\"prev\")){const c=e!==void 0?f(i.key,e):void 0,h=this._position!==void 0?f(i.key,this._position):void 0;if(!(e!==void 0&&c===1)){if(t!==void 0){if(c===1)continue;const w=f(i.value,t);if(c===0&&w===1)continue}if(!(this._position!==void 0&&r&&h!==-1)&&!(this._position!==void 0&&!r&&(h===1||h===0&&f(i.value,this._objectStorePosition)!==-1))&&!(this._range!==void 0&&!this._range.includes(i.key))){s=i;break}}}}else if(this.direction===\"prevunique\"){let o;const i=L(this._range,[],[e,this._position]);for(const c of n.values(i,\"prev\"))if(!(e!==void 0&&f(c.key,e)===1)&&!(this._position!==void 0&&f(c.key,this._position)!==-1)&&!(this._range!==void 0&&!this._range.includes(c.key))){o=c;break}o&&(s=n.get(o.key))}let a;if(!s)this._key=void 0,r||(this._objectStorePosition=void 0),!this._keyOnly&&this.toString()===\"[object IDBCursorWithValue]\"&&(this.value=void 0),a=null;else{if(this._position=s.key,r||(this._objectStorePosition=s.value),this._key=s.key,r)this._primaryKey=structuredClone(s.key),!this._keyOnly&&this.toString()===\"[object IDBCursorWithValue]\"&&(this.value=structuredClone(s.value));else if(this._primaryKey=structuredClone(s.value),!this._keyOnly&&this.toString()===\"[object IDBCursorWithValue]\"){if(this.source instanceof g)throw new Error(\"This should never happen\");const o=this.source.objectStore._rawObjectStore.getValue(s.value);this.value=structuredClone(o)}this._gotValue=!0,a=this}return a}update(e){if(e===void 0)throw new TypeError;const t=R(this),r=Object.hasOwn(this.source,\"_rawIndex\")?this.primaryKey:this._position,n=t.transaction;if(n._state!==\"active\")throw new y;if(n.mode===\"readonly\")throw new k;if(t._rawObjectStore.deleted)throw new l;if(!(this.source instanceof g)&&this.source._rawIndex.deleted)throw new l;if(!this._gotValue||!Object.hasOwn(this,\"value\"))throw new l;const s=ye(e,n);if(t.keyPath!==null){let o;try{o=P(t.keyPath,s).key}catch{}if(f(o,r)!==0)throw new B}const a={key:r,value:s};return n._execRequestAsync({operation:t._rawObjectStore.storeRecord.bind(t._rawObjectStore,a,!1,n._rollbackLog),source:this})}advance(e){if(!Number.isInteger(e)||e<=0)throw new TypeError;const t=R(this),r=t.transaction;if(r._state!==\"active\")throw new y;if(t._rawObjectStore.deleted)throw new l;if(!(this.source instanceof g)&&this.source._rawIndex.deleted)throw new l;if(!this._gotValue)throw new l;this._request&&(this._request.readyState=\"pending\"),r._execRequestAsync({operation:()=>{let n;for(let s=0;s<e&&(n=this._iterate(),!!n);s++);return n},request:this._request,source:this.source}),this._gotValue=!1}continue(e){const t=R(this),r=t.transaction;if(r._state!==\"active\")throw new y;if(t._rawObjectStore.deleted)throw new l;if(!(this.source instanceof g)&&this.source._rawIndex.deleted)throw new l;if(!this._gotValue)throw new l;if(e!==void 0){e=A(e);const n=f(e,this._position);if(n<=0&&(this.direction===\"next\"||this.direction===\"nextunique\")||n>=0&&(this.direction===\"prev\"||this.direction===\"prevunique\"))throw new B}this._request&&(this._request.readyState=\"pending\"),r._execRequestAsync({operation:this._iterate.bind(this,e),request:this._request,source:this.source}),this._gotValue=!1}continuePrimaryKey(e,t){const r=R(this),n=r.transaction;if(n._state!==\"active\")throw new y;if(r._rawObjectStore.deleted)throw new l;if(!(this.source instanceof g)&&this.source._rawIndex.deleted)throw new l;if(this.source instanceof g||this.direction!==\"next\"&&this.direction!==\"prev\")throw new M;if(!this._gotValue)throw new l;if(e===void 0||t===void 0)throw new B;e=A(e);const s=f(e,this._position);if(s===-1&&this.direction===\"next\"||s===1&&this.direction===\"prev\")throw new B;const a=f(t,this._objectStorePosition);if(s===0&&(a<=0&&this.direction===\"next\"||a>=0&&this.direction===\"prev\"))throw new B;this._request&&(this._request.readyState=\"pending\"),n._execRequestAsync({operation:this._iterate.bind(this,e,t),request:this._request,source:this.source}),this._gotValue=!1}delete(){const e=R(this),t=Object.hasOwn(this.source,\"_rawIndex\")?this.primaryKey:this._position,r=e.transaction;if(r._state!==\"active\")throw new y;if(r.mode===\"readonly\")throw new k;if(e._rawObjectStore.deleted)throw new l;if(!(this.source instanceof g)&&this.source._rawIndex.deleted)throw new l;if(!this._gotValue||!Object.hasOwn(this,\"value\"))throw new l;return r._execRequestAsync({operation:e._rawObjectStore.deleteRecord.bind(e._rawObjectStore,t,r._rollbackLog),source:this})}get[Symbol.toStringTag](){return\"IDBCursor\"}}class re extends W{value=void 0;constructor(e,t,r,n){super(e,t,r,n)}get[Symbol.toStringTag](){return\"IDBCursorWithValue\"}}const le=(u,e)=>u.immediatePropagationStopped||u.eventPhase===u.CAPTURING_PHASE&&e.capture===!1||u.eventPhase===u.BUBBLING_PHASE&&e.capture===!0,H=(u,e)=>{u.currentTarget=e;const t=[],r=o=>{try{(typeof o==\"function\"?o:o.handleEvent).call(u.currentTarget,u)}catch(i){t.push(i)}};for(const o of e.listeners.slice())u.type!==o.type||le(u,o)||r(o.callback);const s={abort:\"onabort\",blocked:\"onblocked\",close:\"onclose\",complete:\"oncomplete\",error:\"onerror\",success:\"onsuccess\",upgradeneeded:\"onupgradeneeded\",versionchange:\"onversionchange\"}[u.type];if(s===void 0)throw new Error(`Unknown event type: \"${u.type}\"`);const a=u.currentTarget[s];if(a){const o={callback:a,capture:!1,type:u.type};le(u,o)||r(o.callback)}if(t.length)throw new AggregateError(t)};class ue{listeners=[];addEventListener(e,t,r){const n=!!(typeof r==\"object\"&&r?r.capture:r);this.listeners.push({callback:t,capture:n,type:e})}removeEventListener(e,t,r){const n=!!(typeof r==\"object\"&&r?r.capture:r),s=this.listeners.findIndex(a=>a.type===e&&a.callback===t&&a.capture===n);this.listeners.splice(s,1)}dispatchEvent(e){if(e.dispatched||!e.initialized)throw new l(\"The object is in an invalid state.\");e.isTrusted=!1,e.dispatched=!0,e.target=this,e.eventPhase=e.CAPTURING_PHASE;for(const t of e.eventPath)e.propagationStopped||H(e,t);if(e.eventPhase=e.AT_TARGET,e.propagationStopped||H(e,e.target),e.bubbles){e.eventPath.reverse(),e.eventPhase=e.BUBBLING_PHASE;for(const t of e.eventPath)e.propagationStopped||H(e,t)}return e.dispatched=!1,e.eventPhase=e.NONE,e.currentTarget=null,!e.canceled}}class v extends ue{_result=null;_error=null;source=null;transaction=null;readyState=\"pending\";onsuccess=null;onerror=null;get error(){if(this.readyState===\"pending\")throw new l;return this._error}set error(e){this._error=e}get result(){if(this.readyState===\"pending\")throw new l;return this._result}set result(e){this._result=e}get[Symbol.toStringTag](){return\"IDBRequest\"}}class p{constructor(...e){this._values=e;for(let t=0;t<e.length;t++)this[t]=e[t]}contains(e){return this._values.includes(e)}item(e){return e<0||e>=this._values.length?null:this._values[e]}get length(){return this._values.length}[Symbol.iterator](){return this._values[Symbol.iterator]()}_push(...e){for(let t=0;t<e.length;t++)this[this._values.length+t]=e[t];this._values.push(...e)}_sort(...e){this._values.sort(...e);for(let t=0;t<this._values.length;t++)this[t]=this._values[t];return this}}const T=(u,e=!1)=>{if(u instanceof d)return u;if(u==null){if(e)throw new B;return new d(void 0,void 0,!1,!1)}const t=A(u);return d.only(t)},he=u=>typeof u==\"object\"&&u?u+\"\":u;function Ee(u){return Array.isArray(u)?u.map(he):he(u)}const qe=u=>u instanceof d?!0:te(u)!==G,V=(u,e)=>{const r=e===\"unsigned long\"?4294967295:9007199254740991;if(isNaN(u)||u<0||u>r)throw new TypeError;if(u>=0)return Math.floor(u)},z=(u,e,t)=>{let r,n;if(u==null||qe(u))r=u,t>1&&e!==void 0&&(e=V(e,\"unsigned long\"));else{const s=u;s.query!==void 0&&(r=s.query),s.count!==void 0&&(e=V(s.count,\"unsigned long\")),s.direction!==void 0&&(n=s.direction)}return{query:r,count:e,direction:n}},m=u=>{if(u._rawIndex.deleted||u.objectStore._rawObjectStore.deleted)throw new l;if(u.objectStore.transaction._state!==\"active\")throw new y};class X{constructor(e,t){this._rawIndex=t,this._name=t.name,this.objectStore=e,this.keyPath=Ee(t.keyPath),this.multiEntry=t.multiEntry,this.unique=t.unique}get name(){return this._name}set name(e){const t=this.objectStore.transaction;if(!t.db._runningVersionchangeTransaction)throw t._state===\"active\"?new l:new y;if(t._state!==\"active\")throw new y;if(this._rawIndex.deleted||this.objectStore._rawObjectStore.deleted)throw new l;if(e=String(e),e===this._name)return;if(this.objectStore.indexNames.contains(e))throw new S;const r=this._name,n=[...this.objectStore.indexNames];this._name=e,this._rawIndex.name=e,this.objectStore._indexesCache.delete(r),this.objectStore._indexesCache.set(e,this),this.objectStore._rawObjectStore.rawIndexes.delete(r),this.objectStore._rawObjectStore.rawIndexes.set(e,this._rawIndex),this.objectStore.indexNames=new p(...Array.from(this.objectStore._rawObjectStore.rawIndexes.keys()).filter(s=>{const a=this.objectStore._rawObjectStore.rawIndexes.get(s);return a&&!a.deleted}).sort()),this.objectStore.transaction._createdIndexes.has(this._rawIndex)||t._rollbackLog.push(()=>{this._name=r,this._rawIndex.name=r,this.objectStore._indexesCache.delete(e),this.objectStore._indexesCache.set(r,this),this.objectStore._rawObjectStore.rawIndexes.delete(e),this.objectStore._rawObjectStore.rawIndexes.set(r,this._rawIndex),this.objectStore.indexNames=new p(...n)})}openCursor(e,t){m(this),e===null&&(e=void 0),e!==void 0&&!(e instanceof d)&&(e=d.only(A(e)));const r=new v;r.source=this,r.transaction=this.objectStore.transaction;const n=new re(this,e,t,r);return this.objectStore.transaction._execRequestAsync({operation:n._iterate.bind(n),request:r,source:this})}openKeyCursor(e,t){m(this),e===null&&(e=void 0),e!==void 0&&!(e instanceof d)&&(e=d.only(A(e)));const r=new v;r.source=this,r.transaction=this.objectStore.transaction;const n=new W(this,e,t,r,!0);return this.objectStore.transaction._execRequestAsync({operation:n._iterate.bind(n),request:r,source:this})}get(e){return m(this),e instanceof d||(e=A(e)),this.objectStore.transaction._execRequestAsync({operation:this._rawIndex.getValue.bind(this._rawIndex,e),source:this})}getAll(e,t){const r=z(e,t,arguments.length);m(this);const n=T(r.query);return this.objectStore.transaction._execRequestAsync({operation:this._rawIndex.getAllValues.bind(this._rawIndex,n,r.count,r.direction),source:this})}getKey(e){return m(this),e instanceof d||(e=A(e)),this.objectStore.transaction._execRequestAsync({operation:this._rawIndex.getKey.bind(this._rawIndex,e),source:this})}getAllKeys(e,t){const r=z(e,t,arguments.length);m(this);const n=T(r.query);return this.objectStore.transaction._execRequestAsync({operation:this._rawIndex.getAllKeys.bind(this._rawIndex,n,r.count,r.direction),source:this})}getAllRecords(e){let t,r,n;e!==void 0&&(e.query!==void 0&&(t=e.query),e.count!==void 0&&(r=V(e.count,\"unsigned long\")),e.direction!==void 0&&(n=e.direction)),m(this);const s=T(t);return this.objectStore.transaction._execRequestAsync({operation:this._rawIndex.getAllRecords.bind(this._rawIndex,s,r,n),source:this})}count(e){return m(this),e===null&&(e=void 0),e!==void 0&&!(e instanceof d)&&(e=d.only(A(e))),this.objectStore.transaction._execRequestAsync({operation:()=>this._rawIndex.count(e),source:this})}get[Symbol.toStringTag](){return\"IDBIndex\"}}const Ne=(u,e)=>{if(Array.isArray(u))throw new Error(\"The key paths used in this section are always strings and never sequences, since it is not possible to create a object store which has a key generator and also has a key path that is a sequence.\");const t=u.split(\".\");if(t.length===0)throw new Error(\"Assert: identifiers is not empty\");t.pop();for(const r of t){if(typeof e!=\"object\"&&!Array.isArray(e))return!1;if(!Object.hasOwn(e,r))return!0;e=e[r]}return typeof e==\"object\"||Array.isArray(e)};class ne{constructor(e,t,r){this._key=e,this._primaryKey=t,this._value=r}get key(){return this._key}set key(e){}get primaryKey(){return this._primaryKey}set primaryKey(e){}get value(){return this._value}set value(e){}get[Symbol.toStringTag](){return\"IDBRecord\"}}const ke=2/3,Ve=new d(void 0,void 0,!1,!1);class fe{_numTombstones=0;_numNodes=0;constructor(e){this._keysAreUnique=!!e}size(){return this._numNodes-this._numTombstones}get(e){return this._getByComparator(this._root,t=>this._compare(e,t))}contains(e){return!!this.get(e)}_compare(e,t){const r=f(e.key,t.key);return r!==0?r:this._keysAreUnique?0:f(e.value,t.value)}_getByComparator(e,t){let r=e;for(;r;){const n=t(r.record);if(n<0)r=r.left;else if(n>0)r=r.right;else return r.record}}put(e,t=!1){if(!this._root){this._root={record:e,left:void 0,right:void 0,parent:void 0,deleted:!1,red:!1},this._numNodes++;return}return this._put(this._root,e,t)}_put(e,t,r){const n=this._compare(t,e.record);if(n<0){if(e.left)return this._put(e.left,t,r);e.left={record:t,left:void 0,right:void 0,parent:e,deleted:!1,red:!0},this._onNewNodeInserted(e.left)}else if(n>0){if(e.right)return this._put(e.right,t,r);e.right={record:t,left:void 0,right:void 0,parent:e,deleted:!1,red:!0},this._onNewNodeInserted(e.right)}else if(e.deleted)e.deleted=!1,e.record=t,this._numTombstones--;else{if(r)throw new S;{const s=e.record;return e.record=t,s}}}delete(e){if(this._root&&(this._delete(this._root,e),this._numTombstones>this._numNodes*ke)){const t=[...this.getAllRecords()];this._root=this._rebuild(t,void 0,!1),this._numNodes=t.length,this._numTombstones=0}}_delete(e,t){if(!e)return;const r=this._compare(t,e.record);r<0?this._delete(e.left,t):r>0?this._delete(e.right,t):e.deleted||(this._numTombstones++,e.deleted=!0)}*getAllRecords(e=!1){yield*this.getRecords(Ve,e)}*getRecords(e,t=!1){yield*this._getRecordsForNode(this._root,e,t)}*_getRecordsForNode(e,t,r=!1){e&&(yield*this._findRecords(e,t,r))}*_findRecords(e,t,r=!1){const{lower:n,upper:s,lowerOpen:a,upperOpen:o}=t,{record:{key:i}}=e,c=n===void 0?-1:f(n,i),h=s===void 0?1:f(s,i),w=this._keysAreUnique?c<0:c<=0,b=this._keysAreUnique?h>0:h>=0,_=r?b:w,j=r?w:b,oe=r?\"right\":\"left\",ae=r?\"left\":\"right\",Oe=a?c<0:c<=0,Ie=o?h>0:h>=0;_&&e[oe]&&(yield*this._findRecords(e[oe],t,r)),Oe&&Ie&&!e.deleted&&(yield e.record),j&&e[ae]&&(yield*this._findRecords(e[ae],t,r))}_onNewNodeInserted(e){this._numNodes++,this._rebalanceTree(e)}_rebalanceTree(e){let t=e.parent;do{if(!t.red)return;const r=t.parent;if(!r){t.red=!1;return}const n=t===r.right,s=n?r.left:r.right;if(!s||!s.red){e===(n?t.left:t.right)&&(this._rotateSubtree(t,n),e=t,t=n?r.right:r.left),this._rotateSubtree(r,!n),t.red=!1,r.red=!0;return}t.red=!1,s.red=!1,r.red=!0,e=r}while(e.parent&&(t=e.parent))}_rotateSubtree(e,t){const r=e.parent,n=t?e.left:e.right,s=t?n.right:n.left;return e[t?\"left\":\"right\"]=s,s&&(s.parent=e),n[t?\"right\":\"left\"]=e,n.parent=r,e.parent=n,r?r[e===r.right?\"right\":\"left\"]=n:this._root=n,n}_rebuild(e,t,r){const{length:n}=e;if(!n)return;const s=n>>>1,a={record:e[s],left:void 0,right:void 0,parent:t,deleted:!1,red:r},o=this._rebuild(e.slice(0,s),a,!r),i=this._rebuild(e.slice(s+1),a,!r);return a.left=o,a.right=i,a}}class Ce{constructor(e){this.keysAreUnique=e,this.records=new fe(this.keysAreUnique)}get(e){const t=e instanceof d?e:d.only(e);return this.records.getRecords(t).next().value}put(e,t=!1){return this.records.put(e,t)}delete(e){const t=e instanceof d?e:d.only(e),r=[...this.records.getRecords(t)];for(const n of r)this.records.delete(n);return r}deleteByValue(e){const t=e instanceof d?e:d.only(e),r=[];for(const n of this.records.getAllRecords())t.includes(n.value)&&(this.records.delete(n),r.push(n));return r}clear(){const e=[...this.records.getAllRecords()];return this.records=new fe(this.keysAreUnique),e}values(e,t=\"next\"){const r=t===\"prev\"||t===\"prevunique\",n=e?this.records.getRecords(e,r):this.records.getAllRecords(r);return{[Symbol.iterator]:()=>{const s=()=>n.next();if(t===\"next\"||t===\"prev\")return{next:s};if(t===\"nextunique\"){let i;return{next:()=>{let c=s();for(;!c.done&&i!==void 0&&f(i.key,c.value.key)===0;)c=s();return i=c.value,c}}}let a=s(),o=s();return{next:()=>{for(;!o.done&&f(a.value.key,o.value.key)===0;)a=o,o=s();const i=a;return a=o,o=s(),i}}}}}size(){return this.records.size()}}class Pe{deleted=!1;initialized=!1;constructor(e,t,r,n,s){this.rawObjectStore=e,this.name=t,this.keyPath=r,this.multiEntry=n,this.unique=s,this.records=new Ce(s)}getKey(e){const t=this.records.get(e);return t!==void 0?t.value:void 0}getAllKeys(e,t,r){(t===void 0||t===0)&&(t=1/0);const n=[];for(const s of this.records.values(e,r))if(n.push(structuredClone(s.value)),n.length>=t)break;return n}getValue(e){const t=this.records.get(e);return t!==void 0?this.rawObjectStore.getValue(t.value):void 0}getAllValues(e,t,r){(t===void 0||t===0)&&(t=1/0);const n=[];for(const s of this.records.values(e,r))if(n.push(this.rawObjectStore.getValue(s.value)),n.length>=t)break;return n}getAllRecords(e,t,r){(t===void 0||t===0)&&(t=1/0);const n=[];for(const s of this.records.values(e,r))if(n.push(new ne(structuredClone(s.key),structuredClone(this.rawObjectStore.getKey(s.value)),this.rawObjectStore.getValue(s.value))),n.length>=t)break;return n}storeRecord(e){let t;try{t=P(this.keyPath,e.value).key}catch(r){if(r.name===\"DataError\")return;throw r}if(!this.multiEntry||!Array.isArray(t))try{A(t)}catch{return}else{const r=[];for(const n of t)if(r.indexOf(n)<0)try{r.push(A(n))}catch{}t=r}if(!this.multiEntry||!Array.isArray(t)){if(this.unique&&this.records.get(t))throw new S}else if(this.unique){for(const r of t)if(this.records.get(r))throw new S}if(!this.multiEntry||!Array.isArray(t))this.records.put({key:t,value:e.key});else for(const r of t)this.records.put({key:r,value:e.key})}initialize(e){if(this.initialized)throw new Error(\"Index already initialized\");e._execRequestAsync({operation:()=>{try{for(const t of this.rawObjectStore.records.values())this.storeRecord(t);this.initialized=!0}catch(t){e._abort(t.name)}},source:null})}count(e){let t=0;for(const r of this.records.values(e))t+=1;return t}}const U=(u,e)=>{if(u!=null&&typeof u!=\"string\"&&u.toString&&(e===\"array\"||!Array.isArray(u))&&(u=u.toString()),typeof u==\"string\"){if(u===\"\"&&e!==\"string\")return;try{const t=/^(?:[$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])(?:[$0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])*$/;if(u.length>=1&&t.test(u))return}catch(t){throw new K(t.message)}if(u.indexOf(\" \")>=0)throw new K(\"The keypath argument contains an invalid key path (no spaces allowed).\")}if(Array.isArray(u)&&u.length>0){if(e)throw new K(\"The keypath argument contains an invalid key path (nested arrays).\");for(const t of u)U(t,\"array\");return}else if(typeof u==\"string\"&&u.indexOf(\".\")>=0){u=u.split(\".\");for(const t of u)U(t,\"string\");return}throw new K},D=u=>{if(u._rawObjectStore.deleted)throw new l;if(u.transaction._state!==\"active\")throw new y},Ae=(u,e,t)=>{if(D(u),u.transaction.mode===\"readonly\")throw new k;if(u.keyPath!==null&&t!==void 0)throw new B;const r=ye(e,u.transaction);if(u.keyPath!==null){const n=P(u.keyPath,r);if(n.type===\"found\")A(n.key);else if(u._rawObjectStore.keyGenerator){if(!Ne(u.keyPath,r))throw new B}else throw new B}if(u.keyPath===null&&u._rawObjectStore.keyGenerator===null&&t===void 0)throw new B;return t!==void 0&&(t=A(t)),{key:t,value:r}};class g{_indexesCache=new Map;constructor(e,t){this._rawObjectStore=t,this._name=t.name,this.keyPath=Ee(t.keyPath),this.autoIncrement=t.autoIncrement,this.transaction=e,this.indexNames=new p(...Array.from(t.rawIndexes.keys()).sort())}get name(){return this._name}set name(e){const t=this.transaction;if(!t.db._runningVersionchangeTransaction)throw t._state===\"active\"?new l:new y;if(D(this),e=String(e),e===this._name)return;if(this._rawObjectStore.rawDatabase.rawObjectStores.has(e))throw new S;const r=this._name,n=[...t.db.objectStoreNames];this._name=e,this._rawObjectStore.name=e,this.transaction._objectStoresCache.delete(r),this.transaction._objectStoresCache.set(e,this),this._rawObjectStore.rawDatabase.rawObjectStores.delete(r),this._rawObjectStore.rawDatabase.rawObjectStores.set(e,this._rawObjectStore),t.db.objectStoreNames=new p(...Array.from(this._rawObjectStore.rawDatabase.rawObjectStores.keys()).filter(o=>{const i=this._rawObjectStore.rawDatabase.rawObjectStores.get(o);return i&&!i.deleted}).sort());const s=new Set(t._scope),a=[...t.objectStoreNames];this.transaction._scope.delete(r),t._scope.add(e),t.objectStoreNames=new p(...Array.from(t._scope).sort()),this.transaction._createdObjectStores.has(this._rawObjectStore)||t._rollbackLog.push(()=>{this._name=r,this._rawObjectStore.name=r,this.transaction._objectStoresCache.delete(e),this.transaction._objectStoresCache.set(r,this),this._rawObjectStore.rawDatabase.rawObjectStores.delete(e),this._rawObjectStore.rawDatabase.rawObjectStores.set(r,this._rawObjectStore),t.db.objectStoreNames=new p(...n),t._scope=s,t.objectStoreNames=new p(...a)})}put(e,t){if(arguments.length===0)throw new TypeError;const r=Ae(this,e,t);return this.transaction._execRequestAsync({operation:this._rawObjectStore.storeRecord.bind(this._rawObjectStore,r,!1,this.transaction._rollbackLog),source:this})}add(e,t){if(arguments.length===0)throw new TypeError;const r=Ae(this,e,t);return this.transaction._execRequestAsync({operation:this._rawObjectStore.storeRecord.bind(this._rawObjectStore,r,!0,this.transaction._rollbackLog),source:this})}delete(e){if(arguments.length===0)throw new TypeError;if(D(this),this.transaction.mode===\"readonly\")throw new k;return e instanceof d||(e=A(e)),this.transaction._execRequestAsync({operation:this._rawObjectStore.deleteRecord.bind(this._rawObjectStore,e,this.transaction._rollbackLog),source:this})}get(e){if(arguments.length===0)throw new TypeError;return D(this),e instanceof d||(e=A(e)),this.transaction._execRequestAsync({operation:this._rawObjectStore.getValue.bind(this._rawObjectStore,e),source:this})}getAll(e,t){const r=z(e,t,arguments.length);D(this);const n=T(r.query);return this.transaction._execRequestAsync({operation:this._rawObjectStore.getAllValues.bind(this._rawObjectStore,n,r.count,r.direction),source:this})}getKey(e){if(arguments.length===0)throw new TypeError;return D(this),e instanceof d||(e=A(e)),this.transaction._execRequestAsync({operation:this._rawObjectStore.getKey.bind(this._rawObjectStore,e),source:this})}getAllKeys(e,t){const r=z(e,t,arguments.length);D(this);const n=T(r.query);return this.transaction._execRequestAsync({operation:this._rawObjectStore.getAllKeys.bind(this._rawObjectStore,n,r.count,r.direction),source:this})}getAllRecords(e){let t,r,n;e!==void 0&&(e.query!==void 0&&(t=e.query),e.count!==void 0&&(r=V(e.count,\"unsigned long\")),e.direction!==void 0&&(n=e.direction)),D(this);const s=T(t);return this.transaction._execRequestAsync({operation:this._rawObjectStore.getAllRecords.bind(this._rawObjectStore,s,r,n),source:this})}clear(){if(D(this),this.transaction.mode===\"readonly\")throw new k;return this.transaction._execRequestAsync({operation:this._rawObjectStore.clear.bind(this._rawObjectStore,this.transaction._rollbackLog),source:this})}openCursor(e,t){D(this),e===null&&(e=void 0),e!==void 0&&!(e instanceof d)&&(e=d.only(A(e)));const r=new v;r.source=this,r.transaction=this.transaction;const n=new re(this,e,t,r);return this.transaction._execRequestAsync({operation:n._iterate.bind(n),request:r,source:this})}openKeyCursor(e,t){D(this),e===null&&(e=void 0),e!==void 0&&!(e instanceof d)&&(e=d.only(A(e)));const r=new v;r.source=this,r.transaction=this.transaction;const n=new W(this,e,t,r,!0);return this.transaction._execRequestAsync({operation:n._iterate.bind(n),request:r,source:this})}createIndex(e,t,r={}){if(arguments.length<2)throw new TypeError;const n=r.multiEntry!==void 0?r.multiEntry:!1,s=r.unique!==void 0?r.unique:!1;if(this.transaction.mode!==\"versionchange\")throw new l;if(D(this),this.indexNames.contains(e))throw new S;if(U(t),Array.isArray(t)&&n)throw new M;const a=[...this.indexNames],o=new Pe(this._rawObjectStore,e,t,n,s);return this.indexNames._push(e),this.indexNames._sort(),this.transaction._createdIndexes.add(o),this._rawObjectStore.rawIndexes.set(e,o),o.initialize(this.transaction),this.transaction._rollbackLog.push(()=>{o.deleted=!0,this.indexNames=new p(...a),this._rawObjectStore.rawIndexes.delete(o.name)}),new X(this,o)}index(e){if(arguments.length===0)throw new TypeError;if(this._rawObjectStore.deleted||this.transaction._state===\"finished\")throw new l;const t=this._indexesCache.get(e);if(t!==void 0)return t;const r=this._rawObjectStore.rawIndexes.get(e);if(!this.indexNames.contains(e)||r===void 0)throw new N;const n=new X(this,r);return this._indexesCache.set(e,n),n}deleteIndex(e){if(arguments.length===0)throw new TypeError;if(this.transaction.mode!==\"versionchange\")throw new l;D(this);const t=this._rawObjectStore.rawIndexes.get(e);if(t===void 0)throw new N;this.transaction._rollbackLog.push(()=>{t.deleted=!1,this._rawObjectStore.rawIndexes.set(t.name,t),this.indexNames._push(t.name),this.indexNames._sort()}),this.indexNames=new p(...Array.from(this.indexNames).filter(r=>r!==e)),t.deleted=!0,this.transaction._execRequestAsync({operation:()=>{const r=this._rawObjectStore.rawIndexes.get(e);t===r&&this._rawObjectStore.rawIndexes.delete(e)},source:this})}count(e){return D(this),e===null&&(e=void 0),e!==void 0&&!(e instanceof d)&&(e=d.only(A(e))),this.transaction._execRequestAsync({operation:()=>this._rawObjectStore.count(e),source:this})}get[Symbol.toStringTag](){return\"IDBObjectStore\"}}class E{eventPath=[];NONE=0;CAPTURING_PHASE=1;AT_TARGET=2;BUBBLING_PHASE=3;propagationStopped=!1;immediatePropagationStopped=!1;canceled=!1;initialized=!0;dispatched=!1;target=null;currentTarget=null;eventPhase=0;defaultPrevented=!1;isTrusted=!1;timeStamp=Date.now();constructor(e,t={}){this.type=e,this.bubbles=t.bubbles!==void 0?t.bubbles:!1,this.cancelable=t.cancelable!==void 0?t.cancelable:!1}preventDefault(){this.cancelable&&(this.canceled=!0)}stopPropagation(){this.propagationStopped=!0}stopImmediatePropagation(){this.propagationStopped=!0,this.immediatePropagationStopped=!0}}function Ke(){if(typeof navigator<\"u\"&&/jsdom/.test(navigator.userAgent)){const u=Node.constructor;return new u(\"return setImmediate\")()}else return}const Le=typeof scheduler<\"u\"&&(u=>scheduler.postTask(u)),Me=u=>setTimeout(u,0),F=u=>{(globalThis.setImmediate||Ke()||Le||Me)(u)},Ge=[\"error\",\"abort\",\"complete\"];class me extends ue{_state=\"active\";_started=!1;_rollbackLog=[];_objectStoresCache=new Map;_openRequest=null;error=null;onabort=null;oncomplete=null;onerror=null;_prioritizedListeners=new Map;_requests=[];_createdIndexes=new Set;_createdObjectStores=new Set;constructor(e,t,r,n){super(),this._scope=new Set(e),this.mode=t,this.durability=r,this.db=n,this.objectStoreNames=new p(...Array.from(this._scope).sort());for(const s of Ge)this.addEventListener(s,()=>{this._prioritizedListeners.get(s)?.()})}_abort(e){for(const t of this._rollbackLog.reverse())t();if(e!==null){const t=new DOMException(void 0,e);this.error=t}for(const{request:t}of this._requests)t.readyState!==\"done\"&&(t.readyState=\"done\",t.source&&F(()=>{t.result=void 0,t.error=new Q;const r=new E(\"error\",{bubbles:!0,cancelable:!0});r.eventPath=[this.db,this];try{t.dispatchEvent(r)}catch{this._state===\"active\"&&this._abort(\"AbortError\")}}));F(()=>{const t=this.mode===\"versionchange\";t&&(this.db._rawDatabase.connections=this.db._rawDatabase.connections.filter(n=>!n._rawDatabase.transactions.includes(this)));const r=new E(\"abort\",{bubbles:!0,cancelable:!1});if(r.eventPath=[this.db],this.dispatchEvent(r),t){const n=this._openRequest;n.transaction=null,n.result=void 0}}),this._state=\"finished\"}abort(){if(this._state===\"committing\"||this._state===\"finished\")throw new l;this._state=\"active\",this._abort(null)}objectStore(e){if(this._state!==\"active\")throw new l;const t=this._objectStoresCache.get(e);if(t!==void 0)return t;const r=this.db._rawDatabase.rawObjectStores.get(e);if(!this._scope.has(e)||r===void 0)throw new N;const n=new g(this,r);return this._objectStoresCache.set(e,n),n}_execRequestAsync(e){const t=e.source,r=e.operation;let n=Object.hasOwn(e,\"request\")?e.request:null;if(this._state!==\"active\")throw new y;return n||(t?(n=new v,n.source=t,n.transaction=t.transaction):n=new v),this._requests.push({operation:r,request:n}),n}_start(){this._started=!0;let e,t;for(;this._requests.length>0;){const r=this._requests.shift();if(r&&r.request.readyState!==\"done\"){t=r.request,e=r.operation;break}}if(t&&e){if(!t.source)e();else{let r,n;try{const s=e();t.readyState=\"done\",t.result=s,t.error=void 0,this._state===\"inactive\"&&(this._state=\"active\"),n=new E(\"success\",{bubbles:!1,cancelable:!1})}catch(s){t.readyState=\"done\",t.result=void 0,t.error=s,this._state===\"inactive\"&&(this._state=\"active\"),n=new E(\"error\",{bubbles:!0,cancelable:!0}),r=this._abort.bind(this,s.name)}try{n.eventPath=[this.db,this],t.dispatchEvent(n)}catch{this._state===\"active\"&&(this._abort(\"AbortError\"),r=void 0)}n.canceled||r&&r()}F(this._start.bind(this));return}if(this._state!==\"finished\"&&(this._state=\"finished\",!this.error)){const r=new E(\"complete\");this.dispatchEvent(r)}}commit(){if(this._state!==\"active\")throw new l;this._state=\"committing\"}get[Symbol.toStringTag](){return\"IDBTransaction\"}}const we=9007199254740992;class ze{num=0;next(){if(this.num>=we)throw new S;return this.num+=1,this.num}setIfLarger(e){const t=Math.floor(Math.min(e,we))-1;t>=this.num&&(this.num=t+1)}}class Ue{deleted=!1;records=new Ce(!0);rawIndexes=new Map;constructor(e,t,r,n){this.rawDatabase=e,this.keyGenerator=n===!0?new ze:null,this.deleted=!1,this.name=t,this.keyPath=r,this.autoIncrement=n}getKey(e){const t=this.records.get(e);return t!==void 0?structuredClone(t.key):void 0}getAllKeys(e,t,r){(t===void 0||t===0)&&(t=1/0);const n=[];for(const s of this.records.values(e,r))if(n.push(structuredClone(s.key)),n.length>=t)break;return n}getValue(e){const t=this.records.get(e);return t!==void 0?structuredClone(t.value):void 0}getAllValues(e,t,r){(t===void 0||t===0)&&(t=1/0);const n=[];for(const s of this.records.values(e,r))if(n.push(structuredClone(s.value)),n.length>=t)break;return n}getAllRecords(e,t,r){(t===void 0||t===0)&&(t=1/0);const n=[];for(const s of this.records.values(e,r))if(n.push(new ne(structuredClone(s.key),structuredClone(s.key),structuredClone(s.value))),n.length>=t)break;return n}storeRecord(e,t,r){if(this.keyPath!==null){const i=P(this.keyPath,e.value).key;i!==void 0&&(e.key=i)}const n=[];if(this.keyGenerator!==null&&e.key===void 0){let i=!1;const c=this.keyGenerator.num,h=()=>{i||(i=!0,this.keyGenerator&&(this.keyGenerator.num=c))};if(n.push(h),r&&r.push(h),e.key=this.keyGenerator.next(),this.keyPath!==null){if(Array.isArray(this.keyPath))throw new Error(\"Cannot have an array key path in an object store with a key generator\");let w=this.keyPath,b=e.value,_,j=0;for(;j>=0;){if(typeof b!=\"object\")throw new B;j=w.indexOf(\".\"),j>=0&&(_=w.slice(0,j),w=w.slice(j+1),Object.hasOwn(b,_)||Object.defineProperty(b,_,{configurable:!0,enumerable:!0,writable:!0,value:{}}),b=b[_])}_=w,Object.defineProperty(b,_,{configurable:!0,enumerable:!0,writable:!0,value:e.key})}}else this.keyGenerator!==null&&typeof e.key==\"number\"&&this.keyGenerator.setIfLarger(e.key);const s=this.records.put(e,t);let a=!1;const o=()=>{a||(a=!0,s?this.storeRecord(s,!1):this.deleteRecord(e.key))};if(n.push(o),r&&r.push(o),s)for(const i of this.rawIndexes.values())i.records.deleteByValue(e.key);try{for(const i of this.rawIndexes.values())i.initialized&&i.storeRecord(e)}catch(i){if(i.name===\"ConstraintError\")for(const c of n)c();throw i}return e.key}deleteRecord(e,t){const r=this.records.delete(e);if(t)for(const n of r)t.push(()=>{this.storeRecord(n,!0)});for(const n of this.rawIndexes.values())n.records.deleteByValue(e)}clear(e){const t=this.records.clear();if(e)for(const r of t)e.push(()=>{this.storeRecord(r,!0)});for(const r of this.rawIndexes.values())r.records.clear()}count(e){if(e===void 0||e.lower===void 0&&e.upper===void 0)return this.records.size();let t=0;for(const r of this.records.values(e))t+=1;return t}}const se=(u,e=!1)=>{if(u._closePending=!0,u._rawDatabase.transactions.every(r=>r._state===\"finished\")){if(u._closed=!0,u._rawDatabase.connections=u._rawDatabase.connections.filter(r=>u!==r),e){const r=new E(\"close\",{bubbles:!1,cancelable:!1});r.eventPath=[],u.dispatchEvent(r)}}else F(()=>{se(u,e)})},_e=u=>{let e;if(u._runningVersionchangeTransaction&&(e=u._rawDatabase.transactions.findLast(t=>t.mode===\"versionchange\")),!e)throw new l;if(e._state!==\"active\")throw new y;return e};class Se extends ue{_closePending=!1;_closed=!1;_runningVersionchangeTransaction=!1;constructor(e){super(),this._rawDatabase=e,this._rawDatabase.connections.push(this),this.name=e.name,this.version=e.version,this.objectStoreNames=new p(...Array.from(e.rawObjectStores.keys()).sort())}createObjectStore(e,t={}){if(e===void 0)throw new TypeError;const r=_e(this),n=t!==null&&t.keyPath!==void 0?t.keyPath:null,s=t!==null&&t.autoIncrement!==void 0?t.autoIncrement:!1;if(n!==null&&U(n),this._rawDatabase.rawObjectStores.has(e))throw new S;if(s&&(n===\"\"||Array.isArray(n)))throw new M;const a=[...this.objectStoreNames],o=[...r.objectStoreNames],i=new Ue(this._rawDatabase,e,n,s);return this.objectStoreNames._push(e),this.objectStoreNames._sort(),r._scope.add(e),r._createdObjectStores.add(i),this._rawDatabase.rawObjectStores.set(e,i),r.objectStoreNames=new p(...this.objectStoreNames),r._rollbackLog.push(()=>{i.deleted=!0,this.objectStoreNames=new p(...a),r.objectStoreNames=new p(...o),r._scope.delete(i.name),this._rawDatabase.rawObjectStores.delete(i.name)}),r.objectStore(e)}deleteObjectStore(e){if(e===void 0)throw new TypeError;const t=_e(this),r=this._rawDatabase.rawObjectStores.get(e);if(r===void 0)throw new N;this.objectStoreNames=new p(...Array.from(this.objectStoreNames).filter(a=>a!==e)),t.objectStoreNames=new p(...this.objectStoreNames);const n=t._objectStoresCache.get(e);let s;n&&(s=[...n.indexNames],n.indexNames=new p),t._rollbackLog.push(()=>{r.deleted=!1,this._rawDatabase.rawObjectStores.set(r.name,r),this.objectStoreNames._push(r.name),t.objectStoreNames._push(r.name),this.objectStoreNames._sort(),n&&s&&(n.indexNames=new p(...s))}),r.deleted=!0,this._rawDatabase.rawObjectStores.delete(e),t._objectStoresCache.delete(e)}transaction(e,t,r){if(t=t!==void 0?t:\"readonly\",t!==\"readonly\"&&t!==\"readwrite\"&&t!==\"versionchange\")throw new TypeError(\"Invalid mode: \"+t);if(this._rawDatabase.transactions.some(o=>o._state===\"active\"&&o.mode===\"versionchange\"&&o.db===this))throw new l;if(this._closePending)throw new l;if(Array.isArray(e)||(e=[e]),e.length===0&&t!==\"versionchange\")throw new M;for(const o of e)if(!this.objectStoreNames.contains(o))throw new N(\"No objectStore named \"+o+\" in this database\");const s=r?.durability??\"default\";if(s!==\"default\"&&s!==\"strict\"&&s!==\"relaxed\")throw new TypeError(`'${s}' (value of 'durability' member of IDBTransactionOptions) is not a valid value for enumeration IDBTransactionDurability`);const a=new me(e,t,s,this);return this._rawDatabase.transactions.push(a),this._rawDatabase.processTransactions(),a}close(){se(this)}get[Symbol.toStringTag](){return\"IDBDatabase\"}}class Z extends v{onupgradeneeded=null;onblocked=null;get[Symbol.toStringTag](){return\"IDBOpenDBRequest\"}}class I extends E{constructor(e,t={}){super(e),this.newVersion=t.newVersion!==void 0?t.newVersion:null,this.oldVersion=t.oldVersion!==void 0?t.oldVersion:0}get[Symbol.toStringTag](){return\"IDBVersionChangeEvent\"}}function be(u,e){return\"intersection\"in u?u.intersection(e):new Set([...u].filter(t=>e.has(t)))}class $e{transactions=[];rawObjectStores=new Map;connections=[];constructor(e,t){this.name=e,this.version=t,this.processTransactions=this.processTransactions.bind(this)}processTransactions(){F(()=>{const e=this.transactions.filter(n=>n._started&&n._state!==\"finished\"),t=this.transactions.filter(n=>!n._started&&n._state!==\"finished\"),r=t.find((n,s)=>e.some(i=>!(n.mode===\"readonly\"&&i.mode===\"readonly\")&&be(i._scope,n._scope).size>0)?!1:!t.slice(0,s).some(i=>be(i._scope,n._scope).size>0));r&&(r.addEventListener(\"complete\",this.processTransactions),r.addEventListener(\"abort\",this.processTransactions),r._start())})}}function Y(u,e,t){if(u<e)throw new TypeError(`${t}: At least ${e} ${e===1?\"argument\":\"arguments\"} required, but only ${arguments.length} passed`)}const ve=(u,e,t)=>{const r=u.get(e)??Promise.resolve();u.set(e,r.then(t))},je=(u,e,t,r)=>{if(t.some(s=>!s._closed&&!s._closePending)){F(()=>je(u,e,t,r));return}u.delete(e),r(null)},We=(u,e,t,r,n)=>{ve(e,t,()=>new Promise(a=>{const o=u.get(t),i=o!==void 0?o.version:0,c=h=>{try{h?n(h):n(null,i)}finally{a()}};try{const h=u.get(t);if(h===void 0){c(null);return}const w=h.connections.filter(b=>!b._closed);for(const b of w)b._closePending||F(()=>{const _=new I(\"versionchange\",{newVersion:null,oldVersion:h.version});b.dispatchEvent(_)});F(()=>{w.some(_=>!_._closed&&!_._closePending)&&F(()=>{const _=new I(\"blocked\",{newVersion:null,oldVersion:h.version});r.dispatchEvent(_)}),je(u,t,w,c)})}catch(h){c(h)}}))},He=(u,e,t,r)=>{u._runningVersionchangeTransaction=!0;const n=u._oldVersion=u.version,s=u._rawDatabase.connections.filter(a=>u!==a);for(const a of s)!a._closed&&!a._closePending&&F(()=>{const o=new I(\"versionchange\",{newVersion:e,oldVersion:n});a.dispatchEvent(o)});F(()=>{s.some(i=>!i._closed&&!i._closePending)&&F(()=>{const i=new I(\"blocked\",{newVersion:e,oldVersion:n});t.dispatchEvent(i)});const o=()=>{if(s.some(_=>!_._closed&&!_._closePending)){F(o);return}u._rawDatabase.version=e,u.version=e;const c=u.transaction(Array.from(u.objectStoreNames),\"versionchange\");c._openRequest=t,t.result=u,t.readyState=\"done\",t.transaction=c,c._rollbackLog.push(()=>{u._rawDatabase.version=n,u.version=n}),c._state=\"active\";const h=new I(\"upgradeneeded\",{newVersion:e,oldVersion:n});let w=!1;try{t.dispatchEvent(h)}catch{w=!0}const b=()=>{c._state===\"active\"&&(c._state=\"inactive\",w&&c._abort(\"AbortError\"))};w?b():F(b),c._prioritizedListeners.set(\"error\",()=>{u._runningVersionchangeTransaction=!1,u._oldVersion=void 0}),c._prioritizedListeners.set(\"abort\",()=>{u._runningVersionchangeTransaction=!1,u._oldVersion=void 0,F(()=>{t.transaction=null,r(new Q)})}),c._prioritizedListeners.set(\"complete\",()=>{u._runningVersionchangeTransaction=!1,u._oldVersion=void 0,F(()=>{t.transaction=null,u._closePending?r(new Q):r(null)})})};o()})},Ye=(u,e,t,r,n,s)=>{ve(e,t,()=>new Promise(o=>{const i=w=>{try{w?s(w):s(null,h)}finally{o()}};let c=u.get(t);if(c===void 0&&(c=new $e(t,0),u.set(t,c)),r===void 0&&(r=c.version!==0?c.version:1),c.version>r)return i(new Re);const h=new Se(c);c.version<r?He(h,r,n,w=>{i(w)}):i(null)}))};class xe{_databases=new Map;_connectionQueues=new Map;cmp(e,t){return Y(arguments.length,2,\"IDBFactory.cmp\"),f(e,t)}deleteDatabase(e){Y(arguments.length,1,\"IDBFactory.deleteDatabase\");const t=new Z;return t.source=null,F(()=>{We(this._databases,this._connectionQueues,e,t,(r,n)=>{if(r){t.error=new DOMException(r.message,r.name),t.readyState=\"done\";const a=new E(\"error\",{bubbles:!0,cancelable:!0});a.eventPath=[],t.dispatchEvent(a);return}t.result=void 0,t.readyState=\"done\";const s=new I(\"success\",{newVersion:null,oldVersion:n});t.dispatchEvent(s)})}),t}open(e,t){if(Y(arguments.length,1,\"IDBFactory.open\"),arguments.length>1&&t!==void 0&&(t=V(t,\"MAX_SAFE_INTEGER\")),t===0)throw new TypeError(\"Database version cannot be 0\");const r=new Z;return r.source=null,F(()=>{Ye(this._databases,this._connectionQueues,e,t,r,(n,s)=>{if(n){r.result=void 0,r.readyState=\"done\",r.error=new DOMException(n.message,n.name);const o=new E(\"error\",{bubbles:!0,cancelable:!0});o.eventPath=[],r.dispatchEvent(o);return}r.result=s,r.readyState=\"done\";const a=new E(\"success\");a.eventPath=[],r.dispatchEvent(a)})}),r}databases(){return Promise.resolve(Array.from(this._databases.entries(),([e,t])=>{const r=t.connections.find(s=>s._runningVersionchangeTransaction),n=r?r._oldVersion:t.version;return{name:e,version:n}}).filter(({version:e})=>e>0))}get[Symbol.toStringTag](){return\"IDBFactory\"}}const pe=new xe;function Qe(u){se(u,!0)}const Xe=Object.freeze(Object.defineProperty({__proto__:null,IDBCursor:W,IDBCursorWithValue:re,IDBDatabase:Se,IDBFactory:xe,IDBIndex:X,IDBKeyRange:d,IDBObjectStore:g,IDBOpenDBRequest:Z,IDBRecord:ne,IDBRequest:v,IDBTransaction:me,IDBVersionChangeEvent:I,default:pe,forceCloseDatabase:Qe,indexedDB:pe},Symbol.toStringTag,{value:\"Module\"})),ie=globalThis,O=new EventTarget,q=ee.workerData??{};class Fe{static[Symbol.hasInstance](e){return e===globalThis}}let J=null;Object.assign(ie,Xe,{__FORWARDEMAIL_API_URL__:q.api,self:globalThis,name:q.name??\"\",WorkerGlobalScope:Fe,DedicatedWorkerGlobalScope:Fe,location:new URL(q.href??\"https://mail.forwardemail.net/\"),addEventListener:O.addEventListener.bind(O),removeEventListener:O.removeEventListener.bind(O),dispatchEvent:O.dispatchEvent.bind(O),postMessage(u,e){const t=Array.isArray(e)?e:e?.transfer??[],r=t.filter(n=>n instanceof MessagePort);ee.parentPort.postMessage({data:u,ports:r},t)},close(){process.exit(0)},importScripts(){throw new Error(\"importScripts() is not available in the terminal\")}});delete ie.default;Object.defineProperty(ie,\"onmessage\",{configurable:!0,get:()=>J,set:u=>{J=typeof u==\"function\"?u:null}});ee.parentPort.on(\"message\",u=>{const e=new MessageEvent(\"message\",{data:u.data,ports:u.ports??[]});J?.call(globalThis,e),O.dispatchEvent(e)});const De=q.log,Be=De?ge.openSync(De,\"a\",384):null;for(const u of[\"log\",\"info\",\"debug\",\"warn\",\"error\",\"trace\",\"dir\",\"table\"])console[u]=(...e)=>{if(Be===null)return;const t=`${new Date().toISOString()} ${u.toUpperCase()} [worker ${q.name??\"\"}] ${Te.format(...e)}\n`;try{ge.writeSync(Be,t)}catch{}};\n";
5
5
  function __forwardemailLoadApp() {
@@ -2022,7 +2022,7 @@ Forward Email`,class:"min-h-[120px] font-mono text-sm"})};O(C,B=>{d(a)==="rich"?
2022
2022
  `)),e.push("")),t.nativeLogs&&(e.push("━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),e.push("Native Log Tail"),e.push("━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),e.push(t.nativeLogs),e.push("")),e.push("━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),e.push("End of Report"),e.push("━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),e.join(`
2023
2023
  `)}var I$e=R(`<div class="flex flex-col items-center justify-center py-10 text-center"><div class="mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-state-success/10 text-state-success"><!></div> <h3 class="mb-2 text-lg font-semibold">Thank you for your feedback!</h3> <p class="text-muted-foreground">Reference: <code class="font-mono"> </code></p> <p class="mt-2 text-muted-foreground">We've received your message and will get back to you soon.</p></div>`),Z$e=R("<!> <!>",1),x$e=R('Subject <span class="text-muted-foreground font-normal">(optional)</span>',1),W$e=R('Description <span class="text-destructive">*</span>',1),V$e=R('<span class="text-muted-foreground">(loading…)</span>'),S$e=R("Native log tail <!>",1),G$e=R('<p class="text-destructive text-xs"> </p>'),C$e=R('<div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">Last 64 KB of the desktop/mobile log file (updater, plugins, Rust panics).</p> <!></div></div>'),N$e=R('<pre class="mt-2 max-h-64 overflow-auto rounded bg-background p-2 text-xs"><code> </code></pre>'),w$e=R(`<form class="grid gap-4"><div class="grid gap-2"><!> <!></div> <div class="grid gap-2"><!> <!></div> <div class="grid gap-2"><!> <!> <p class="text-xs text-muted-foreground"> <!></p></div> <div class="grid gap-3 rounded-md border p-3"><p class="text-sm font-medium">Optional diagnostics (all off by default)</p> <p class="text-xs text-muted-foreground">Pick what you're comfortable sharing. Sensitive values (tokens, email addresses, home
2024
2024
  directory paths) are redacted before send. Use "Preview" below to see exactly what
2025
- will be transmitted.</p> <div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">App version, browser, OS, viewport, storage usage.</p></div></div> <div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">Last 50 unhandled errors and rejections from this session.</p></div></div> <div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">Failed API calls and IndexedDB operations from this session.</p></div></div> <!></div> <div class="rounded-md border bg-muted/30 p-3"><div class="flex items-center justify-between gap-2"><span class="text-xs text-muted-foreground">Reference (for support)</span> <button type="button" class="hover:text-foreground text-xs text-muted-foreground inline-flex items-center gap-1" title="Copy reference"><code class="font-mono text-foreground"> </code> <!></button></div></div> <details class="rounded-md border p-3"><summary class="cursor-pointer text-sm font-medium">Preview what will be sent</summary> <!></details> <!></form>`),Y$e=R('<!> <div class="flex gap-2"><!> <!></div>',1),E$e=R('<!> <div class="py-4"><!></div> <!>',1);function k$e(t,e){lt(e,!0);let n=We(e,"onClose",3,()=>{}),i=$("bug"),s=$(""),r=$(""),a=$(!1),o=$(!1),l=$(!1),c=$(!1),u=$(!1),h=$(!1),m=$(""),p=$(!1),A=$(!1);const f=A$e();let y=$(br({})),I=$(br([])),x=$(br([])),V=$(""),W=$(!1),Y=$("");const E=Na;Hr(()=>{C(),G(),N()}),Hr(()=>{d(l)&&Na&&!d(V)&&!d(W)&&(b(W,!0),b(Y,""),Uhe(65536).then(z=>{b(V,z||"(log file is empty)",!0)}).catch(z=>{b(Y,z instanceof Error?z.message:String(z),!0)}).finally(()=>{b(W,!1)}))});function C(){const z=Se.get("email")||"unknown",ie={userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,screenResolution:`${window.screen.width}x${window.screen.height}`,viewportSize:`${window.innerWidth}x${window.innerHeight}`,online:Cu(),appVersion:"0.14.24",activeEmail:z};navigator.serviceWorker?.controller?ie.serviceWorker={active:!0,scope:navigator.serviceWorker.controller.scriptURL}:ie.serviceWorker={active:!1},b(y,ie,!0),navigator.storage?.estimate&&navigator.storage.estimate().then(ue=>{const be=ue.usage??0,ce=ue.quota??0;b(y,{...d(y),storageQuota:{usage:be,quota:ce,percentUsed:ce>0?(be/ce*100).toFixed(2):"0"}},!0)})}function G(){try{const z=sessionStorage.getItem("app_logs");z&&b(I,JSON.parse(z).slice(-50),!0)}catch{b(I,[],!0)}}function N(){try{const z=sessionStorage.getItem("api_errors"),ie=sessionStorage.getItem("db_errors"),ue=z?JSON.parse(z):[],be=ie?JSON.parse(ie):[];b(x,[...ue.slice(-20),...be.slice(-10)],!0)}catch{b(x,[],!0)}}const B=q(()=>({systemInfo:d(a),jsErrors:d(o),nativeLogs:d(l),networkErrors:d(c)})),F=q(()=>({systemInfo:d(y),jsErrors:d(I),nativeLogs:d(V),networkErrors:d(x)})),H=q(()=>g$e({type:d(i),subject:d(s),description:d(r),correlationId:f,consents:d(B),sources:d(F)})),U=q(()=>JSON.stringify(d(H),null,2));async function _(){try{await navigator.clipboard.writeText(f),b(A,!0),setTimeout(()=>b(A,!1),2e3)}catch{}}async function j(){if(!d(r).trim()){b(m,"Please provide a description");return}b(h,!0),b(m,"");try{const z=d(H),ie=f$e(z,d(s)),ue=y$e(z),be=Se.get("alias_auth")||"",ke=(be.includes(":")?be.split(":")[0]:be)||Se.get("email")||"webmail-feedback@forwardemail.net";await Ms.request("Emails",{from:ke,to:["support@forwardemail.net"],subject:ie,text:ue,has_attachment:!1},{method:"POST"}),b(p,!0),setTimeout(n(),5e3)}catch(z){Xl(z)||(console.error("Failed to submit feedback:",z),b(m,z.message||"Failed to submit feedback. Please try again.",!0))}finally{b(h,!1)}}function D(){yE(d(U),`webmail-feedback-${f}.json`,"application/json")}const P=[{value:"bug",label:"Bug Report"},{value:"feature",label:"Feature Request"},{value:"question",label:"Question"},{value:"other",label:"Other"}];var te=pe(),ne=w(te);T(ne,()=>sd,(z,ie)=>{ie(z,{open:!0,onOpenChange:ue=>!ue&&n()(),children:(ue,be)=>{var ce=pe(),ke=w(ce);T(ke,()=>ld,(J,Ee)=>{Ee(J,{class:"sm:max-w-lg",children:(ge,Ye)=>{var fe=E$e(),Be=w(fe);T(Be,()=>od,(nn,tt)=>{tt(nn,{children:(xn,Wt)=>{var Gn=pe(),Ot=w(Gn);T(Ot,()=>rd,(vn,Me)=>{Me(vn,{children:(St,dn)=>{var un=le("Send Feedback");g(St,un)},$$slots:{default:!0}})}),g(xn,Gn)},$$slots:{default:!0}})});var Ne=Z(Be,2),qe=k(Ne);{var ot=nn=>{var tt=I$e(),xn=k(tt),Wt=k(xn);H0(Wt,{class:"h-6 w-6"});var Gn=Z(xn,4),Ot=Z(k(Gn)),vn=Te(Ot,!0);oe(()=>ae(vn,f)),g(nn,tt)},It=nn=>{var tt=w$e(),xn=k(tt),Wt=k(xn);Ns(Wt,{for:"feedback-type",children:(ai,Rs)=>{var hs=le("What kind of feedback?");g(ai,hs)},$$slots:{default:!0}});var Gn=Z(Wt,2);T(Gn,()=>td,(ai,Rs)=>{Rs(ai,{type:"single",name:"feedback-type",get value(){return d(i)},set value(hs){b(i,hs,!0)},children:(hs,Vs)=>{var kr=Z$e(),ta=w(kr);T(ta,()=>id,(Cr,Ss)=>{Ss(Cr,{class:"w-full",children:(ua,Bi)=>{var Bn=le();oe(zn=>ae(Bn,zn),[()=>P.find(zn=>zn.value===d(i))?.label||"Select type"]),g(ua,Bn)},$$slots:{default:!0}})});var Ko=Z(ta,2);T(Ko,()=>nd,(Cr,Ss)=>{Ss(Cr,{children:(ua,Bi)=>{var Bn=pe(),zn=w(Bn);Mi(zn,17,()=>P,or,(ms,Fs)=>{var He=pe(),Ut=w(He);T(Ut,()=>Bo,(kn,En)=>{En(kn,{get value(){return d(Fs).value},children:(Wn,mn)=>{var Xn=le();oe(()=>ae(Xn,d(Fs).label)),g(Wn,Xn)},$$slots:{default:!0}})}),g(ms,He)}),g(ua,Bn)},$$slots:{default:!0}})}),g(hs,kr)},$$slots:{default:!0}})});var Ot=Z(xn,2),vn=k(Ot);Ns(vn,{for:"feedback-subject",children:(ai,Rs)=>{var hs=x$e();g(ai,hs)},$$slots:{default:!0}});var Me=Z(vn,2);Gr(Me,{id:"feedback-subject",type:"text",placeholder:"Brief summary of your feedback",maxlength:100,get value(){return d(s)},set value(ai){b(s,ai,!0)}});var St=Z(Ot,2),dn=k(St);Ns(dn,{for:"feedback-description",children:(ai,Rs)=>{var hs=W$e();g(ai,hs)},$$slots:{default:!0}});var un=Z(dn,2);WI(un,{id:"feedback-description",placeholder:"Please describe your feedback in detail...",rows:6,required:!0,get value(){return d(r)},set value(ai){b(r,ai,!0)}});var Dn=Z(un,2),Vn=k(Dn),$n=Z(Vn);{var ti=ai=>{var Rs=le("- Please include steps to reproduce the issue");g(ai,Rs)};O($n,ai=>{d(i)==="bug"&&ai(ti)})}var Tn=Z(St,2),Wi=Z(k(Tn),4),qn=k(Wi);Rc(qn,{id:"consent-system",get checked(){return d(a)},set checked(ai){b(a,ai,!0)}});var tn=Z(qn,2),ei=k(tn);Ns(ei,{for:"consent-system",class:"cursor-pointer",children:(ai,Rs)=>{var hs=le("System information");g(ai,hs)},$$slots:{default:!0}});var us=Z(Wi,2),$i=k(us);Rc($i,{id:"consent-js-errors",get checked(){return d(o)},set checked(ai){b(o,ai,!0)}});var ye=Z($i,2),Ge=k(ye);Ns(Ge,{for:"consent-js-errors",class:"cursor-pointer",children:(ai,Rs)=>{var hs=le();oe(()=>ae(hs,`Recent JS errors (${d(I).length??""})`)),g(ai,hs)},$$slots:{default:!0}});var Ce=Z(us,2),Re=k(Ce);Rc(Re,{id:"consent-network-errors",get checked(){return d(c)},set checked(ai){b(c,ai,!0)}});var je=Z(Re,2),$e=k(je);Ns($e,{for:"consent-network-errors",class:"cursor-pointer",children:(ai,Rs)=>{var hs=le();oe(()=>ae(hs,`Network & database errors (${d(x).length??""})`)),g(ai,hs)},$$slots:{default:!0}});var Oe=Z(Ce,2);{var xt=ai=>{var Rs=C$e(),hs=k(Rs);Rc(hs,{id:"consent-native-logs",get checked(){return d(l)},set checked(Cr){b(l,Cr,!0)}});var Vs=Z(hs,2),kr=k(Vs);Ns(kr,{for:"consent-native-logs",class:"cursor-pointer",children:(Cr,Ss)=>{var ua=S$e(),Bi=Z(w(ua));{var Bn=zn=>{var ms=V$e();g(zn,ms)};O(Bi,zn=>{d(W)&&zn(Bn)})}g(Cr,ua)},$$slots:{default:!0}});var ta=Z(kr,4);{var Ko=Cr=>{var Ss=G$e(),ua=Te(Ss,!0);oe(()=>ae(ua,d(Y))),g(Cr,Ss)};O(ta,Cr=>{d(Y)&&Cr(Ko)})}g(ai,Rs)};O(Oe,ai=>{E&&ai(xt)})}var yn=Z(Tn,2),gt=k(yn),en=Z(k(gt),2),Cn=k(en),Pn=Te(Cn,!0),Dt=Z(Cn,2);{var ci=ai=>{H0(ai,{class:"h-3 w-3"})},et=ai=>{ufe(ai,{class:"h-3 w-3"})};O(Dt,ai=>{d(A)?ai(ci):ai(et,-1)})}var ht=Z(yn,2),mi=Z(k(ht),2);{var As=ai=>{var Rs=N$e(),hs=k(Rs),Vs=Te(hs,!0);oe(()=>ae(Vs,d(U))),g(ai,Rs)};O(mi,ai=>{d(u)&&ai(As)})}var gs=Z(ht,2);{var er=ai=>{var Rs=pe(),hs=w(Rs);T(hs,()=>Hd,(Vs,kr)=>{kr(Vs,{variant:"destructive",children:(ta,Ko)=>{var Cr=pe(),Ss=w(Cr);T(Ss,()=>jd,(ua,Bi)=>{Bi(ua,{children:(Bn,zn)=>{var ms=le();oe(()=>ae(ms,d(m))),g(Bn,ms)},$$slots:{default:!0}})}),g(ta,Cr)},$$slots:{default:!0}})}),g(ai,Rs)};O(gs,ai=>{d(m)&&ai(er)})}oe(()=>{ae(Vn,`${d(r).length??""}/2000 characters `),ae(Pn,f)}),ed("submit",tt,ai=>{ai.preventDefault(),j()}),Xe("click",en,_),ed("toggle",ht,ai=>b(u,ai.currentTarget.open,!0)),g(nn,tt)};O(qe,nn=>{d(p)?nn(ot):nn(It,-1)})}var Zt=Z(Ne,2);{var Rn=nn=>{var tt=pe(),xn=w(tt);T(xn,()=>ad,(Wt,Gn)=>{Gn(Wt,{class:"flex-col gap-2 sm:flex-row sm:justify-between",children:(Ot,vn)=>{var Me=Y$e(),St=w(Me);rt(St,{variant:"outline",onclick:D,get disabled(){return d(h)},children:(Vn,$n)=>{var ti=le("Download Preview");g(Vn,ti)},$$slots:{default:!0}});var dn=Z(St,2),un=k(dn);rt(un,{variant:"ghost",get onclick(){return n()},get disabled(){return d(h)},children:(Vn,$n)=>{var ti=le("Cancel");g(Vn,ti)},$$slots:{default:!0}});var Dn=Z(un,2);rt(Dn,{onclick:j,get disabled(){return d(h)},children:(Vn,$n)=>{var ti=le();oe(()=>ae(ti,d(h)?"Sending...":"Send Feedback")),g(Vn,ti)},$$slots:{default:!0}}),g(Ot,Me)},$$slots:{default:!0}})}),g(nn,tt)};O(Zt,nn=>{d(p)||nn(Rn)})}g(ge,fe)},$$slots:{default:!0}})}),g(ue,ce)},$$slots:{default:!0}})}),g(t,te),ct()}Eh(["click"]);var M$e=R('<span class="block mt-1">Messages already carrying this keyword will show the name and color you pick.</span>'),v$e=R('Keyword: <code class="rounded bg-muted px-1.5 py-0.5 text-sm"> </code> <!>',1),Lne=R("<!> <!>",1),B$e=R('<button type="button"></button>'),X$e=R('<!> <div class="grid gap-4 py-4"><div class="grid gap-2"><!> <!></div> <div class="grid gap-2"><!> <div class="label-color-section svelte-7dsic9"><div class="label-color-palette svelte-7dsic9"></div> <div class="label-custom-color svelte-7dsic9"><span class="text-sm text-muted-foreground font-medium">Custom:</span> <input type="color" class="label-color-input svelte-7dsic9"/> <!></div></div></div> <!></div> <!>',1);function hfe(t,e){lt(e,!0);let n=We(e,"visible",11,!1),i=We(e,"mode",3,"create"),s=We(e,"name",15,""),r=We(e,"color",15,""),a=We(e,"keyword",3,""),o=We(e,"palette",3,AG),l=We(e,"error",3,""),c=We(e,"saving",3,!1),u=We(e,"showClose",3,!1),h=We(e,"onClose",3,()=>{}),m=We(e,"onSave",3,()=>{}),p=We(e,"onClearError",3,()=>{});const A=q(()=>i()==="edit"?"Edit label":i()==="adopt"?"Add label to settings":"New label"),f=x=>{x||h()()};var y=pe(),I=w(y);T(I,()=>sd,(x,V)=>{V(x,{get open(){return n()},onOpenChange:f,children:(W,Y)=>{var E=pe(),C=w(E);T(C,()=>ld,(G,N)=>{N(G,{class:"sm:max-w-md",get showCloseButton(){return u()},children:(B,F)=>{var H=X$e(),U=w(H);T(U,()=>od,(ge,Ye)=>{Ye(ge,{children:(fe,Be)=>{var Ne=Lne(),qe=w(Ne);T(qe,()=>rd,(Zt,Rn)=>{Rn(Zt,{children:(nn,tt)=>{var xn=le();oe(()=>ae(xn,d(A))),g(nn,xn)},$$slots:{default:!0}})});var ot=Z(qe,2);{var It=Zt=>{var Rn=pe(),nn=w(Rn);T(nn,()=>iW,(tt,xn)=>{xn(tt,{children:(Wt,Gn)=>{var Ot=v$e(),vn=Z(w(Ot)),Me=Te(vn,!0),St=Z(vn,2);{var dn=un=>{var Dn=M$e();g(un,Dn)};O(St,un=>{i()==="adopt"&&un(dn)})}oe(()=>ae(Me,a())),g(Wt,Ot)},$$slots:{default:!0}})}),g(Zt,Rn)};O(ot,Zt=>{(i()==="edit"||i()==="adopt")&&Zt(It)})}g(fe,Ne)},$$slots:{default:!0}})});var _=Z(U,2),j=k(_),D=k(j);Ns(D,{for:"label-name",children:(ge,Ye)=>{var fe=le("Name");g(ge,fe)},$$slots:{default:!0}});var P=Z(D,2);Gr(P,{id:"label-name",type:"text",placeholder:"Label name",get oninput(){return p()},get value(){return s()},set value(ge){s(ge)}});var te=Z(j,2),ne=k(te);Ns(ne,{children:(ge,Ye)=>{var fe=le("Color");g(ge,fe)},$$slots:{default:!0}});var z=Z(ne,2),ie=k(z);Mi(ie,21,o,or,(ge,Ye)=>{var fe=B$e();let Be;oe(()=>{Be=_i(fe,1,"label-color-swatch svelte-7dsic9",null,Be,{active:r()===d(Ye)}),go(fe,`background:${d(Ye)}`),bi(fe,"title",d(Ye))}),Xe("click",fe,()=>{r(d(Ye)),p()()}),g(ge,fe)});var ue=Z(ie,2),be=Z(k(ue),2),ce=Z(be,2);Gr(ce,{type:"text",get oninput(){return p()},placeholder:"#000000",maxlength:7,class:"font-mono flex-1",get value(){return r()},set value(ge){r(ge)}});var ke=Z(te,2);{var J=ge=>{var Ye=pe(),fe=w(Ye);T(fe,()=>Hd,(Be,Ne)=>{Ne(Be,{variant:"destructive",children:(qe,ot)=>{var It=pe(),Zt=w(It);T(Zt,()=>jd,(Rn,nn)=>{nn(Rn,{children:(tt,xn)=>{var Wt=le();oe(()=>ae(Wt,l())),g(tt,Wt)},$$slots:{default:!0}})}),g(qe,It)},$$slots:{default:!0}})}),g(ge,Ye)};O(ke,ge=>{l()&&ge(J)})}var Ee=Z(_,2);T(Ee,()=>ad,(ge,Ye)=>{Ye(ge,{children:(fe,Be)=>{var Ne=Lne(),qe=w(Ne);rt(qe,{variant:"ghost",get onclick(){return h()},children:(It,Zt)=>{var Rn=le("Cancel");g(It,Rn)},$$slots:{default:!0}});var ot=Z(qe,2);rt(ot,{get onclick(){return m()},get disabled(){return c()},children:(It,Zt)=>{var Rn=le();oe(()=>ae(Rn,c()?"Saving...":"Save")),g(It,Rn)},$$slots:{default:!0}}),g(fe,Ne)},$$slots:{default:!0}})}),Xe("input",be,function(...ge){p()?.apply(this,ge)}),ab(be,r),g(B,H)},$$slots:{default:!0}})}),g(W,E)},$$slots:{default:!0}})}),g(t,y),ct()}Eh(["click","input"]);var R$e=new Set(["$$slots","$$events","$$legacy"]);function F$e(t,e){lt(e,!0);/**
2025
+ will be transmitted.</p> <div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">App version, browser, OS, viewport, storage usage.</p></div></div> <div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">Last 50 unhandled errors and rejections from this session.</p></div></div> <div class="flex items-start gap-3"><!> <div class="grid gap-1"><!> <p class="text-xs text-muted-foreground">Failed API calls and IndexedDB operations from this session.</p></div></div> <!></div> <div class="rounded-md border bg-muted/30 p-3"><div class="flex items-center justify-between gap-2"><span class="text-xs text-muted-foreground">Reference (for support)</span> <button type="button" class="hover:text-foreground text-xs text-muted-foreground inline-flex items-center gap-1" title="Copy reference"><code class="font-mono text-foreground"> </code> <!></button></div></div> <details class="rounded-md border p-3"><summary class="cursor-pointer text-sm font-medium">Preview what will be sent</summary> <!></details> <!></form>`),Y$e=R('<!> <div class="flex gap-2"><!> <!></div>',1),E$e=R('<!> <div class="py-4"><!></div> <!>',1);function k$e(t,e){lt(e,!0);let n=We(e,"onClose",3,()=>{}),i=$("bug"),s=$(""),r=$(""),a=$(!1),o=$(!1),l=$(!1),c=$(!1),u=$(!1),h=$(!1),m=$(""),p=$(!1),A=$(!1);const f=A$e();let y=$(br({})),I=$(br([])),x=$(br([])),V=$(""),W=$(!1),Y=$("");const E=Na;Hr(()=>{C(),G(),N()}),Hr(()=>{d(l)&&Na&&!d(V)&&!d(W)&&(b(W,!0),b(Y,""),Uhe(65536).then(z=>{b(V,z||"(log file is empty)",!0)}).catch(z=>{b(Y,z instanceof Error?z.message:String(z),!0)}).finally(()=>{b(W,!1)}))});function C(){const z=Se.get("email")||"unknown",ie={userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,screenResolution:`${window.screen.width}x${window.screen.height}`,viewportSize:`${window.innerWidth}x${window.innerHeight}`,online:Cu(),appVersion:"0.14.25",activeEmail:z};navigator.serviceWorker?.controller?ie.serviceWorker={active:!0,scope:navigator.serviceWorker.controller.scriptURL}:ie.serviceWorker={active:!1},b(y,ie,!0),navigator.storage?.estimate&&navigator.storage.estimate().then(ue=>{const be=ue.usage??0,ce=ue.quota??0;b(y,{...d(y),storageQuota:{usage:be,quota:ce,percentUsed:ce>0?(be/ce*100).toFixed(2):"0"}},!0)})}function G(){try{const z=sessionStorage.getItem("app_logs");z&&b(I,JSON.parse(z).slice(-50),!0)}catch{b(I,[],!0)}}function N(){try{const z=sessionStorage.getItem("api_errors"),ie=sessionStorage.getItem("db_errors"),ue=z?JSON.parse(z):[],be=ie?JSON.parse(ie):[];b(x,[...ue.slice(-20),...be.slice(-10)],!0)}catch{b(x,[],!0)}}const B=q(()=>({systemInfo:d(a),jsErrors:d(o),nativeLogs:d(l),networkErrors:d(c)})),F=q(()=>({systemInfo:d(y),jsErrors:d(I),nativeLogs:d(V),networkErrors:d(x)})),H=q(()=>g$e({type:d(i),subject:d(s),description:d(r),correlationId:f,consents:d(B),sources:d(F)})),U=q(()=>JSON.stringify(d(H),null,2));async function _(){try{await navigator.clipboard.writeText(f),b(A,!0),setTimeout(()=>b(A,!1),2e3)}catch{}}async function j(){if(!d(r).trim()){b(m,"Please provide a description");return}b(h,!0),b(m,"");try{const z=d(H),ie=f$e(z,d(s)),ue=y$e(z),be=Se.get("alias_auth")||"",ke=(be.includes(":")?be.split(":")[0]:be)||Se.get("email")||"webmail-feedback@forwardemail.net";await Ms.request("Emails",{from:ke,to:["support@forwardemail.net"],subject:ie,text:ue,has_attachment:!1},{method:"POST"}),b(p,!0),setTimeout(n(),5e3)}catch(z){Xl(z)||(console.error("Failed to submit feedback:",z),b(m,z.message||"Failed to submit feedback. Please try again.",!0))}finally{b(h,!1)}}function D(){yE(d(U),`webmail-feedback-${f}.json`,"application/json")}const P=[{value:"bug",label:"Bug Report"},{value:"feature",label:"Feature Request"},{value:"question",label:"Question"},{value:"other",label:"Other"}];var te=pe(),ne=w(te);T(ne,()=>sd,(z,ie)=>{ie(z,{open:!0,onOpenChange:ue=>!ue&&n()(),children:(ue,be)=>{var ce=pe(),ke=w(ce);T(ke,()=>ld,(J,Ee)=>{Ee(J,{class:"sm:max-w-lg",children:(ge,Ye)=>{var fe=E$e(),Be=w(fe);T(Be,()=>od,(nn,tt)=>{tt(nn,{children:(xn,Wt)=>{var Gn=pe(),Ot=w(Gn);T(Ot,()=>rd,(vn,Me)=>{Me(vn,{children:(St,dn)=>{var un=le("Send Feedback");g(St,un)},$$slots:{default:!0}})}),g(xn,Gn)},$$slots:{default:!0}})});var Ne=Z(Be,2),qe=k(Ne);{var ot=nn=>{var tt=I$e(),xn=k(tt),Wt=k(xn);H0(Wt,{class:"h-6 w-6"});var Gn=Z(xn,4),Ot=Z(k(Gn)),vn=Te(Ot,!0);oe(()=>ae(vn,f)),g(nn,tt)},It=nn=>{var tt=w$e(),xn=k(tt),Wt=k(xn);Ns(Wt,{for:"feedback-type",children:(ai,Rs)=>{var hs=le("What kind of feedback?");g(ai,hs)},$$slots:{default:!0}});var Gn=Z(Wt,2);T(Gn,()=>td,(ai,Rs)=>{Rs(ai,{type:"single",name:"feedback-type",get value(){return d(i)},set value(hs){b(i,hs,!0)},children:(hs,Vs)=>{var kr=Z$e(),ta=w(kr);T(ta,()=>id,(Cr,Ss)=>{Ss(Cr,{class:"w-full",children:(ua,Bi)=>{var Bn=le();oe(zn=>ae(Bn,zn),[()=>P.find(zn=>zn.value===d(i))?.label||"Select type"]),g(ua,Bn)},$$slots:{default:!0}})});var Ko=Z(ta,2);T(Ko,()=>nd,(Cr,Ss)=>{Ss(Cr,{children:(ua,Bi)=>{var Bn=pe(),zn=w(Bn);Mi(zn,17,()=>P,or,(ms,Fs)=>{var He=pe(),Ut=w(He);T(Ut,()=>Bo,(kn,En)=>{En(kn,{get value(){return d(Fs).value},children:(Wn,mn)=>{var Xn=le();oe(()=>ae(Xn,d(Fs).label)),g(Wn,Xn)},$$slots:{default:!0}})}),g(ms,He)}),g(ua,Bn)},$$slots:{default:!0}})}),g(hs,kr)},$$slots:{default:!0}})});var Ot=Z(xn,2),vn=k(Ot);Ns(vn,{for:"feedback-subject",children:(ai,Rs)=>{var hs=x$e();g(ai,hs)},$$slots:{default:!0}});var Me=Z(vn,2);Gr(Me,{id:"feedback-subject",type:"text",placeholder:"Brief summary of your feedback",maxlength:100,get value(){return d(s)},set value(ai){b(s,ai,!0)}});var St=Z(Ot,2),dn=k(St);Ns(dn,{for:"feedback-description",children:(ai,Rs)=>{var hs=W$e();g(ai,hs)},$$slots:{default:!0}});var un=Z(dn,2);WI(un,{id:"feedback-description",placeholder:"Please describe your feedback in detail...",rows:6,required:!0,get value(){return d(r)},set value(ai){b(r,ai,!0)}});var Dn=Z(un,2),Vn=k(Dn),$n=Z(Vn);{var ti=ai=>{var Rs=le("- Please include steps to reproduce the issue");g(ai,Rs)};O($n,ai=>{d(i)==="bug"&&ai(ti)})}var Tn=Z(St,2),Wi=Z(k(Tn),4),qn=k(Wi);Rc(qn,{id:"consent-system",get checked(){return d(a)},set checked(ai){b(a,ai,!0)}});var tn=Z(qn,2),ei=k(tn);Ns(ei,{for:"consent-system",class:"cursor-pointer",children:(ai,Rs)=>{var hs=le("System information");g(ai,hs)},$$slots:{default:!0}});var us=Z(Wi,2),$i=k(us);Rc($i,{id:"consent-js-errors",get checked(){return d(o)},set checked(ai){b(o,ai,!0)}});var ye=Z($i,2),Ge=k(ye);Ns(Ge,{for:"consent-js-errors",class:"cursor-pointer",children:(ai,Rs)=>{var hs=le();oe(()=>ae(hs,`Recent JS errors (${d(I).length??""})`)),g(ai,hs)},$$slots:{default:!0}});var Ce=Z(us,2),Re=k(Ce);Rc(Re,{id:"consent-network-errors",get checked(){return d(c)},set checked(ai){b(c,ai,!0)}});var je=Z(Re,2),$e=k(je);Ns($e,{for:"consent-network-errors",class:"cursor-pointer",children:(ai,Rs)=>{var hs=le();oe(()=>ae(hs,`Network & database errors (${d(x).length??""})`)),g(ai,hs)},$$slots:{default:!0}});var Oe=Z(Ce,2);{var xt=ai=>{var Rs=C$e(),hs=k(Rs);Rc(hs,{id:"consent-native-logs",get checked(){return d(l)},set checked(Cr){b(l,Cr,!0)}});var Vs=Z(hs,2),kr=k(Vs);Ns(kr,{for:"consent-native-logs",class:"cursor-pointer",children:(Cr,Ss)=>{var ua=S$e(),Bi=Z(w(ua));{var Bn=zn=>{var ms=V$e();g(zn,ms)};O(Bi,zn=>{d(W)&&zn(Bn)})}g(Cr,ua)},$$slots:{default:!0}});var ta=Z(kr,4);{var Ko=Cr=>{var Ss=G$e(),ua=Te(Ss,!0);oe(()=>ae(ua,d(Y))),g(Cr,Ss)};O(ta,Cr=>{d(Y)&&Cr(Ko)})}g(ai,Rs)};O(Oe,ai=>{E&&ai(xt)})}var yn=Z(Tn,2),gt=k(yn),en=Z(k(gt),2),Cn=k(en),Pn=Te(Cn,!0),Dt=Z(Cn,2);{var ci=ai=>{H0(ai,{class:"h-3 w-3"})},et=ai=>{ufe(ai,{class:"h-3 w-3"})};O(Dt,ai=>{d(A)?ai(ci):ai(et,-1)})}var ht=Z(yn,2),mi=Z(k(ht),2);{var As=ai=>{var Rs=N$e(),hs=k(Rs),Vs=Te(hs,!0);oe(()=>ae(Vs,d(U))),g(ai,Rs)};O(mi,ai=>{d(u)&&ai(As)})}var gs=Z(ht,2);{var er=ai=>{var Rs=pe(),hs=w(Rs);T(hs,()=>Hd,(Vs,kr)=>{kr(Vs,{variant:"destructive",children:(ta,Ko)=>{var Cr=pe(),Ss=w(Cr);T(Ss,()=>jd,(ua,Bi)=>{Bi(ua,{children:(Bn,zn)=>{var ms=le();oe(()=>ae(ms,d(m))),g(Bn,ms)},$$slots:{default:!0}})}),g(ta,Cr)},$$slots:{default:!0}})}),g(ai,Rs)};O(gs,ai=>{d(m)&&ai(er)})}oe(()=>{ae(Vn,`${d(r).length??""}/2000 characters `),ae(Pn,f)}),ed("submit",tt,ai=>{ai.preventDefault(),j()}),Xe("click",en,_),ed("toggle",ht,ai=>b(u,ai.currentTarget.open,!0)),g(nn,tt)};O(qe,nn=>{d(p)?nn(ot):nn(It,-1)})}var Zt=Z(Ne,2);{var Rn=nn=>{var tt=pe(),xn=w(tt);T(xn,()=>ad,(Wt,Gn)=>{Gn(Wt,{class:"flex-col gap-2 sm:flex-row sm:justify-between",children:(Ot,vn)=>{var Me=Y$e(),St=w(Me);rt(St,{variant:"outline",onclick:D,get disabled(){return d(h)},children:(Vn,$n)=>{var ti=le("Download Preview");g(Vn,ti)},$$slots:{default:!0}});var dn=Z(St,2),un=k(dn);rt(un,{variant:"ghost",get onclick(){return n()},get disabled(){return d(h)},children:(Vn,$n)=>{var ti=le("Cancel");g(Vn,ti)},$$slots:{default:!0}});var Dn=Z(un,2);rt(Dn,{onclick:j,get disabled(){return d(h)},children:(Vn,$n)=>{var ti=le();oe(()=>ae(ti,d(h)?"Sending...":"Send Feedback")),g(Vn,ti)},$$slots:{default:!0}}),g(Ot,Me)},$$slots:{default:!0}})}),g(nn,tt)};O(Zt,nn=>{d(p)||nn(Rn)})}g(ge,fe)},$$slots:{default:!0}})}),g(ue,ce)},$$slots:{default:!0}})}),g(t,te),ct()}Eh(["click"]);var M$e=R('<span class="block mt-1">Messages already carrying this keyword will show the name and color you pick.</span>'),v$e=R('Keyword: <code class="rounded bg-muted px-1.5 py-0.5 text-sm"> </code> <!>',1),Lne=R("<!> <!>",1),B$e=R('<button type="button"></button>'),X$e=R('<!> <div class="grid gap-4 py-4"><div class="grid gap-2"><!> <!></div> <div class="grid gap-2"><!> <div class="label-color-section svelte-7dsic9"><div class="label-color-palette svelte-7dsic9"></div> <div class="label-custom-color svelte-7dsic9"><span class="text-sm text-muted-foreground font-medium">Custom:</span> <input type="color" class="label-color-input svelte-7dsic9"/> <!></div></div></div> <!></div> <!>',1);function hfe(t,e){lt(e,!0);let n=We(e,"visible",11,!1),i=We(e,"mode",3,"create"),s=We(e,"name",15,""),r=We(e,"color",15,""),a=We(e,"keyword",3,""),o=We(e,"palette",3,AG),l=We(e,"error",3,""),c=We(e,"saving",3,!1),u=We(e,"showClose",3,!1),h=We(e,"onClose",3,()=>{}),m=We(e,"onSave",3,()=>{}),p=We(e,"onClearError",3,()=>{});const A=q(()=>i()==="edit"?"Edit label":i()==="adopt"?"Add label to settings":"New label"),f=x=>{x||h()()};var y=pe(),I=w(y);T(I,()=>sd,(x,V)=>{V(x,{get open(){return n()},onOpenChange:f,children:(W,Y)=>{var E=pe(),C=w(E);T(C,()=>ld,(G,N)=>{N(G,{class:"sm:max-w-md",get showCloseButton(){return u()},children:(B,F)=>{var H=X$e(),U=w(H);T(U,()=>od,(ge,Ye)=>{Ye(ge,{children:(fe,Be)=>{var Ne=Lne(),qe=w(Ne);T(qe,()=>rd,(Zt,Rn)=>{Rn(Zt,{children:(nn,tt)=>{var xn=le();oe(()=>ae(xn,d(A))),g(nn,xn)},$$slots:{default:!0}})});var ot=Z(qe,2);{var It=Zt=>{var Rn=pe(),nn=w(Rn);T(nn,()=>iW,(tt,xn)=>{xn(tt,{children:(Wt,Gn)=>{var Ot=v$e(),vn=Z(w(Ot)),Me=Te(vn,!0),St=Z(vn,2);{var dn=un=>{var Dn=M$e();g(un,Dn)};O(St,un=>{i()==="adopt"&&un(dn)})}oe(()=>ae(Me,a())),g(Wt,Ot)},$$slots:{default:!0}})}),g(Zt,Rn)};O(ot,Zt=>{(i()==="edit"||i()==="adopt")&&Zt(It)})}g(fe,Ne)},$$slots:{default:!0}})});var _=Z(U,2),j=k(_),D=k(j);Ns(D,{for:"label-name",children:(ge,Ye)=>{var fe=le("Name");g(ge,fe)},$$slots:{default:!0}});var P=Z(D,2);Gr(P,{id:"label-name",type:"text",placeholder:"Label name",get oninput(){return p()},get value(){return s()},set value(ge){s(ge)}});var te=Z(j,2),ne=k(te);Ns(ne,{children:(ge,Ye)=>{var fe=le("Color");g(ge,fe)},$$slots:{default:!0}});var z=Z(ne,2),ie=k(z);Mi(ie,21,o,or,(ge,Ye)=>{var fe=B$e();let Be;oe(()=>{Be=_i(fe,1,"label-color-swatch svelte-7dsic9",null,Be,{active:r()===d(Ye)}),go(fe,`background:${d(Ye)}`),bi(fe,"title",d(Ye))}),Xe("click",fe,()=>{r(d(Ye)),p()()}),g(ge,fe)});var ue=Z(ie,2),be=Z(k(ue),2),ce=Z(be,2);Gr(ce,{type:"text",get oninput(){return p()},placeholder:"#000000",maxlength:7,class:"font-mono flex-1",get value(){return r()},set value(ge){r(ge)}});var ke=Z(te,2);{var J=ge=>{var Ye=pe(),fe=w(Ye);T(fe,()=>Hd,(Be,Ne)=>{Ne(Be,{variant:"destructive",children:(qe,ot)=>{var It=pe(),Zt=w(It);T(Zt,()=>jd,(Rn,nn)=>{nn(Rn,{children:(tt,xn)=>{var Wt=le();oe(()=>ae(Wt,l())),g(tt,Wt)},$$slots:{default:!0}})}),g(qe,It)},$$slots:{default:!0}})}),g(ge,Ye)};O(ke,ge=>{l()&&ge(J)})}var Ee=Z(_,2);T(Ee,()=>ad,(ge,Ye)=>{Ye(ge,{children:(fe,Be)=>{var Ne=Lne(),qe=w(Ne);rt(qe,{variant:"ghost",get onclick(){return h()},children:(It,Zt)=>{var Rn=le("Cancel");g(It,Rn)},$$slots:{default:!0}});var ot=Z(qe,2);rt(ot,{get onclick(){return m()},get disabled(){return c()},children:(It,Zt)=>{var Rn=le();oe(()=>ae(Rn,c()?"Saving...":"Save")),g(It,Rn)},$$slots:{default:!0}}),g(fe,Ne)},$$slots:{default:!0}})}),Xe("input",be,function(...ge){p()?.apply(this,ge)}),ab(be,r),g(B,H)},$$slots:{default:!0}})}),g(W,E)},$$slots:{default:!0}})}),g(t,y),ct()}Eh(["click","input"]);var R$e=new Set(["$$slots","$$events","$$legacy"]);function F$e(t,e){lt(e,!0);/**
2026
2026
  * @license @lucide/svelte v0.577.0 - ISC
2027
2027
  *
2028
2028
  * ISC License
@@ -2348,7 +2348,7 @@ Forward Email`,class:"min-h-[120px] font-mono text-sm"})};O(C,B=>{d(a)==="rich"?
2348
2348
  text. Links and image alt text are preserved.</p>`,1),Pet=R('<div class="flex gap-2"><!> <!> <!></div> <p class="text-sm text-muted-foreground">Choosing <strong>Report spam</strong> </p>',1),_et=R('<div class="space-y-2"><!> <!></div> <div class="space-y-2"><!> <!></div> <div class="space-y-2"><!> <!></div> <div class="space-y-2"><!> <!></div> <div class="space-y-2"><!> <!></div> <p class="text-sm text-muted-foreground">Leave as "Auto-detect" to automatically find folders by standard names.</p>',1),$et=R('<div class="text-xs text-muted-foreground"> </div>'),qet=R('<div class="flex items-center justify-between border border-border p-2"><div class="min-w-0"><div class="truncate font-medium"> </div> <!></div> <!></div>'),ett=R('<p class="text-sm text-muted-foreground">No custom folders.</p>'),ttt=R('<p class="text-sm text-muted-foreground">Loading labels...</p>'),ntt=R('<div class="flex items-center justify-between border border-border p-2"><div class="flex items-center gap-3"><div class="h-4 w-4"></div> <div><div class="font-medium"> </div> <div class="text-xs text-muted-foreground">Keyword: <code class="bg-muted px-1"> </code></div></div></div> <div class="flex gap-1"><!> <!></div></div>'),itt=R('<p class="text-sm text-muted-foreground">No labels yet.</p>'),stt=R('<div class="flex items-center justify-between border border-dashed border-border p-2"><div class="flex items-center gap-3"><div class="h-4 w-4"></div> <div><div class="font-medium"> </div> <div class="text-xs text-muted-foreground">Keyword: <code class="bg-muted px-1"> </code></div></div></div> <div class="flex gap-1"><!> <!></div></div>'),rtt=R(`<div class="space-y-2 pt-2"><div class="flex items-center justify-between"><div><span class="text-sm text-muted-foreground">Found in mail</span> <p class="text-xs text-muted-foreground">Keywords on your messages that are not in your labels yet, set by another
2349
2349
  client, a filter, or the API. Add one to give it a name and color here.</p></div> <!></div> <!></div>`),att=R('<div class="flex items-center justify-between"><span class="text-sm text-muted-foreground">Your labels</span> <!></div> <div class="space-y-2"><!></div> <!>',1),ott=R("<!> <!> <!>",1),ltt=R('<label class="flex items-center gap-3"><!> <span>Start week on Sunday</span></label> <p class="text-sm text-muted-foreground">When enabled, week and month views begin on Sunday. Otherwise they begin on Monday.</p>',1),ctt=R(`<label class="flex items-center gap-3"><!> <span>Hide completed todos</span></label> <p class="text-sm text-muted-foreground">Completed tasks will be hidden from the calendar view. You can still find them via the
2350
2350
  calendar event details.</p>`,1),dtt=R('<label class="flex items-center gap-3"><!> <span>Index message bodies</span></label> <p class="text-sm text-muted-foreground">When enabled, message content is indexed for full-text search.</p> <div class="bg-muted p-3 text-sm"><div> </div> <div> </div></div> <div class="flex gap-2"><!> <!></div>',1),utt=R("<!> Healthy",1),eie=R("<!> ",1),tie=R("<div> </div>"),htt=R('<div><div><!></div> <div class="mt-2 text-sm text-muted-foreground"><div> </div> <div> </div> <!> <!></div></div> <div class="flex gap-2"><!> <!></div>',1),mtt=R('<div class="flex items-center justify-between border border-border p-2"><div><div class="font-medium"> </div> <div class="text-xs text-muted-foreground"> </div></div> <!></div>'),ptt=R('<div class="space-y-2"></div>'),Att=R('<p class="text-sm text-muted-foreground">No saved searches yet.</p>'),gtt=R('<div class="space-y-3"><div class="space-y-2"><!> <!></div> <div class="space-y-2"><!> <!></div> <div class="flex gap-2"><!> <!></div></div> <!>',1),btt=R('<div class="flex items-center justify-between"><!> <!></div> <!>',1),ftt=R('<div class="border border-border bg-muted/50 p-2"><code class="rounded bg-muted px-1 text-sm"> </code> <div class="mt-1 text-xs text-muted-foreground"> </div></div>'),ytt=R('<div class="grid grid-cols-1 gap-2 sm:grid-cols-2"></div>'),Itt=R("<div><strong>Database Version:</strong> </div> <div><strong>Total Records:</strong> </div> <div><strong>Queued Actions:</strong> </div>",1),Ztt=R('<div class="space-y-2 text-sm"><div><strong>Used:</strong> </div> <div><strong>Available:</strong> </div></div> <div class="h-2 w-full overflow-hidden bg-secondary"><div class="h-full bg-primary transition-all"></div></div> <!>',1),xtt=R('<p class="text-sm text-muted-foreground">Storage information unavailable</p>'),Wtt=R('<p class="text-sm text-muted-foreground">Loading statistics...</p>'),Vtt=R('<div class="space-y-2 text-sm"><div><strong>Cache Usage:</strong> </div></div> <div class="h-2 w-full overflow-hidden bg-secondary"><div class="h-full bg-primary transition-all"></div></div>',1),Stt=R('<p class="text-sm text-muted-foreground">Unable to load cache information</p>'),Gtt=R('<label class="flex items-center gap-3"><!> <span>Enable performance logs</span></label> <p class="mt-2 text-sm text-muted-foreground">When enabled, console shows [perf] entries for request and message load stages.</p>',1),Ctt=R(`<div><!> <p class="mt-1 text-xs text-muted-foreground">Clears cached app files and reloads. You'll stay logged in.</p></div> <div><!> <p class="mt-1 text-xs text-muted-foreground"><strong>WARNING:</strong> Clears all local data and logs you out.</p></div>`,1),nie=R("<!> <!> <!> <!> <!>",1),Ntt=R("<div><!> <!></div> <!>",1),wtt=R('<div class="flex items-center gap-2"><code class="animate-pulse bg-muted px-2 py-1 text-sm">Press a key… (Esc to cancel)</code> <!></div>'),Ytt=R('<div class="flex items-center gap-2"><code class="bg-muted px-2 py-1 text-sm"> </code> <!></div>'),Ett=R('<div class="grid grid-cols-[1fr_auto] items-center gap-4 border-b border-border p-3 last:border-b-0"><span> </span> <!></div>'),ktt=R('<div class="max-h-[600px] overflow-y-auto border border-border"><div class="sticky top-0 grid grid-cols-[1fr_auto] gap-4 border-b border-border bg-muted p-3 font-semibold"><span>Action</span> <span>Shortcut</span></div> <!></div>'),Mtt=R('<div class="text-sm text-muted-foreground">Loading latest release…</div>'),vtt=R("<!> View all downloads on GitHub",1),Btt=R(`<div class="space-y-2 text-sm"><div class="text-muted-foreground">Couldn't auto-detect the latest release.</div> <!></div>`),Xtt=R('<!> <div class="text-xs text-muted-foreground"> <!> </div>',1),Rtt=R(`<div class="text-sm text-muted-foreground">We couldn't pick an installer for your platform automatically. Use the options
2351
- below.</div>`),Ftt=R('<p class="text-xs text-muted-foreground">Open the DMG and drag Forward Email to your Applications folder.</p>'),Ttt=R('<p class="text-xs text-muted-foreground">Run the installer and follow the prompts. Windows may ask you to confirm.</p>'),Utt=R('<p class="text-xs text-muted-foreground">Make the AppImage executable (<code>chmod +x</code>) and run it, or install the <code>.deb</code> / <code>.rpm</code> with your package manager.</p>'),Ltt=R('<span class="text-xs text-muted-foreground"> </span>'),Dtt=R('<li><a target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline"> </a> <!></li>'),Qtt=R('<div><div class="mb-1 text-xs font-semibold uppercase text-muted-foreground"> </div> <ul class="space-y-1 text-sm"></ul></div>'),Jtt=R('<div class="space-y-3 border-t border-border pt-3"><!> <div class="pt-1 text-xs"><a target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">View full release notes on GitHub →</a></div></div>'),ztt=R('<!> <!> <button type="button" class="flex items-center gap-1 text-xs text-fg-link hover:underline"><!> </button> <!>',1),Ktt=R("<!> Send Feedback",1),Htt=R('<ul class="list-inside list-disc space-y-1 text-sm"><li><a href="https://forwardemail.net/faq" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">FAQ</a></li> <li><a href="https://forwardemail.net/guides" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Guides</a></li> <li><a href="https://forwardemail.net/help" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Help & Support</a></li> <li><a href="https://forwardemail.net/email-api" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Email API Documentation</a></li> <li><a href="https://forwardemail.net/privacy" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Privacy Policy</a></li></ul>'),jtt=R('<ul class="list-inside list-disc space-y-1 text-sm"><li><a href="https://github.com/forwardemail" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">GitHub</a></li> <li><a href="https://matrix.to/#/#forward-email:matrix.org" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Matrix Chat</a></li> <li><a href="https://x.com/fwdemail" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">X (Twitter)</a></li></ul>'),Ott=R('<span class="ml-2 text-xs text-muted-foreground"> </span>'),Ptt=R('<div><strong>App Version:</strong> </div> <div><strong>Database Schema:</strong> </div> <div class="pt-2"><!> <!></div> <div class="pt-2"><button type="button" class="text-fg-link hover:underline">Run diagnostics</button></div>',1),_tt=R('<div class="flex h-14 items-center gap-3 px-4" style="padding-top:env(safe-area-inset-top,0px);box-sizing:content-box" data-testid="settings-header"><!> <div class="flex flex-col"><h1 class="text-lg font-semibold">Settings</h1> <span class="text-xs text-muted-foreground"> </span></div></div> <!> <!> <div class="flex min-h-0 flex-col md:flex-row" style="height: calc(100dvh - 3.5rem - var(--sai-top));"><aside class="hidden w-56 shrink-0 border-r border-border p-4 md:block"><nav class="flex flex-col gap-1"></nav></aside> <div class="w-full md:hidden"><div class="border-b border-border p-4"><!></div></div> <div class="fe-mobile-page-scroll flex-1 overflow-y-auto p-4 md:p-6"><div class="mx-auto max-w-4xl space-y-6"><!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div></div></div> <!> <!> <!> <!>',1);function $tt(t,e){lt(e,!0);const n=()=>lr(sp,"$currentAccount",o),i=()=>lr(Bi,"$settingsLabelsStore",o),s=()=>lr(Bn,"$availableLabelsStore",o),r=()=>lr(bG,"$accounts",o),a=()=>lr(Y(),"$active",o),[o,l]=$f(),c=[],u=[],h=[],{health:m}=xl.state,{checkHealth:p,rebuildFromCache:A}=xl.actions,f=async Le=>{try{await C5(Le,{log:(...Yt)=>console.warn("[Settings]",...Yt)})}catch(Yt){console.warn("[Settings] opener failed:",Yt)}},y="https://forwardemail.net/my-account/security",{folders:I}=Sn.state,{loadFolders:x}=Sn.actions,V=YW();let W=We(e,"navigate",3,()=>{}),Y=We(e,"active",19,()=>t5(!0)),E=We(e,"rebuildIndex",3,async()=>{}),C=We(e,"toggleBodyIndexing",3,()=>{}),G=We(e,"toasts",3,null),N=We(e,"applyTheme",3,()=>{}),B=We(e,"applyFont",3,()=>{}),F=We(e,"applyDensity",3,()=>{});const H=Le=>Le&&typeof Le.subscribe=="function"?Le:t5(Le??0),U=H(e.storageUsed),_=H(e.storageTotal),j=H(e.localUsage),D=H(e.localQuota),P=H(e.syncPending),te=H(II),ne=H(e.indexCount),z=H(e.indexSize),ie=H(e.bodyIndexingEnabled),ue=H(G0e);let be=$(""),ce=$("system"),ke=$("full"),J=$("compact"),Ee=$("general"),ge=$(!1),Ye=$(!1),fe=$(!1),Be=$(!1),Ne=$(!1),qe=$(""),ot=$(""),It=null,Zt=$("0"),Rn=$(""),nn=$(""),tt=$(""),xn=$(""),Wt=$(""),Gn=$(br([])),Ot=$(br([])),vn=$(""),Me=$(""),St=$(""),dn=$(!0),un=$(!1),Dn=$(!1),Vn=$(br([])),$n=$(!1),ti=$(!1),Tn=$(""),Wi=$(""),qn=$(""),tn=$(!1),ei=$(""),us=$(!0),$i=$(!0),ye=$(!1),Ge=$(!1),Ce=$(!0),Re=$("system"),je=$(!1),$e=$(br([])),Oe=$("system-ui, -apple-system, sans-serif"),xt=$("");const yn=B8();let gt=$(-1),en=$(""),Cn=$(""),Pn,Dt=$(br(uJ)),ci=$(br("0.14.24")),et=$(0),ht=$(br([])),mi=$(null);typeof navigator<"u"&&navigator.platform.toUpperCase().includes("MAC");const As=(Le=[])=>{const Yt=new Set,Pt=[];return(Le||[]).forEach(Kn=>{const Hn=Kn?.path||Kn?.name||Kn?.fullName||Kn?.fullname;!Hn||Yt.has(Hn)||(Yt.add(Hn),Pt.push(Hn))}),Pt};let gs=$(null),er=$(null),ai=$(!1),Rs=$(!1),hs=$(!1),Vs=$(""),kr="",ta=$(!1),Ko=$(br({}));const Cr=["theme","layout_mode","compose_plain_default"],Ss=()=>d(St)||Dc()||Se.get("email")||"default",ua=()=>{const Le=Ss();b(Ko,Cr.reduce((Yt,Pt)=>(Yt[Pt]=vj(Pt,Le),Yt),{}),!0)},Bi=H(uu),Bn=H(Gb);let zn=$(!1),ms=$(""),Fs=$(""),He=$(!1);const Ut=AG;let kn=0,En=$(!1),Wn=$(!1),mn=$(""),Xn=$("create"),si=$(""),ri=$(""),wi=$(""),Os=$(0),Ts=$(0),Di=$(0),zs=$(0),Hi=$(0),ts=$(br({})),ir=$(0),Ii=$(0),Vi=$(br({healthy:!0,messagesCount:0,indexCount:0,divergence:0,needsRebuild:!1})),mr=$(!1),jr=$(!1),Er=$(null),xa=$(!1),Ri=$("");const tl="https://github.com/forwardemail/mail.forwardemail.net/releases/latest";let Ho=$(null),No=$(null),Ja=$(null),ii=$(br({mac:[],windows:[],linux:[]})),De=$(!1),vt=$(""),Zn=$(!1);Hr(()=>{if(d(Ee)!=="help"){b(vt,"");return}Do||d(Ho)||d(De)||d(vt)||(b(De,!0),b(vt,""),(async()=>{try{const[Le,Yt]=await Promise.all([s$e(),r$e()]);b(Ho,Le,!0),b(No,Yt,!0),b(ii,d$e(Le.assets),!0),b(Ja,c$e(Le.assets,Yt),!0)}catch(Le){b(vt,Le instanceof Error?Le.message:"Failed to fetch the latest release",!0),console.warn("[Settings] Desktop release fetch failed:",Le)}finally{b(De,!1)}})())});async function ji(){b(xa,!0),b(Ri,"");let Le="0.14.24";if(Na)try{const{getAppVersion:Yt}=await Promise.resolve().then(()=>VZ),Pt=await Yt();Pt&&(Le=Pt,b(ci,Pt,!0))}catch{}try{const Yt=globalThis.__forwardemailCheckForUpdates;if(typeof Yt=="function"){const Pt=await Yt();b(Ri,Pt.message,!0)}else if(typeof window.__checkForWebUpdates=="function"){const Pt=await window.__checkForWebUpdates();Pt.upToDate&&b(Ri,`You're on the latest version (v${Pt.currentVersion||Pt.latestVersion})`)}else try{const{checkForUpdates:Pt,downloadAndInstall:Kn}=await Promise.resolve().then(()=>Iye),Hn=await Pt({force:!0});if(Hn?.available){b(Ri,`Update available: v${Hn.version}. Downloading…`);try{await Kn(Hn,({downloaded:tr,contentLength:Ks})=>{if(Ks){const rs=Math.floor(tr/Ks*100);b(Ri,`Downloading v${Hn.version}… ${rs}%`)}}),b(Ri,`Update v${Hn.version} installed. Restarting…`)}catch(tr){b(Ri,tr instanceof Error?tr.message:"Update failed to install",!0)}}else Le?b(Ri,`You're on the latest version (v${Le})`):b(Ri,"You're on the latest version")}catch{b(Ri,"Could not check for updates")}}catch{b(Ri,"Could not check for updates")}finally{b(xa,!1)}}let Zi=$(br([])),Gs=$(""),xr=$(""),Fr=$(!1),Ta=$(""),ga=$(!1);const Wl=[{label:"from:alice",note:"Filter sender"},{label:"to:bob",note:"Filter recipient (to/cc/bcc)"},{label:"subject:invoice",note:"Subject contains"},{label:"has:attachment",note:"Only messages with attachments"},{label:"is:unread",note:"Unread only (is:read also works)"},{label:"label:work",note:"Filter by label"},{label:"in:all",note:"Search across folders"},{label:"before:2024-01-01",note:"Date filters (after/on supported)"},{label:"size:>5MB",note:"Size filters (>, <, >=, <=)"},{label:'"exact phrase"',note:"Quotes for phrase search"},{label:"(from:alice AND has:attachment)",note:"Use AND/OR/NOT and parentheses"}];let Or=$(!1);const qd=new Set(["general","appearance","privacy","folders","filters","search","advanced","shortcuts","help"]),sh=(Le=0)=>{if(!Le)return"0 GB";const Yt=Le/1024/1024/1024;if(Yt>=1)return`${Yt>=10?Math.round(Yt):Math.round(Yt*10)/10} GB`;const Pt=Le/1024/1024;return`${Math.round(Pt)} MB`},vh=()=>d(Ts)?Math.min(100,Math.round(d(Os)/d(Ts)*100)):0;let El=[],e0=$(null);const E0=async()=>{b(Ee,"general"),await ph(),d(e0)?.scrollIntoView({behavior:"smooth",block:"start"})};_d(()=>{Na&&Promise.resolve().then(()=>VZ).then(({getAppVersion:Yt})=>Yt()).then(Yt=>{Yt&&b(ci,Yt,!0)}).catch(()=>{}),k0(),K(),pd();const Le=window.location.hash?.slice(1)||"";Le==="security"||Le==="accounts"?b(Ee,"privacy"):Le==="notifications"?E0():qd.has(Le)&&b(Ee,Le,!0),El=[sp.subscribe(Yt=>{b(St,Yt||"",!0),b(Me,d(St)||Dc(),!0),md(),k0(),x().catch(()=>{}),Yt&&Yt!==kr&&(kr=Yt,e3(Yt))}),uG.subscribe(Yt=>{d(ta)||b(Vs,Yt||"",!0)}),I.subscribe(Yt=>{const Pt=Yt||[];b(Gn,As(Pt),!0),b(Ot,Pt.filter(Kn=>Kn?.path&&!Sn.actions.isSystemFolder?.(Kn.path)).map(Kn=>({path:Kn.path,label:Kn.name||Kn.fullName||Kn.fullname||Kn.path||"",count:typeof Kn.totalCount=="number"?Kn.totalCount:Kn.count??null})),!0)}),q9.subscribe(Yt=>{b(ce,Yt||"system",!0),N()?.(d(ce))}),qh.subscribe(()=>{ua()}),xl.state.savedSearches.subscribe(Yt=>{b(Zi,Yt||[],!0)}),U.subscribe(Yt=>b(Os,Yt||0,!0)),_.subscribe(Yt=>b(Ts,Yt||0,!0)),j.subscribe(Yt=>b(Di,Yt||0,!0)),D.subscribe(Yt=>b(zs,Yt||0,!0)),P.subscribe(Yt=>b(Hi,Yt||0,!0)),te.subscribe(Yt=>b(ts,Yt||{},!0)),ne.subscribe(Yt=>b(ir,Yt||0,!0)),z.subscribe(Yt=>b(Ii,Yt||0,!0)),ie.subscribe(Yt=>b(dn,!!Yt)),ue.subscribe(Yt=>b(ke,Yt||"full",!0)),m.subscribe(Yt=>b(Vi,Yt||d(Vi),!0)),kue.subscribe(Yt=>b(Ye,!!Yt))]}),XA(()=>{ku(),El.forEach(Le=>Le?.())});const k0=async()=>{b(en,""),b(Cn,""),await Xue();const Le=Ss();b(be,Se.get("api_key")||"",!0),b(ce,da("theme",{account:Le})||"system",!0),b(ke,da("layout_mode",{account:Le})||"full",!0),b(J,da("list_density",{account:Le})||"compact",!0),b(ge,!!da("compose_plain_default",{account:Le}),!0),b(fe,!!da("default_reply_all",{account:Le}),!0),b(Be,!!da("send_and_archive_default",{account:Le}),!0);const Yt=YS.getSignature();b(Ne,Yt.enabled,!0),b(qe,Yt.text,!0),b(ot,Yt.html,!0),b(Zt,String(da("undo_send_delay",{account:Le})||0),!0),b(Rn,da("archive_folder",{account:Le})||"",!0),b(nn,da("sent_folder",{account:Le})||"",!0),b(tt,da("drafts_folder",{account:Le})||"",!0),b(xn,da("trash_folder",{account:Le})||"",!0),b(Wt,da("junk_folder",{account:Le})||"",!0),b(dn,!!da("search_body_indexing",{account:Le}),!0),b(Me,Dc(),!0),b(hs,Se.get("debug_perf")==="1");try{const Pt=`pgp_keys_${Le}`,Kn=Se.get(Pt);b(Vn,Kn?JSON.parse(Kn):[],!0)}catch{b(Vn,[],!0)}if(b(tn,!!da("block_remote_images",{account:Le}),!0),b(ei,String(da("spam_report_address",{account:Le})||"").trim()||kx,!0),b(us,da("notify_app_updates")!==!1),b($i,!!da("block_tracking_pixels",{account:Le}),!0),b(ye,!!da("view_plain_text",{account:Le}),!0),b(Ge,!!da("hide_completed_todos",{account:Le}),!0),b(Ce,!!da("start_week_on_sunday",{account:Le}),!0),b(Re,da("font",{account:Le})||"system",!0),b(Oe,fK(d(Re)),!0),b($e,dfe(),!0),b(xt,(da("external_browser_override",{account:Le})||"").trim(),!0),d(Re)!=="system"&&(b(je,!0),bK(d(Re)).then(Pt=>{b(Oe,Pt,!0),B()(Pt)}).catch(Pt=>{console.error("Failed to load saved font:",Pt),b(Re,"system")}).finally(()=>{b(je,!1)})),b(ti,!1),b(Tn,""),b(Wi,""),b(gt,-1),b(Ee,d(Ee)||"general",!0),ua(),await pO(),Se.get("alias_auth")||Se.get("api_key")||Se.get("authToken"))try{await xl.actions.ensureInitialized(),await xl.actions.refreshSavedSearches()}catch(Pt){console.warn("Failed to init search store",Pt)}await md()},Dc=()=>{const Le=Se.get("alias_auth")||"";return Le.includes(":")?Le.split(":")[0]:Se.get("email")||Le||""},hd=()=>{b(en,""),b(Cn,""),Pn&&(clearTimeout(Pn),Pn=void 0)},yc=Le=>{hd(),b(Cn,Le,!0),Pn=setTimeout(()=>{b(Cn,"")},4e3)},Yu=async()=>{if(hd(),!d(Gs).trim()||!d(xr).trim()){Jo("Please enter both a name and query.");return}b(Fr,!0);try{await xl.actions.saveSearch(d(Gs).trim(),d(xr).trim()),await xl.actions.refreshSavedSearches(),b(Gs,""),b(xr,""),yc("Saved search added.")}catch(Le){Jo(Le?.message||"Failed to save search.")}finally{b(Fr,!1)}},t0=async Le=>{if(Le){b(Ta,Le,!0);try{await xl.actions.deleteSavedSearch(Le),await xl.actions.refreshSavedSearches(),yc("Saved search deleted.")}catch(Yt){Jo(Yt?.message||"Failed to delete saved search.")}finally{b(Ta,"")}}},Jo=Le=>{hd(),b(en,Le,!0),Pn=setTimeout(()=>{b(en,"")},5e3)},Xa=(Le,Yt)=>{Xl(Le)||Jo(Le?.message||Yt)},no=(Le,Yt)=>{Xl(Le)||G()?.show?.(Le?.message||Yt,"error")},dl=Le=>Le?.keyword||Le?.id||Le?.name,Cd=()=>{const Le=whe(kn,Ut);return kn+=1,Le},Nd=q(()=>(i()||[]).filter(Le=>dl(Le))),Bh=q(()=>{const Le=new Set(d(Nd).map(Yt=>z0(dl(Yt))));return(s()||[]).filter(Yt=>Yt?.discovered&&Yt?.id&&!Le.has(z0(Yt.id))).sort((Yt,Pt)=>Yt.id.localeCompare(Pt.id))}),md=async()=>{b(zn,!0);try{await SZ()}catch(Le){Jo(Le?.message||"Failed to load labels.")}finally{b(zn,!1)}},Ic=()=>{b(Xn,"create"),b(si,""),b(ri,""),b(wi,Cd(),!0),b(mn,""),b(En,!0)},Qc=Le=>{const Yt=dl(Le);Yt&&(b(Xn,"edit"),b(si,Yt,!0),b(ri,Le?.name||Yt,!0),b(wi,Le?.color||"",!0),b(mn,""),b(En,!0))},rh=Le=>{Le?.id&&(b(Xn,"adopt"),b(si,Le.id,!0),b(ri,Le.id,!0),b(wi,Le.color||Cd(),!0),b(mn,""),b(En,!0))},n0=()=>{b(En,!1),b(mn,"")},wc=()=>{d(mn)&&b(mn,"")},wo=async()=>{const Le=(d(ri)||"").trim(),Yt=WZ(Le);if(!Yt.ok){b(mn,Yt.error,!0);return}b(Wn,!0),b(mn,"");try{if(d(Xn)==="edit"){const Pt=await cRe(d(si),{name:Yt.value,color:(d(wi)||"").trim()||void 0});if(!Pt?.success){if(Pt?.blocked)return;b(mn,Pt?.error||"Failed to update label.",!0);return}}else if(d(Xn)==="adopt"){const Pt=await iee(d(si),{name:Yt.value,color:(d(wi)||"").trim()||void 0});if(!Pt?.success){if(Pt?.blocked)return;b(mn,Pt?.error||"Failed to add label.",!0);return}}else{const Pt=await J0e(Yt.value,(d(wi)||"").trim()||void 0);if(!Pt?.success){if(Pt?.blocked)return;b(mn,Pt?.error||"Failed to create label.",!0);return}}n0()}catch(Pt){Xl(Pt)||b(mn,Pt?.message||"Unable to save label.",!0)}finally{b(Wn,!1)}},Eu=async Le=>{const Yt=dl(Le);if(!Yt)return;const Pt=Le?.name||Yt;if(confirm(`Delete label "${Pt}"?`)){b(ms,Yt,!0);try{const Kn=await dRe(Yt);if(!Kn?.success){if(Kn?.blocked)return;Jo(Kn?.error||"Failed to delete label.");return}}catch(Kn){Xa(Kn,"Failed to delete label.")}finally{b(ms,"")}}},zu=async()=>{const Le=d(Bh).slice();if(!Le.length)return;b(He,!0);let Yt=0;try{for(const Pt of Le){const Kn=await iee(Pt.id,{name:Pt.id,color:Pt.color,reload:!1});if(Kn?.blocked)return;Kn?.success&&(Yt+=1)}await SZ(),Yt&&yc(Yt===1?"Added 1 label.":`Added ${Yt} labels.`)}catch(Pt){Xa(Pt,"Failed to add labels.")}finally{b(He,!1)}},Xh=async Le=>{const Yt=Le?.id;if(Yt&&confirm(`Remove "${Yt}" from every message that carries it? Other clients or the API can add it again later.`)){b(Fs,Yt,!0);try{const Pt=await hRe(Yt);!Pt?.success&&Pt?.error&&Jo(Pt.error)}catch(Pt){Xa(Pt,"Failed to remove label.")}finally{b(Fs,"")}}},km=async Le=>{if(!Le?.path)return;const Yt=Le.count??0,Pt=Yt>0?`Delete "${Le.label}" and its ${Yt} message${Yt===1?"":"s"}? This cannot be undone.`:`Delete "${Le.label}"? This cannot be undone.`;if(confirm(Pt)){b(vn,Le.path,!0);try{await Sn.actions.deleteFolder?.(Le.path),yc("Folder deleted.")}catch(Kn){Xa(Kn,"Failed to delete folder.")}finally{b(vn,"")}}},pd=async()=>{try{const Le=await tde();if(Le){b(Dt,Le.version??uJ,!0);const Yt=Object.values(Le.counts||{}).reduce((Pt,Kn)=>Pt+Kn,0);b(et,Yt,!0)}}catch(Le){console.warn("Failed to load database info:",Le)}},eu=()=>{b(hs,!d(hs)),Se.set("debug_perf",d(hs)?"1":"0"),d(hs)&&Zde(),G()?.show?.(d(hs)?"Performance tracing enabled":"Performance tracing disabled","info")},oc=async()=>{try{await Bc("theme",d(ce),{account:Ss()}),N()?.(d(ce)),G()?.show?.("Theme updated","success")}catch(Le){no(Le,"Failed to save theme")}},ho=async()=>{try{await Bc("list_density",d(J),{account:Ss()}),F()?.(d(J)),G()?.show?.("Density updated","success")}catch(Le){no(Le,"Failed to save density")}},wd=async()=>{try{await C0e?.(d(ke)),G()?.show?.("Layout updated","success")}catch(Le){no(Le,"Failed to save layout")}},Ea=async()=>{b(je,!0);try{const Le=d(St)||Dc()||Se.get("email")||"",Yt=await bK(d(Re));b(Oe,Yt,!0),await Bc("font",d(Re),{account:Le}),B()(Yt),G()?.show?.("Font updated","success")}catch(Le){no(Le,"Failed to load font"),b(Re,"system"),b(Oe,fK("system"),!0),B()(d(Oe))}finally{b(je,!1)}},lc=async()=>{const Le=d(xt).trim();try{await Bc("external_browser_override",Le,{account:Ss()}),b(xt,Le,!0),G()?.show?.(Le?"External browser override saved":"External links will use the system default browser","success")}catch(Yt){no(Yt,"Failed to save browser override")}},Ku=async()=>{b(xt,""),await lc()},Mm=async()=>{const Le=d(ei).trim();if(!ehe(Le)){G()?.show?.("Enter a valid email address for spam reports","error");return}try{await Bc("spam_report_address",Le===kx?"":Le,{account:Ss()}),b(ei,Le,!0),G()?.show?.(`Spam reports will be sent to ${Le}`,"success")}catch(Yt){no(Yt,"Failed to save spam report address")}},tu=async()=>{b(ei,kx,!0),await Mm()},pu=()=>{YS.setSignature({enabled:d(Ne)}),G()?.show?.(`Signature ${d(Ne)?"enabled":"disabled"}`,"success")};let Yd=null;const ku=()=>{It&&clearTimeout(It),It=null;const Le=Yd;Yd=null,Le?.()},M0=Le=>{b(ot,Le.html,!0),b(qe,Le.text,!0);const Yt=Ss();It&&clearTimeout(It),Yd=()=>YS.setSignature({html:Le.html,text:Le.text},Yt),It=setTimeout(()=>{ku(),G()?.show?.("Signature saved","success")},600)},Mu=async()=>{try{await Bc("undo_send_delay",Number(d(Zt))||0,{account:Ss()}),G()?.show?.("Undo send updated","success")}catch(Le){no(Le,"Failed to save undo send")}},lp=async()=>{try{await Bc("compose_plain_default",d(ge),{account:Ss()}),G()?.show?.("Composer default updated","success")}catch(Le){no(Le,"Failed to save composer default")}},i0=async()=>{try{await Rue.setAttachmentReminder(d(Ye)),G()?.show?.(d(Ye)?"Attachment reminder enabled":"Attachment reminder disabled","success")}catch(Le){no(Le,"Failed to save attachment reminder setting")}},vm=async()=>{try{await Bc("default_reply_all",d(fe),{account:Ss()}),G()?.show?.(d(fe)?"Reply All set as default":"Reply set as default","success")}catch(Le){no(Le,"Failed to save reply default")}},Pp=async()=>{try{await Bc("send_and_archive_default",d(Be),{account:Ss()}),G()?.show?.(d(Be)?"Send & Archive set as default":"Send set as default","success")}catch(Le){no(Le,"Failed to save send default")}},Td=()=>{try{Bc("notify_app_updates",d(us),{account:Ss()}),G()?.show?.(d(us)?"You will be notified when the app updates":"App update notifications turned off","success")}catch(Le){no(Le,"Failed to update notification setting")}},Jc=()=>{try{Bc("block_remote_images",d(tn),{account:Ss()}),G()?.show?.(d(tn)?"Remote images will be blocked for privacy":"Remote images will load automatically","success")}catch(Le){no(Le,"Failed to update image blocking setting")}},QA=()=>{try{Bc("block_tracking_pixels",d($i),{account:Ss()}),G()?.show?.(d($i)?"Tracking pixels will be blocked":"Tracking pixels will load (not recommended)","success")}catch(Le){no(Le,"Failed to update tracking pixel setting")}},nm=()=>{try{Bc("view_plain_text",d(ye),{account:Ss()}),G()?.show?.(d(ye)?"Emails will render as plain text":"Emails will render with formatting","success")}catch(Le){no(Le,"Failed to update plain text setting")}},cp=()=>{try{Bc("hide_completed_todos",d(Ge),{account:Ss()}),G()?.show?.(d(Ge)?"Completed todos will be hidden in the calendar":"Completed todos will be shown in the calendar","success")}catch(Le){no(Le,"Failed to update completed todos setting")}},_p=()=>{try{Bc("start_week_on_sunday",d(Ce),{account:Ss()}),G()?.show?.(d(Ce)?"Week now starts on Sunday":"Week now starts on Monday","success")}catch(Le){no(Le,"Failed to update week start setting")}},Ud=async()=>{try{await Bc("archive_folder",d(Rn)||null,{account:Ss()}),G()?.show?.("Archive folder updated","success")}catch(Le){no(Le,"Failed to save archive folder")}},Fg=async()=>{try{await Bc("sent_folder",d(nn)||null,{account:Ss()}),G()?.show?.("Sent folder updated","success")}catch(Le){no(Le,"Failed to save sent folder")}},s0=async()=>{try{await Bc("drafts_folder",d(tt)||null,{account:Ss()}),G()?.show?.("Drafts folder updated","success")}catch(Le){no(Le,"Failed to save drafts folder")}},jo=async()=>{try{await Bc("trash_folder",d(xn)||null,{account:Ss()}),G()?.show?.("Trash folder updated","success")}catch(Le){no(Le,"Failed to save trash folder")}},dp=async()=>{try{await Bc("junk_folder",d(Wt)||null,{account:Ss()}),G()?.show?.("Junk folder updated","success")}catch(Le){no(Le,"Failed to save junk folder")}},ul=()=>{const Le=d(Ee);k0(),b(Ee,Le||"general",!0)},Hu=()=>{b(ti,!0),b(gt,-1),b(Tn,""),b(Wi,""),b(qn,"")},Bm=Le=>{const Yt=d(Vn).indexOf(Le);Yt!==-1&&(b(ti,!0),b(gt,Yt,!0),b(Tn,Le.name||"",!0),b(Wi,Le.value||"",!0),b(qn,""))},r0=()=>{try{const Le=d(St)||Dc()||Se.get("email")||"",Yt=Se.get(`pgp_passphrases_${Le}`);if(!Yt)return{};const Pt=JSON.parse(Yt);return Pt&&typeof Pt=="object"?Pt:{}}catch{return{}}},kl=Le=>{const Pt=`pgp_passphrases_${d(St)||Dc()||Se.get("email")||""}`,Kn=Object.fromEntries(Object.entries(Le||{}).filter(([Hn,tr])=>!!Hn&&typeof tr=="string"&&tr.trim().length>0));Object.keys(Kn).length>0?Se.set(Pt,JSON.stringify(Kn)):Se.remove(Pt)},nu=async Le=>{const Yt=d(St)||Dc()||Se.get("email")||"";b(Vn,d(Vn).filter(Kn=>Kn!==Le),!0),Se.set(`pgp_keys_${Yt}`,JSON.stringify(d(Vn)));const Pt=r0();Le?.name&&(delete Pt[Le.name],kl(Pt)),Kv(),Rq();try{await Fq(Yt)}catch(Kn){console.warn("[Settings] invalidatePgpCachedBodies failed:",Kn)}yc("Encryption key removed.")},jl=()=>{b(ti,!1),b(gt,-1),b(Tn,""),b(Wi,""),b(qn,"")};let Au=$(!1);const Ld=async()=>{if(!d(Au)){b(Au,!0);try{const Le=(d(Tn)||"").trim(),Yt=(d(Wi)||"").trim(),Pt=(d(qn)||"").trim();if(!Le||!Yt){Jo("Please provide a name and key.");return}const Kn=await nS({keyName:Le,keyValue:Yt,checkOnly:!0});if(!Kn?.success&&Kn?.needsPassphrase===!1){Jo(/no secret key packet found/i.test(Kn?.error||"")?"Please provide a PGP private key, not a public key.":Kn?.error||"Please provide a valid PGP private key.");return}if(Pt){const Cs=await nS({keyName:Le,passphrase:Pt,keyValue:Yt,remember:!1});if(!Cs?.success){Jo(Cs?.error||"That passphrase could not unlock this private key.");return}}const Hn=d(gt)>=0?d(Vn)[d(gt)]:null,tr=[...d(Vn)];d(gt)>=0?tr[d(gt)]={name:Le,value:Yt}:tr.push({name:Le,value:Yt}),b(Vn,tr,!0);const Ks=d(St)||Dc()||Se.get("email")||"";Se.set(`pgp_keys_${Ks}`,JSON.stringify(d(Vn)));const rs=r0();Hn?.name&&Hn.name!==Le&&delete rs[Hn.name],Pt?rs[Le]=Pt:delete rs[Le],kl(rs),Kv(),Rq();try{await Fq(Ks)}catch(Cs){console.warn("[Settings] invalidatePgpCachedBodies failed:",Cs)}jl(),yc(Pt?"Encryption key saved and unlocked locally.":"Encryption key saved locally. If it is passphrase-protected, you will be prompted when opening an encrypted message.")}catch(Le){Jo(Le?.message||"Could not validate the key right now. Please try again in a moment.")}finally{b(Au,!1)}}},im=()=>{Se.clear(),window.location.replace("/")},v0=async()=>{await AO()},ah=async()=>{b(ai,!0);try{const[Le,Yt]=await Promise.all([vX.getCacheStatistics(),vX.getStorageInfo()]);b(gs,Le,!0),b(er,Yt,!0)}catch(Le){console.error("Failed to load cache statistics:",Le),Jo("Failed to load cache statistics")}finally{b(ai,!1)}},B0=()=>{hd(),b(Dn,!0)},X0=()=>{b(Dn,!1)},oh=async()=>{if(!d(un)){b(un,!0);try{await E()(),yc("Search index rebuilt."),G()?.show?.("Search index rebuilt","success")}catch(Le){Jo(Le?.message||"Failed to rebuild index."),G()?.show?.(Le?.message||"Failed to rebuild index.","error")}finally{b(un,!1),X0()}}},lh=async()=>{if(!d(mr)){b(mr,!0),hd();try{await p(),b(Er,new Date,!0),G()?.show?.("Health check complete","success")}catch(Le){Jo(Le?.message||"Failed to check index health")}finally{b(mr,!1)}}},gu=async()=>{if(!d(jr)){b(jr,!0),hd();try{await A(),b(Er,new Date,!0),yc("Index rebuilt from cache"),G()?.show?.("Index rebuilt from cache","success")}catch(Le){Jo(Le?.message||"Failed to rebuild from cache"),G()?.show?.(Le?.message||"Failed to rebuild from cache","error")}finally{b(jr,!1)}}},S=async()=>{const Le=!d(dn);b(dn,Le),C()?.(Le),yc(Le?"Body indexing enabled. Rebuild your search index to apply this change.":"Body indexing disabled.")},M=Le=>{if(!Le)return"";try{return Qa.formatKey(Le)}catch{return Array.isArray(Le)?Le.join(" + "):String(Le||"")}},K=()=>{b(ht,Qa.getShortcutsList(),!0)},ee=()=>{hd(),d(mi)&&de();try{Qa.resetToDefaults(),K(),yc("Keyboard shortcuts reset to defaults."),G()?.show?.("Keyboard shortcuts reset to defaults","success")}catch(Le){Jo(Le?.message||"Failed to reset shortcuts."),G()?.show?.(Le?.message||"Failed to reset shortcuts.","error")}},de=()=>{Qa.stopCapture(),b(mi,null)},Ze=Le=>{Le.originalKey&&(hd(),b(mi,Le.originalKey,!0),Qa.startCapture(Yt=>{if(Qa.stopCapture(),!d(mi))return;const Pt=d(mi);if(Yt==="esc"){b(mi,null);return}try{Qa.updateShortcut(Pt,Yt),K(),b(mi,null),yc("Shortcut updated."),G()?.show?.("Shortcut updated","success")}catch(Kn){b(mi,null),Jo(Kn?.message||"Failed to update shortcut."),G()?.show?.(Kn?.message||"Failed to update shortcut.","error")}}))};let ve=$(!1);const Ke=async()=>{if(hd(),!d(ve)){b(ve,!0);try{if("caches"in window){const Le=await caches.keys();await Promise.all(Le.map(Yt=>caches.delete(Yt)))}if("serviceWorker"in navigator){const Le=await navigator.serviceWorker.getRegistration();Le&&await Le.update()}try{await Promise.all([_e.messages.clear(),_e.messageBodies.clear(),_e.folders.clear(),_e.syncManifests?.clear?.(),_e.searchIndex.clear(),_e.indexMeta.clear()])}catch(Le){console.warn("[Settings] Failed to clear mail cache tables:",Le)}yc("Cache cleared. Reloading..."),G()?.show?.("Cache cleared. Reloading...","success"),setTimeout(()=>{window.location.reload()},500)}catch(Le){Jo(Le?.message||"Failed to clear cache."),G()?.show?.(Le?.message||"Failed to clear cache.","error"),b(ve,!1)}}},kt=async()=>{if(hd(),!(!window.confirm("Reset the service worker and clear ALL local data (local storage + IndexedDB)? This will log you out and cannot be undone.")||d(Rs))){b(Rs,!0);try{try{await z4()}catch{}try{eG()}catch{}await xAe(),await jce(),localStorage.setItem("webmail_pending_idb_cleanup","1"),localStorage.clear(),localStorage.setItem("webmail_pending_idb_cleanup","1"),sessionStorage.clear(),Q9(),yc("Service worker reset and local data cleared. Redirecting to login..."),G()?.show?.("Service worker reset and local data cleared. Redirecting to login...","success"),setTimeout(()=>{window.location.replace("/")},1e3)}catch(Yt){Jo(Yt?.message||"Failed to force reset storage."),G()?.show?.(Yt?.message||"Failed to force reset storage.","error")}finally{b(Rs,!1)}}},rn=[{id:"general",label:"General"},{id:"appearance",label:"Appearance"},{id:"privacy",label:"Privacy & Security"},{id:"folders",label:"Folders & Labels"},{id:"filters",label:"Filters"},{id:"calendar",label:"Calendar"},{id:"search",label:"Search"},{id:"advanced",label:"Advanced"},{id:"shortcuts",label:"Keyboard Shortcuts"},{id:"help",label:"About & Help"}];var Jt=_tt(),Bt=w(Jt),Ft=k(Bt);rt(Ft,{variant:"ghost",size:"icon",onclick:()=>W()("/mailbox"),"aria-label":"Back",children:(Le,Yt)=>{Ib(Le,{class:"h-5 w-5"})},$$slots:{default:!0}});var $t=Z(Ft,2),zt=Z(k($t),2),Qt=Te(zt,!0),Xt=Z(Bt,2);{var gn=Le=>{var Yt=pe(),Pt=w(Yt);T(Pt,()=>Hd,(Kn,Hn)=>{Hn(Kn,{variant:"destructive",class:"mx-4 mt-4",children:(tr,Ks)=>{var rs=Js(),Cs=w(rs);y0(Cs,{class:"h-4 w-4"});var qi=Z(Cs,2);T(qi,()=>jd,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=le();oe(()=>ae(pn,d(en))),g(wn,pn)},$$slots:{default:!0}})}),g(tr,rs)},$$slots:{default:!0}})}),g(Le,Yt)};O(Xt,Le=>{d(en)&&Le(gn)})}var X=Z(Xt,2);{var re=Le=>{var Yt=pe(),Pt=w(Yt);T(Pt,()=>Hd,(Kn,Hn)=>{Hn(Kn,{class:"mx-4 mt-4 border-state-success bg-state-success/10 text-state-success",children:(tr,Ks)=>{var rs=Js(),Cs=w(rs);sY(Cs,{class:"h-4 w-4"});var qi=Z(Cs,2);T(qi,()=>jd,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=le();oe(()=>ae(pn,d(Cn))),g(wn,pn)},$$slots:{default:!0}})}),g(tr,rs)},$$slots:{default:!0}})}),g(Le,Yt)};O(X,Le=>{d(Cn)&&Le(re)})}var me=Z(X,2),we=k(me),Fe=k(we);Mi(Fe,21,()=>rn,or,(Le,Yt)=>{var Pt=Get(),Kn=Te(Pt,!0);oe(()=>{_i(Pt,1,`px-3 py-2 text-left text-sm font-medium transition-colors ${d(Ee)===d(Yt).id?"bg-primary/10 text-fg-link":"text-muted-foreground hover:bg-accent hover:text-foreground"}`),ae(Kn,d(Yt).label)}),Xe("click",Pt,()=>{b(Ee,d(Yt).id,!0),history.replaceState(null,"",`#${d(Yt).id}`),d(Yt).id==="folders"&&md(),d(Yt).id==="advanced"&&ah()}),g(Le,Pt)});var ze=Z(we,2),Vt=k(ze),ft=k(Vt);T(ft,()=>td,(Le,Yt)=>{Yt(Le,{type:"single",get value(){return d(Ee)},onValueChange:Pt=>{b(Ee,Pt,!0),history.replaceState(null,"",`#${Pt}`),Pt==="folders"&&md(),Pt==="advanced"&&ah()},children:(Pt,Kn)=>{var Hn=Js(),tr=w(Hn);T(tr,()=>id,(rs,Cs)=>{Cs(rs,{class:"w-full",children:(qi,fi)=>{var ni=le();oe(wn=>ae(ni,wn),[()=>rn.find(wn=>wn.id===d(Ee))?.label||"Select section"]),g(qi,ni)},$$slots:{default:!0}})});var Ks=Z(tr,2);T(Ks,()=>nd,(rs,Cs)=>{Cs(rs,{children:(qi,fi)=>{var ni=pe(),wn=w(ni);Mi(wn,17,()=>rn.filter(jn=>jn.id!=="shortcuts"),or,(jn,pn)=>{var Yn=pe(),In=w(Yn);T(In,()=>Bo,(bn,Nt)=>{Nt(bn,{get value(){return d(pn).id},children:(bt,Tt)=>{var at=le();oe(()=>ae(at,d(pn).label)),g(bt,at)},$$slots:{default:!0}})}),g(jn,Yn)}),g(qi,ni)},$$slots:{default:!0}})}),g(Pt,Hn)},$$slots:{default:!0}})});var Nn=Z(ze,2),Kt=k(Nn),oi=k(Kt);{var di=Le=>{var Yt=Met(),Pt=w(Yt);$fe(Pt,{onNavigate:wn=>{history.replaceState(null,"",`#${wn}`),wn==="notifications"?E0():b(Ee,wn,!0)}});var Kn=Z(Pt,2);T(Kn,()=>oo,(wn,jn)=>{jn(wn,{children:(pn,Yn)=>{var In=Js(),bn=w(In);T(bn,()=>Vo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=Js(),ut=w(dt);T(ut,()=>So,(Ht,An)=>{An(Ht,{class:"flex items-center gap-2",children:(Qn,Un)=>{var Yi=Cet(),vi=Z(w(Yi));T(vi,()=>H3,(gi,yi)=>{yi(gi,{children:(Ji,Qr)=>{var Gi=pe(),li=w(Gi);T(li,()=>fl,(zi,bs)=>{bs(zi,{children:(ys,sr)=>{var gr=Js(),fs=w(gr);T(fs,()=>yl,(Ei,Ci)=>{Ci(Ei,{children:(Ki,es)=>{k3(Ki,{class:"h-4 w-4 text-muted-foreground"})},$$slots:{default:!0}})});var hi=Z(fs,2);T(hi,()=>Il,(Ei,Ci)=>{Ci(Ei,{children:(Ki,es)=>{var ki=le("Accounts are stored on this device only and are not synced.");g(Ki,ki)},$$slots:{default:!0}})}),g(ys,gr)},$$slots:{default:!0}})}),g(Ji,Gi)},$$slots:{default:!0}})}),g(Qn,Yi)},$$slots:{default:!0}})});var Ct=Z(ut,2);T(Ct,()=>vl,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("Manage linked mailboxes and identities.");g(Qn,Yi)},$$slots:{default:!0}})}),g(at,dt)},$$slots:{default:!0}})});var Nt=Z(bn,2);T(Nt,()=>lo,(bt,Tt)=>{Tt(bt,{class:"space-y-3",children:(at,pt)=>{var dt=Js(),ut=w(dt);Mi(ut,1,r,or,(Ht,An)=>{var Qn=Net(),Un=k(Qn),Yi=k(Un);lW(Yi,{class:"h-5 w-5 text-muted-foreground"});var vi=Z(Yi,2),gi=k(vi),yi=Te(gi,!0),Ji=Z(gi,2),Qr=Te(Ji,!0),Gi=Z(Un,2);{var li=bs=>{rt(bs,{variant:"destructive",size:"sm",onclick:v0,children:(ys,sr)=>{var gr=le("Sign out");g(ys,gr)},$$slots:{default:!0}})},zi=bs=>{rt(bs,{variant:"ghost",size:"sm",onclick:()=>g2(d(An)),children:(ys,sr)=>{var gr=le("Switch to");g(ys,gr)},$$slots:{default:!0}})};O(Gi,bs=>{d(An).email===n()?bs(li):bs(zi,-1)})}oe(bs=>{_i(Qn,1,`flex items-center justify-between border border-border p-3 ${d(An).email===n()?"bg-primary/5":""}`),ae(yi,d(An).email),ae(Qr,bs)},[()=>d(An).email===n()?"Active account":`Added ${new Date(d(An).addedAt).toLocaleDateString()}`]),g(Ht,Qn)});var Ct=Z(ut,2);rt(Ct,{variant:"outline",class:"mt-4",onclick:()=>W()?.("/?add_account=true"),children:(Ht,An)=>{var Qn=wet(),Un=w(Qn);wp(Un,{class:"mr-2 h-4 w-4"}),g(Ht,Qn)},$$slots:{default:!0}}),g(at,dt)},$$slots:{default:!0}})}),g(pn,In)},$$slots:{default:!0}})});var Hn=Z(Kn,2),tr=k(Hn);{var Ks=wn=>{get(wn,{get toasts(){return G()},openExternal:f})},rs=q(()=>Cc||LA||!Na&&tqe());O(tr,wn=>{d(rs)&&wn(Ks)})}var Cs=Z(tr,2);T(Cs,()=>oo,(wn,jn)=>{jn(wn,{children:(pn,Yn)=>{var In=Js(),bn=w(In);T(bn,()=>Vo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=Js(),ut=w(dt);T(ut,()=>So,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("Notifications");g(Qn,Yi)},$$slots:{default:!0}})});var Ct=Z(ut,2);T(Ct,()=>vl,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("Choose which system notifications this app shows.");g(Qn,Yi)},$$slots:{default:!0}})}),g(at,dt)},$$slots:{default:!0}})});var Nt=Z(bn,2);T(Nt,()=>lo,(bt,Tt)=>{Tt(bt,{class:"space-y-4",children:(at,pt)=>{var dt=Yet(),ut=w(dt);Vet(ut,{get toasts(){return G()},get isTauri(){return Na}});var Ct=Z(ut,2),Ht=k(Ct);Rc(Ht,{onCheckedChange:Td,get checked(){return d(us)},set checked(An){b(us,An,!0)}}),g(at,dt)},$$slots:{default:!0}})}),g(pn,In)},$$slots:{default:!0}})}),bo(Hn,wn=>b(e0,wn),()=>d(e0));var qi=Z(Hn,2);T(qi,()=>oo,(wn,jn)=>{jn(wn,{children:(pn,Yn)=>{var In=Js(),bn=w(In);T(bn,()=>Vo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=pe(),ut=w(dt);T(ut,()=>So,(Ct,Ht)=>{Ht(Ct,{class:"flex items-center gap-2",children:(An,Qn)=>{var Un=_ne(),Yi=w(Un);hZ(Yi,{class:"h-5 w-5 text-destructive"}),g(An,Un)},$$slots:{default:!0}})}),g(at,dt)},$$slots:{default:!0}})});var Nt=Z(bn,2);T(Nt,()=>lo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=Eet(),ut=Z(w(dt),2);rt(ut,{variant:"destructive",onclick:()=>f(y),children:(Ct,Ht)=>{var An=_ne(),Qn=w(An);nW(Qn,{class:"mr-2 h-4 w-4"}),g(Ct,An)},$$slots:{default:!0}}),g(at,dt)},$$slots:{default:!0}})}),g(pn,In)},$$slots:{default:!0}})});var fi=Z(qi,2);{var ni=wn=>{var jn=pe(),pn=w(jn);T(pn,()=>oo,(Yn,In)=>{In(Yn,{children:(bn,Nt)=>{var bt=Js(),Tt=w(bt);T(Tt,()=>Vo,(pt,dt)=>{dt(pt,{children:(ut,Ct)=>{var Ht=pe(),An=w(Ht);T(An,()=>So,(Qn,Un)=>{Un(Qn,{children:(Yi,vi)=>{var gi=le("Storage");g(Yi,gi)},$$slots:{default:!0}})}),g(ut,Ht)},$$slots:{default:!0}})});var at=Z(Tt,2);T(at,()=>lo,(pt,dt)=>{dt(pt,{children:(ut,Ct)=>{var Ht=ket(),An=w(Ht),Qn=k(An),Un=Z(k(Qn),2),Yi=Te(Un),vi=Z(Qn,2),gi=Te(vi),yi=Z(vi,2),Ji=Te(yi),Qr=Z(An,2);{var Gi=li=>{rt(li,{variant:"outline",class:"mt-4",onclick:()=>f("https://forwardemail.net/my-account/billing"),children:(zi,bs)=>{var ys=le("Increase storage");g(zi,ys)},$$slots:{default:!0}})};O(Qr,li=>{V||li(Gi)})}oe((li,zi,bs,ys)=>{ae(Yi,`${li??""}%`),go(gi,`width: ${zi??""}%`),ae(Ji,`${bs??""} of ${ys??""}`)},[()=>vh(),()=>vh(),()=>sh(d(Os)),()=>sh(d(Ts))]),g(ut,Ht)},$$slots:{default:!0}})}),g(bn,bt)},$$slots:{default:!0}})}),g(wn,jn)};O(fi,wn=>{d(Ts)>0&&wn(ni)})}g(Le,Yt)};O(oi,Le=>{d(Ee)==="general"&&Le(di)})}var Qi=Z(oi,2);{var se=Le=>{var Yt=qne(),Pt=w(Yt);T(Pt,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Theme");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-3",children:(bt,Tt)=>{var at=vet(),pt=k(at),dt=k(pt);dt.value=dt.__value="system";var ut=Z(pt,2),Ct=k(ut);Ct.value=Ct.__value="light";var Ht=Z(ut,2),An=k(Ht);An.value=An.__value="dark",Xe("change",dt,oc),gx(c,[],dt,()=>d(ce),Qn=>b(ce,Qn)),Xe("change",Ct,oc),gx(c,[],Ct,()=>d(ce),Qn=>b(ce,Qn)),Xe("change",An,oc),gx(c,[],An,()=>d(ce),Qn=>b(ce,Qn)),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Kn=Z(Pt,2);T(Kn,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Layout");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-3",children:(bt,Tt)=>{var at=Bet(),pt=w(at),dt=k(pt),ut=k(dt);ut.value=ut.__value="full";var Ct=Z(dt,2),Ht=k(Ct);Ht.value=Ht.__value="classic",Xe("change",ut,wd),gx(u,[],ut,()=>d(ke),An=>b(ke,An)),Xe("change",Ht,wd),gx(u,[],Ht,()=>d(ke),An=>b(ke,An)),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Hn=Z(Kn,2);T(Hn,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Density");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-3",children:(bt,Tt)=>{var at=Xet(),pt=w(at),dt=k(pt),ut=k(dt);ut.value=ut.__value="compact";var Ct=Z(dt,2),Ht=k(Ct);Ht.value=Ht.__value="comfortable",Xe("change",ut,ho),gx(h,[],ut,()=>d(J),An=>b(J,An)),Xe("change",Ht,ho),gx(h,[],Ht,()=>d(J),An=>b(J,An)),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var tr=Z(Hn,2);T(tr,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Composer defaults");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-4",children:(bt,Tt)=>{var at=Ret(),pt=w(at),dt=k(pt);Rc(dt,{onCheckedChange:lp,get checked(){return d(ge)},set checked(yi){b(ge,yi,!0)}});var ut=Z(pt,4),Ct=k(ut);Rc(Ct,{onCheckedChange:i0,get checked(){return d(Ye)},set checked(yi){b(Ye,yi,!0)}});var Ht=Z(ut,4),An=k(Ht);Rc(An,{onCheckedChange:vm,get checked(){return d(fe)},set checked(yi){b(fe,yi,!0)}});var Qn=Z(Ht,4),Un=k(Qn);Rc(Un,{onCheckedChange:Pp,get checked(){return d(Be)},set checked(yi){b(Be,yi,!0)}});var Yi=Z(Qn,4),vi=k(Yi);Ns(vi,{for:"undo-send-select",children:(yi,Ji)=>{var Qr=le("Undo send");g(yi,Qr)},$$slots:{default:!0}});var gi=Z(vi,2);T(gi,()=>td,(yi,Ji)=>{Ji(yi,{type:"single",onValueChange:Mu,get value(){return d(Zt)},set value(Qr){b(Zt,Qr,!0)},children:(Qr,Gi)=>{var li=Js(),zi=w(li);T(zi,()=>id,(ys,sr)=>{sr(ys,{id:"undo-send-select",class:"w-full",children:(gr,fs)=>{var hi=le();oe(Ei=>ae(hi,Ei),[()=>d(Zt)==="0"?"Off":`${Number(d(Zt))/1e3} seconds`]),g(gr,hi)},$$slots:{default:!0}})});var bs=Z(zi,2);T(bs,()=>nd,(ys,sr)=>{sr(ys,{children:(gr,fs)=>{var hi=$ne(),Ei=w(hi);T(Ei,()=>Bo,(ki,is)=>{is(ki,{value:"0",children:(xs,as)=>{var yr=le("Off");g(xs,yr)},$$slots:{default:!0}})});var Ci=Z(Ei,2);T(Ci,()=>Bo,(ki,is)=>{is(ki,{value:"5000",children:(xs,as)=>{var yr=le("5 seconds");g(xs,yr)},$$slots:{default:!0}})});var Ki=Z(Ci,2);T(Ki,()=>Bo,(ki,is)=>{is(ki,{value:"10000",children:(xs,as)=>{var yr=le("10 seconds");g(xs,yr)},$$slots:{default:!0}})});var es=Z(Ki,2);T(es,()=>Bo,(ki,is)=>{is(ki,{value:"30000",children:(xs,as)=>{var yr=le("30 seconds");g(xs,yr)},$$slots:{default:!0}})}),g(gr,hi)},$$slots:{default:!0}})}),g(Qr,li)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Ks=Z(tr,2);T(Ks,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=Js(),pt=w(at);T(pt,()=>So,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Signature");g(Ht,Qn)},$$slots:{default:!0}})});var dt=Z(pt,2);T(dt,()=>vl,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Added to new messages, replies, and forwards. Stored on this device.");g(Ht,Qn)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-4",children:(bt,Tt)=>{var at=Fet(),pt=w(at),dt=k(pt);Rc(dt,{onCheckedChange:pu,get checked(){return d(Ne)},set checked(An){b(Ne,An,!0)}});var ut=Z(pt,2),Ct=k(ut);Ns(Ct,{for:"signature-textarea",children:(An,Qn)=>{var Un=le("Signature");g(An,Un)},$$slots:{default:!0}});var Ht=Z(Ct,2);y7e(Ht,{get html(){return d(ot)},get text(){return d(qe)},onChange:M0}),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var rs=Z(Ks,2);T(rs,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=Js(),pt=w(at);T(pt,()=>So,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Font");g(Ht,Qn)},$$slots:{default:!0}})});var dt=Z(pt,2);T(dt,()=>vl,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Choose a custom font for better readability. System default is fastest.");g(Ht,Qn)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-4",children:(bt,Tt)=>{var at=Let(),pt=w(at),dt=k(pt);Ns(dt,{for:"font-select",children:(Un,Yi)=>{var vi=le("Typeface");g(Un,vi)},$$slots:{default:!0}});var ut=Z(dt,2);T(ut,()=>td,(Un,Yi)=>{Yi(Un,{type:"single",onValueChange:()=>Ea(),get value(){return d(Re)},set value(vi){b(Re,vi,!0)},children:(vi,gi)=>{var yi=Js(),Ji=w(yi);T(Ji,()=>id,(Gi,li)=>{li(Gi,{class:"w-full",get style(){return`font-family: ${d(Oe)??""}`},children:(zi,bs)=>{var ys=le();oe(sr=>ae(ys,sr),[()=>d($e).find(sr=>sr.key===d(Re))?.name||"System Default"]),g(zi,ys)},$$slots:{default:!0}})});var Qr=Z(Ji,2);T(Qr,()=>nd,(Gi,li)=>{li(Gi,{children:(zi,bs)=>{var ys=pe(),sr=w(ys);Mi(sr,17,()=>d($e),or,(gr,fs)=>{var hi=pe(),Ei=w(hi);T(Ei,()=>Bo,(Ci,Ki)=>{Ki(Ci,{get value(){return d(fs).key},children:(es,ki)=>{var is=le();oe(()=>ae(is,d(fs).name)),g(es,is)},$$slots:{default:!0}})}),g(gr,hi)}),g(zi,ys)},$$slots:{default:!0}})}),g(vi,yi)},$$slots:{default:!0}})});var Ct=Z(pt,2);{var Ht=Un=>{var Yi=Tet();g(Un,Yi)};O(Ct,Un=>{d(je)&&Un(Ht)})}var An=Z(Ct,2);{var Qn=Un=>{var Yi=Uet();oe(()=>go(Yi,`font-family: ${d(Oe)??""}`)),g(Un,Yi)};O(An,Un=>{d(Re)!=="system"&&Un(Qn)})}g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Cs=Z(rs,2);{var qi=fi=>{var ni=pe(),wn=w(ni);T(wn,()=>oo,(jn,pn)=>{pn(jn,{children:(Yn,In)=>{var bn=Js(),Nt=w(bn);T(Nt,()=>Vo,(Tt,at)=>{at(Tt,{children:(pt,dt)=>{var ut=Js(),Ct=w(ut);T(Ct,()=>So,(An,Qn)=>{Qn(An,{children:(Un,Yi)=>{var vi=le("External Links");g(Un,vi)},$$slots:{default:!0}})});var Ht=Z(Ct,2);T(Ht,()=>vl,(An,Qn)=>{Qn(An,{children:(Un,Yi)=>{var vi=le(`On Windows, you can choose a browser command for web links opened from the desktop
2351
+ below.</div>`),Ftt=R('<p class="text-xs text-muted-foreground">Open the DMG and drag Forward Email to your Applications folder.</p>'),Ttt=R('<p class="text-xs text-muted-foreground">Run the installer and follow the prompts. Windows may ask you to confirm.</p>'),Utt=R('<p class="text-xs text-muted-foreground">Make the AppImage executable (<code>chmod +x</code>) and run it, or install the <code>.deb</code> / <code>.rpm</code> with your package manager.</p>'),Ltt=R('<span class="text-xs text-muted-foreground"> </span>'),Dtt=R('<li><a target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline"> </a> <!></li>'),Qtt=R('<div><div class="mb-1 text-xs font-semibold uppercase text-muted-foreground"> </div> <ul class="space-y-1 text-sm"></ul></div>'),Jtt=R('<div class="space-y-3 border-t border-border pt-3"><!> <div class="pt-1 text-xs"><a target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">View full release notes on GitHub →</a></div></div>'),ztt=R('<!> <!> <button type="button" class="flex items-center gap-1 text-xs text-fg-link hover:underline"><!> </button> <!>',1),Ktt=R("<!> Send Feedback",1),Htt=R('<ul class="list-inside list-disc space-y-1 text-sm"><li><a href="https://forwardemail.net/faq" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">FAQ</a></li> <li><a href="https://forwardemail.net/guides" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Guides</a></li> <li><a href="https://forwardemail.net/help" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Help & Support</a></li> <li><a href="https://forwardemail.net/email-api" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Email API Documentation</a></li> <li><a href="https://forwardemail.net/privacy" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Privacy Policy</a></li></ul>'),jtt=R('<ul class="list-inside list-disc space-y-1 text-sm"><li><a href="https://github.com/forwardemail" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">GitHub</a></li> <li><a href="https://matrix.to/#/#forward-email:matrix.org" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">Matrix Chat</a></li> <li><a href="https://x.com/fwdemail" target="_blank" rel="noopener noreferrer" class="text-fg-link hover:underline">X (Twitter)</a></li></ul>'),Ott=R('<span class="ml-2 text-xs text-muted-foreground"> </span>'),Ptt=R('<div><strong>App Version:</strong> </div> <div><strong>Database Schema:</strong> </div> <div class="pt-2"><!> <!></div> <div class="pt-2"><button type="button" class="text-fg-link hover:underline">Run diagnostics</button></div>',1),_tt=R('<div class="flex h-14 items-center gap-3 px-4" style="padding-top:env(safe-area-inset-top,0px);box-sizing:content-box" data-testid="settings-header"><!> <div class="flex flex-col"><h1 class="text-lg font-semibold">Settings</h1> <span class="text-xs text-muted-foreground"> </span></div></div> <!> <!> <div class="flex min-h-0 flex-col md:flex-row" style="height: calc(100dvh - 3.5rem - var(--sai-top));"><aside class="hidden w-56 shrink-0 border-r border-border p-4 md:block"><nav class="flex flex-col gap-1"></nav></aside> <div class="w-full md:hidden"><div class="border-b border-border p-4"><!></div></div> <div class="fe-mobile-page-scroll flex-1 overflow-y-auto p-4 md:p-6"><div class="mx-auto max-w-4xl space-y-6"><!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div></div></div> <!> <!> <!> <!>',1);function $tt(t,e){lt(e,!0);const n=()=>lr(sp,"$currentAccount",o),i=()=>lr(Bi,"$settingsLabelsStore",o),s=()=>lr(Bn,"$availableLabelsStore",o),r=()=>lr(bG,"$accounts",o),a=()=>lr(Y(),"$active",o),[o,l]=$f(),c=[],u=[],h=[],{health:m}=xl.state,{checkHealth:p,rebuildFromCache:A}=xl.actions,f=async Le=>{try{await C5(Le,{log:(...Yt)=>console.warn("[Settings]",...Yt)})}catch(Yt){console.warn("[Settings] opener failed:",Yt)}},y="https://forwardemail.net/my-account/security",{folders:I}=Sn.state,{loadFolders:x}=Sn.actions,V=YW();let W=We(e,"navigate",3,()=>{}),Y=We(e,"active",19,()=>t5(!0)),E=We(e,"rebuildIndex",3,async()=>{}),C=We(e,"toggleBodyIndexing",3,()=>{}),G=We(e,"toasts",3,null),N=We(e,"applyTheme",3,()=>{}),B=We(e,"applyFont",3,()=>{}),F=We(e,"applyDensity",3,()=>{});const H=Le=>Le&&typeof Le.subscribe=="function"?Le:t5(Le??0),U=H(e.storageUsed),_=H(e.storageTotal),j=H(e.localUsage),D=H(e.localQuota),P=H(e.syncPending),te=H(II),ne=H(e.indexCount),z=H(e.indexSize),ie=H(e.bodyIndexingEnabled),ue=H(G0e);let be=$(""),ce=$("system"),ke=$("full"),J=$("compact"),Ee=$("general"),ge=$(!1),Ye=$(!1),fe=$(!1),Be=$(!1),Ne=$(!1),qe=$(""),ot=$(""),It=null,Zt=$("0"),Rn=$(""),nn=$(""),tt=$(""),xn=$(""),Wt=$(""),Gn=$(br([])),Ot=$(br([])),vn=$(""),Me=$(""),St=$(""),dn=$(!0),un=$(!1),Dn=$(!1),Vn=$(br([])),$n=$(!1),ti=$(!1),Tn=$(""),Wi=$(""),qn=$(""),tn=$(!1),ei=$(""),us=$(!0),$i=$(!0),ye=$(!1),Ge=$(!1),Ce=$(!0),Re=$("system"),je=$(!1),$e=$(br([])),Oe=$("system-ui, -apple-system, sans-serif"),xt=$("");const yn=B8();let gt=$(-1),en=$(""),Cn=$(""),Pn,Dt=$(br(uJ)),ci=$(br("0.14.25")),et=$(0),ht=$(br([])),mi=$(null);typeof navigator<"u"&&navigator.platform.toUpperCase().includes("MAC");const As=(Le=[])=>{const Yt=new Set,Pt=[];return(Le||[]).forEach(Kn=>{const Hn=Kn?.path||Kn?.name||Kn?.fullName||Kn?.fullname;!Hn||Yt.has(Hn)||(Yt.add(Hn),Pt.push(Hn))}),Pt};let gs=$(null),er=$(null),ai=$(!1),Rs=$(!1),hs=$(!1),Vs=$(""),kr="",ta=$(!1),Ko=$(br({}));const Cr=["theme","layout_mode","compose_plain_default"],Ss=()=>d(St)||Dc()||Se.get("email")||"default",ua=()=>{const Le=Ss();b(Ko,Cr.reduce((Yt,Pt)=>(Yt[Pt]=vj(Pt,Le),Yt),{}),!0)},Bi=H(uu),Bn=H(Gb);let zn=$(!1),ms=$(""),Fs=$(""),He=$(!1);const Ut=AG;let kn=0,En=$(!1),Wn=$(!1),mn=$(""),Xn=$("create"),si=$(""),ri=$(""),wi=$(""),Os=$(0),Ts=$(0),Di=$(0),zs=$(0),Hi=$(0),ts=$(br({})),ir=$(0),Ii=$(0),Vi=$(br({healthy:!0,messagesCount:0,indexCount:0,divergence:0,needsRebuild:!1})),mr=$(!1),jr=$(!1),Er=$(null),xa=$(!1),Ri=$("");const tl="https://github.com/forwardemail/mail.forwardemail.net/releases/latest";let Ho=$(null),No=$(null),Ja=$(null),ii=$(br({mac:[],windows:[],linux:[]})),De=$(!1),vt=$(""),Zn=$(!1);Hr(()=>{if(d(Ee)!=="help"){b(vt,"");return}Do||d(Ho)||d(De)||d(vt)||(b(De,!0),b(vt,""),(async()=>{try{const[Le,Yt]=await Promise.all([s$e(),r$e()]);b(Ho,Le,!0),b(No,Yt,!0),b(ii,d$e(Le.assets),!0),b(Ja,c$e(Le.assets,Yt),!0)}catch(Le){b(vt,Le instanceof Error?Le.message:"Failed to fetch the latest release",!0),console.warn("[Settings] Desktop release fetch failed:",Le)}finally{b(De,!1)}})())});async function ji(){b(xa,!0),b(Ri,"");let Le="0.14.25";if(Na)try{const{getAppVersion:Yt}=await Promise.resolve().then(()=>VZ),Pt=await Yt();Pt&&(Le=Pt,b(ci,Pt,!0))}catch{}try{const Yt=globalThis.__forwardemailCheckForUpdates;if(typeof Yt=="function"){const Pt=await Yt();b(Ri,Pt.message,!0)}else if(typeof window.__checkForWebUpdates=="function"){const Pt=await window.__checkForWebUpdates();Pt.upToDate&&b(Ri,`You're on the latest version (v${Pt.currentVersion||Pt.latestVersion})`)}else try{const{checkForUpdates:Pt,downloadAndInstall:Kn}=await Promise.resolve().then(()=>Iye),Hn=await Pt({force:!0});if(Hn?.available){b(Ri,`Update available: v${Hn.version}. Downloading…`);try{await Kn(Hn,({downloaded:tr,contentLength:Ks})=>{if(Ks){const rs=Math.floor(tr/Ks*100);b(Ri,`Downloading v${Hn.version}… ${rs}%`)}}),b(Ri,`Update v${Hn.version} installed. Restarting…`)}catch(tr){b(Ri,tr instanceof Error?tr.message:"Update failed to install",!0)}}else Le?b(Ri,`You're on the latest version (v${Le})`):b(Ri,"You're on the latest version")}catch{b(Ri,"Could not check for updates")}}catch{b(Ri,"Could not check for updates")}finally{b(xa,!1)}}let Zi=$(br([])),Gs=$(""),xr=$(""),Fr=$(!1),Ta=$(""),ga=$(!1);const Wl=[{label:"from:alice",note:"Filter sender"},{label:"to:bob",note:"Filter recipient (to/cc/bcc)"},{label:"subject:invoice",note:"Subject contains"},{label:"has:attachment",note:"Only messages with attachments"},{label:"is:unread",note:"Unread only (is:read also works)"},{label:"label:work",note:"Filter by label"},{label:"in:all",note:"Search across folders"},{label:"before:2024-01-01",note:"Date filters (after/on supported)"},{label:"size:>5MB",note:"Size filters (>, <, >=, <=)"},{label:'"exact phrase"',note:"Quotes for phrase search"},{label:"(from:alice AND has:attachment)",note:"Use AND/OR/NOT and parentheses"}];let Or=$(!1);const qd=new Set(["general","appearance","privacy","folders","filters","search","advanced","shortcuts","help"]),sh=(Le=0)=>{if(!Le)return"0 GB";const Yt=Le/1024/1024/1024;if(Yt>=1)return`${Yt>=10?Math.round(Yt):Math.round(Yt*10)/10} GB`;const Pt=Le/1024/1024;return`${Math.round(Pt)} MB`},vh=()=>d(Ts)?Math.min(100,Math.round(d(Os)/d(Ts)*100)):0;let El=[],e0=$(null);const E0=async()=>{b(Ee,"general"),await ph(),d(e0)?.scrollIntoView({behavior:"smooth",block:"start"})};_d(()=>{Na&&Promise.resolve().then(()=>VZ).then(({getAppVersion:Yt})=>Yt()).then(Yt=>{Yt&&b(ci,Yt,!0)}).catch(()=>{}),k0(),K(),pd();const Le=window.location.hash?.slice(1)||"";Le==="security"||Le==="accounts"?b(Ee,"privacy"):Le==="notifications"?E0():qd.has(Le)&&b(Ee,Le,!0),El=[sp.subscribe(Yt=>{b(St,Yt||"",!0),b(Me,d(St)||Dc(),!0),md(),k0(),x().catch(()=>{}),Yt&&Yt!==kr&&(kr=Yt,e3(Yt))}),uG.subscribe(Yt=>{d(ta)||b(Vs,Yt||"",!0)}),I.subscribe(Yt=>{const Pt=Yt||[];b(Gn,As(Pt),!0),b(Ot,Pt.filter(Kn=>Kn?.path&&!Sn.actions.isSystemFolder?.(Kn.path)).map(Kn=>({path:Kn.path,label:Kn.name||Kn.fullName||Kn.fullname||Kn.path||"",count:typeof Kn.totalCount=="number"?Kn.totalCount:Kn.count??null})),!0)}),q9.subscribe(Yt=>{b(ce,Yt||"system",!0),N()?.(d(ce))}),qh.subscribe(()=>{ua()}),xl.state.savedSearches.subscribe(Yt=>{b(Zi,Yt||[],!0)}),U.subscribe(Yt=>b(Os,Yt||0,!0)),_.subscribe(Yt=>b(Ts,Yt||0,!0)),j.subscribe(Yt=>b(Di,Yt||0,!0)),D.subscribe(Yt=>b(zs,Yt||0,!0)),P.subscribe(Yt=>b(Hi,Yt||0,!0)),te.subscribe(Yt=>b(ts,Yt||{},!0)),ne.subscribe(Yt=>b(ir,Yt||0,!0)),z.subscribe(Yt=>b(Ii,Yt||0,!0)),ie.subscribe(Yt=>b(dn,!!Yt)),ue.subscribe(Yt=>b(ke,Yt||"full",!0)),m.subscribe(Yt=>b(Vi,Yt||d(Vi),!0)),kue.subscribe(Yt=>b(Ye,!!Yt))]}),XA(()=>{ku(),El.forEach(Le=>Le?.())});const k0=async()=>{b(en,""),b(Cn,""),await Xue();const Le=Ss();b(be,Se.get("api_key")||"",!0),b(ce,da("theme",{account:Le})||"system",!0),b(ke,da("layout_mode",{account:Le})||"full",!0),b(J,da("list_density",{account:Le})||"compact",!0),b(ge,!!da("compose_plain_default",{account:Le}),!0),b(fe,!!da("default_reply_all",{account:Le}),!0),b(Be,!!da("send_and_archive_default",{account:Le}),!0);const Yt=YS.getSignature();b(Ne,Yt.enabled,!0),b(qe,Yt.text,!0),b(ot,Yt.html,!0),b(Zt,String(da("undo_send_delay",{account:Le})||0),!0),b(Rn,da("archive_folder",{account:Le})||"",!0),b(nn,da("sent_folder",{account:Le})||"",!0),b(tt,da("drafts_folder",{account:Le})||"",!0),b(xn,da("trash_folder",{account:Le})||"",!0),b(Wt,da("junk_folder",{account:Le})||"",!0),b(dn,!!da("search_body_indexing",{account:Le}),!0),b(Me,Dc(),!0),b(hs,Se.get("debug_perf")==="1");try{const Pt=`pgp_keys_${Le}`,Kn=Se.get(Pt);b(Vn,Kn?JSON.parse(Kn):[],!0)}catch{b(Vn,[],!0)}if(b(tn,!!da("block_remote_images",{account:Le}),!0),b(ei,String(da("spam_report_address",{account:Le})||"").trim()||kx,!0),b(us,da("notify_app_updates")!==!1),b($i,!!da("block_tracking_pixels",{account:Le}),!0),b(ye,!!da("view_plain_text",{account:Le}),!0),b(Ge,!!da("hide_completed_todos",{account:Le}),!0),b(Ce,!!da("start_week_on_sunday",{account:Le}),!0),b(Re,da("font",{account:Le})||"system",!0),b(Oe,fK(d(Re)),!0),b($e,dfe(),!0),b(xt,(da("external_browser_override",{account:Le})||"").trim(),!0),d(Re)!=="system"&&(b(je,!0),bK(d(Re)).then(Pt=>{b(Oe,Pt,!0),B()(Pt)}).catch(Pt=>{console.error("Failed to load saved font:",Pt),b(Re,"system")}).finally(()=>{b(je,!1)})),b(ti,!1),b(Tn,""),b(Wi,""),b(gt,-1),b(Ee,d(Ee)||"general",!0),ua(),await pO(),Se.get("alias_auth")||Se.get("api_key")||Se.get("authToken"))try{await xl.actions.ensureInitialized(),await xl.actions.refreshSavedSearches()}catch(Pt){console.warn("Failed to init search store",Pt)}await md()},Dc=()=>{const Le=Se.get("alias_auth")||"";return Le.includes(":")?Le.split(":")[0]:Se.get("email")||Le||""},hd=()=>{b(en,""),b(Cn,""),Pn&&(clearTimeout(Pn),Pn=void 0)},yc=Le=>{hd(),b(Cn,Le,!0),Pn=setTimeout(()=>{b(Cn,"")},4e3)},Yu=async()=>{if(hd(),!d(Gs).trim()||!d(xr).trim()){Jo("Please enter both a name and query.");return}b(Fr,!0);try{await xl.actions.saveSearch(d(Gs).trim(),d(xr).trim()),await xl.actions.refreshSavedSearches(),b(Gs,""),b(xr,""),yc("Saved search added.")}catch(Le){Jo(Le?.message||"Failed to save search.")}finally{b(Fr,!1)}},t0=async Le=>{if(Le){b(Ta,Le,!0);try{await xl.actions.deleteSavedSearch(Le),await xl.actions.refreshSavedSearches(),yc("Saved search deleted.")}catch(Yt){Jo(Yt?.message||"Failed to delete saved search.")}finally{b(Ta,"")}}},Jo=Le=>{hd(),b(en,Le,!0),Pn=setTimeout(()=>{b(en,"")},5e3)},Xa=(Le,Yt)=>{Xl(Le)||Jo(Le?.message||Yt)},no=(Le,Yt)=>{Xl(Le)||G()?.show?.(Le?.message||Yt,"error")},dl=Le=>Le?.keyword||Le?.id||Le?.name,Cd=()=>{const Le=whe(kn,Ut);return kn+=1,Le},Nd=q(()=>(i()||[]).filter(Le=>dl(Le))),Bh=q(()=>{const Le=new Set(d(Nd).map(Yt=>z0(dl(Yt))));return(s()||[]).filter(Yt=>Yt?.discovered&&Yt?.id&&!Le.has(z0(Yt.id))).sort((Yt,Pt)=>Yt.id.localeCompare(Pt.id))}),md=async()=>{b(zn,!0);try{await SZ()}catch(Le){Jo(Le?.message||"Failed to load labels.")}finally{b(zn,!1)}},Ic=()=>{b(Xn,"create"),b(si,""),b(ri,""),b(wi,Cd(),!0),b(mn,""),b(En,!0)},Qc=Le=>{const Yt=dl(Le);Yt&&(b(Xn,"edit"),b(si,Yt,!0),b(ri,Le?.name||Yt,!0),b(wi,Le?.color||"",!0),b(mn,""),b(En,!0))},rh=Le=>{Le?.id&&(b(Xn,"adopt"),b(si,Le.id,!0),b(ri,Le.id,!0),b(wi,Le.color||Cd(),!0),b(mn,""),b(En,!0))},n0=()=>{b(En,!1),b(mn,"")},wc=()=>{d(mn)&&b(mn,"")},wo=async()=>{const Le=(d(ri)||"").trim(),Yt=WZ(Le);if(!Yt.ok){b(mn,Yt.error,!0);return}b(Wn,!0),b(mn,"");try{if(d(Xn)==="edit"){const Pt=await cRe(d(si),{name:Yt.value,color:(d(wi)||"").trim()||void 0});if(!Pt?.success){if(Pt?.blocked)return;b(mn,Pt?.error||"Failed to update label.",!0);return}}else if(d(Xn)==="adopt"){const Pt=await iee(d(si),{name:Yt.value,color:(d(wi)||"").trim()||void 0});if(!Pt?.success){if(Pt?.blocked)return;b(mn,Pt?.error||"Failed to add label.",!0);return}}else{const Pt=await J0e(Yt.value,(d(wi)||"").trim()||void 0);if(!Pt?.success){if(Pt?.blocked)return;b(mn,Pt?.error||"Failed to create label.",!0);return}}n0()}catch(Pt){Xl(Pt)||b(mn,Pt?.message||"Unable to save label.",!0)}finally{b(Wn,!1)}},Eu=async Le=>{const Yt=dl(Le);if(!Yt)return;const Pt=Le?.name||Yt;if(confirm(`Delete label "${Pt}"?`)){b(ms,Yt,!0);try{const Kn=await dRe(Yt);if(!Kn?.success){if(Kn?.blocked)return;Jo(Kn?.error||"Failed to delete label.");return}}catch(Kn){Xa(Kn,"Failed to delete label.")}finally{b(ms,"")}}},zu=async()=>{const Le=d(Bh).slice();if(!Le.length)return;b(He,!0);let Yt=0;try{for(const Pt of Le){const Kn=await iee(Pt.id,{name:Pt.id,color:Pt.color,reload:!1});if(Kn?.blocked)return;Kn?.success&&(Yt+=1)}await SZ(),Yt&&yc(Yt===1?"Added 1 label.":`Added ${Yt} labels.`)}catch(Pt){Xa(Pt,"Failed to add labels.")}finally{b(He,!1)}},Xh=async Le=>{const Yt=Le?.id;if(Yt&&confirm(`Remove "${Yt}" from every message that carries it? Other clients or the API can add it again later.`)){b(Fs,Yt,!0);try{const Pt=await hRe(Yt);!Pt?.success&&Pt?.error&&Jo(Pt.error)}catch(Pt){Xa(Pt,"Failed to remove label.")}finally{b(Fs,"")}}},km=async Le=>{if(!Le?.path)return;const Yt=Le.count??0,Pt=Yt>0?`Delete "${Le.label}" and its ${Yt} message${Yt===1?"":"s"}? This cannot be undone.`:`Delete "${Le.label}"? This cannot be undone.`;if(confirm(Pt)){b(vn,Le.path,!0);try{await Sn.actions.deleteFolder?.(Le.path),yc("Folder deleted.")}catch(Kn){Xa(Kn,"Failed to delete folder.")}finally{b(vn,"")}}},pd=async()=>{try{const Le=await tde();if(Le){b(Dt,Le.version??uJ,!0);const Yt=Object.values(Le.counts||{}).reduce((Pt,Kn)=>Pt+Kn,0);b(et,Yt,!0)}}catch(Le){console.warn("Failed to load database info:",Le)}},eu=()=>{b(hs,!d(hs)),Se.set("debug_perf",d(hs)?"1":"0"),d(hs)&&Zde(),G()?.show?.(d(hs)?"Performance tracing enabled":"Performance tracing disabled","info")},oc=async()=>{try{await Bc("theme",d(ce),{account:Ss()}),N()?.(d(ce)),G()?.show?.("Theme updated","success")}catch(Le){no(Le,"Failed to save theme")}},ho=async()=>{try{await Bc("list_density",d(J),{account:Ss()}),F()?.(d(J)),G()?.show?.("Density updated","success")}catch(Le){no(Le,"Failed to save density")}},wd=async()=>{try{await C0e?.(d(ke)),G()?.show?.("Layout updated","success")}catch(Le){no(Le,"Failed to save layout")}},Ea=async()=>{b(je,!0);try{const Le=d(St)||Dc()||Se.get("email")||"",Yt=await bK(d(Re));b(Oe,Yt,!0),await Bc("font",d(Re),{account:Le}),B()(Yt),G()?.show?.("Font updated","success")}catch(Le){no(Le,"Failed to load font"),b(Re,"system"),b(Oe,fK("system"),!0),B()(d(Oe))}finally{b(je,!1)}},lc=async()=>{const Le=d(xt).trim();try{await Bc("external_browser_override",Le,{account:Ss()}),b(xt,Le,!0),G()?.show?.(Le?"External browser override saved":"External links will use the system default browser","success")}catch(Yt){no(Yt,"Failed to save browser override")}},Ku=async()=>{b(xt,""),await lc()},Mm=async()=>{const Le=d(ei).trim();if(!ehe(Le)){G()?.show?.("Enter a valid email address for spam reports","error");return}try{await Bc("spam_report_address",Le===kx?"":Le,{account:Ss()}),b(ei,Le,!0),G()?.show?.(`Spam reports will be sent to ${Le}`,"success")}catch(Yt){no(Yt,"Failed to save spam report address")}},tu=async()=>{b(ei,kx,!0),await Mm()},pu=()=>{YS.setSignature({enabled:d(Ne)}),G()?.show?.(`Signature ${d(Ne)?"enabled":"disabled"}`,"success")};let Yd=null;const ku=()=>{It&&clearTimeout(It),It=null;const Le=Yd;Yd=null,Le?.()},M0=Le=>{b(ot,Le.html,!0),b(qe,Le.text,!0);const Yt=Ss();It&&clearTimeout(It),Yd=()=>YS.setSignature({html:Le.html,text:Le.text},Yt),It=setTimeout(()=>{ku(),G()?.show?.("Signature saved","success")},600)},Mu=async()=>{try{await Bc("undo_send_delay",Number(d(Zt))||0,{account:Ss()}),G()?.show?.("Undo send updated","success")}catch(Le){no(Le,"Failed to save undo send")}},lp=async()=>{try{await Bc("compose_plain_default",d(ge),{account:Ss()}),G()?.show?.("Composer default updated","success")}catch(Le){no(Le,"Failed to save composer default")}},i0=async()=>{try{await Rue.setAttachmentReminder(d(Ye)),G()?.show?.(d(Ye)?"Attachment reminder enabled":"Attachment reminder disabled","success")}catch(Le){no(Le,"Failed to save attachment reminder setting")}},vm=async()=>{try{await Bc("default_reply_all",d(fe),{account:Ss()}),G()?.show?.(d(fe)?"Reply All set as default":"Reply set as default","success")}catch(Le){no(Le,"Failed to save reply default")}},Pp=async()=>{try{await Bc("send_and_archive_default",d(Be),{account:Ss()}),G()?.show?.(d(Be)?"Send & Archive set as default":"Send set as default","success")}catch(Le){no(Le,"Failed to save send default")}},Td=()=>{try{Bc("notify_app_updates",d(us),{account:Ss()}),G()?.show?.(d(us)?"You will be notified when the app updates":"App update notifications turned off","success")}catch(Le){no(Le,"Failed to update notification setting")}},Jc=()=>{try{Bc("block_remote_images",d(tn),{account:Ss()}),G()?.show?.(d(tn)?"Remote images will be blocked for privacy":"Remote images will load automatically","success")}catch(Le){no(Le,"Failed to update image blocking setting")}},QA=()=>{try{Bc("block_tracking_pixels",d($i),{account:Ss()}),G()?.show?.(d($i)?"Tracking pixels will be blocked":"Tracking pixels will load (not recommended)","success")}catch(Le){no(Le,"Failed to update tracking pixel setting")}},nm=()=>{try{Bc("view_plain_text",d(ye),{account:Ss()}),G()?.show?.(d(ye)?"Emails will render as plain text":"Emails will render with formatting","success")}catch(Le){no(Le,"Failed to update plain text setting")}},cp=()=>{try{Bc("hide_completed_todos",d(Ge),{account:Ss()}),G()?.show?.(d(Ge)?"Completed todos will be hidden in the calendar":"Completed todos will be shown in the calendar","success")}catch(Le){no(Le,"Failed to update completed todos setting")}},_p=()=>{try{Bc("start_week_on_sunday",d(Ce),{account:Ss()}),G()?.show?.(d(Ce)?"Week now starts on Sunday":"Week now starts on Monday","success")}catch(Le){no(Le,"Failed to update week start setting")}},Ud=async()=>{try{await Bc("archive_folder",d(Rn)||null,{account:Ss()}),G()?.show?.("Archive folder updated","success")}catch(Le){no(Le,"Failed to save archive folder")}},Fg=async()=>{try{await Bc("sent_folder",d(nn)||null,{account:Ss()}),G()?.show?.("Sent folder updated","success")}catch(Le){no(Le,"Failed to save sent folder")}},s0=async()=>{try{await Bc("drafts_folder",d(tt)||null,{account:Ss()}),G()?.show?.("Drafts folder updated","success")}catch(Le){no(Le,"Failed to save drafts folder")}},jo=async()=>{try{await Bc("trash_folder",d(xn)||null,{account:Ss()}),G()?.show?.("Trash folder updated","success")}catch(Le){no(Le,"Failed to save trash folder")}},dp=async()=>{try{await Bc("junk_folder",d(Wt)||null,{account:Ss()}),G()?.show?.("Junk folder updated","success")}catch(Le){no(Le,"Failed to save junk folder")}},ul=()=>{const Le=d(Ee);k0(),b(Ee,Le||"general",!0)},Hu=()=>{b(ti,!0),b(gt,-1),b(Tn,""),b(Wi,""),b(qn,"")},Bm=Le=>{const Yt=d(Vn).indexOf(Le);Yt!==-1&&(b(ti,!0),b(gt,Yt,!0),b(Tn,Le.name||"",!0),b(Wi,Le.value||"",!0),b(qn,""))},r0=()=>{try{const Le=d(St)||Dc()||Se.get("email")||"",Yt=Se.get(`pgp_passphrases_${Le}`);if(!Yt)return{};const Pt=JSON.parse(Yt);return Pt&&typeof Pt=="object"?Pt:{}}catch{return{}}},kl=Le=>{const Pt=`pgp_passphrases_${d(St)||Dc()||Se.get("email")||""}`,Kn=Object.fromEntries(Object.entries(Le||{}).filter(([Hn,tr])=>!!Hn&&typeof tr=="string"&&tr.trim().length>0));Object.keys(Kn).length>0?Se.set(Pt,JSON.stringify(Kn)):Se.remove(Pt)},nu=async Le=>{const Yt=d(St)||Dc()||Se.get("email")||"";b(Vn,d(Vn).filter(Kn=>Kn!==Le),!0),Se.set(`pgp_keys_${Yt}`,JSON.stringify(d(Vn)));const Pt=r0();Le?.name&&(delete Pt[Le.name],kl(Pt)),Kv(),Rq();try{await Fq(Yt)}catch(Kn){console.warn("[Settings] invalidatePgpCachedBodies failed:",Kn)}yc("Encryption key removed.")},jl=()=>{b(ti,!1),b(gt,-1),b(Tn,""),b(Wi,""),b(qn,"")};let Au=$(!1);const Ld=async()=>{if(!d(Au)){b(Au,!0);try{const Le=(d(Tn)||"").trim(),Yt=(d(Wi)||"").trim(),Pt=(d(qn)||"").trim();if(!Le||!Yt){Jo("Please provide a name and key.");return}const Kn=await nS({keyName:Le,keyValue:Yt,checkOnly:!0});if(!Kn?.success&&Kn?.needsPassphrase===!1){Jo(/no secret key packet found/i.test(Kn?.error||"")?"Please provide a PGP private key, not a public key.":Kn?.error||"Please provide a valid PGP private key.");return}if(Pt){const Cs=await nS({keyName:Le,passphrase:Pt,keyValue:Yt,remember:!1});if(!Cs?.success){Jo(Cs?.error||"That passphrase could not unlock this private key.");return}}const Hn=d(gt)>=0?d(Vn)[d(gt)]:null,tr=[...d(Vn)];d(gt)>=0?tr[d(gt)]={name:Le,value:Yt}:tr.push({name:Le,value:Yt}),b(Vn,tr,!0);const Ks=d(St)||Dc()||Se.get("email")||"";Se.set(`pgp_keys_${Ks}`,JSON.stringify(d(Vn)));const rs=r0();Hn?.name&&Hn.name!==Le&&delete rs[Hn.name],Pt?rs[Le]=Pt:delete rs[Le],kl(rs),Kv(),Rq();try{await Fq(Ks)}catch(Cs){console.warn("[Settings] invalidatePgpCachedBodies failed:",Cs)}jl(),yc(Pt?"Encryption key saved and unlocked locally.":"Encryption key saved locally. If it is passphrase-protected, you will be prompted when opening an encrypted message.")}catch(Le){Jo(Le?.message||"Could not validate the key right now. Please try again in a moment.")}finally{b(Au,!1)}}},im=()=>{Se.clear(),window.location.replace("/")},v0=async()=>{await AO()},ah=async()=>{b(ai,!0);try{const[Le,Yt]=await Promise.all([vX.getCacheStatistics(),vX.getStorageInfo()]);b(gs,Le,!0),b(er,Yt,!0)}catch(Le){console.error("Failed to load cache statistics:",Le),Jo("Failed to load cache statistics")}finally{b(ai,!1)}},B0=()=>{hd(),b(Dn,!0)},X0=()=>{b(Dn,!1)},oh=async()=>{if(!d(un)){b(un,!0);try{await E()(),yc("Search index rebuilt."),G()?.show?.("Search index rebuilt","success")}catch(Le){Jo(Le?.message||"Failed to rebuild index."),G()?.show?.(Le?.message||"Failed to rebuild index.","error")}finally{b(un,!1),X0()}}},lh=async()=>{if(!d(mr)){b(mr,!0),hd();try{await p(),b(Er,new Date,!0),G()?.show?.("Health check complete","success")}catch(Le){Jo(Le?.message||"Failed to check index health")}finally{b(mr,!1)}}},gu=async()=>{if(!d(jr)){b(jr,!0),hd();try{await A(),b(Er,new Date,!0),yc("Index rebuilt from cache"),G()?.show?.("Index rebuilt from cache","success")}catch(Le){Jo(Le?.message||"Failed to rebuild from cache"),G()?.show?.(Le?.message||"Failed to rebuild from cache","error")}finally{b(jr,!1)}}},S=async()=>{const Le=!d(dn);b(dn,Le),C()?.(Le),yc(Le?"Body indexing enabled. Rebuild your search index to apply this change.":"Body indexing disabled.")},M=Le=>{if(!Le)return"";try{return Qa.formatKey(Le)}catch{return Array.isArray(Le)?Le.join(" + "):String(Le||"")}},K=()=>{b(ht,Qa.getShortcutsList(),!0)},ee=()=>{hd(),d(mi)&&de();try{Qa.resetToDefaults(),K(),yc("Keyboard shortcuts reset to defaults."),G()?.show?.("Keyboard shortcuts reset to defaults","success")}catch(Le){Jo(Le?.message||"Failed to reset shortcuts."),G()?.show?.(Le?.message||"Failed to reset shortcuts.","error")}},de=()=>{Qa.stopCapture(),b(mi,null)},Ze=Le=>{Le.originalKey&&(hd(),b(mi,Le.originalKey,!0),Qa.startCapture(Yt=>{if(Qa.stopCapture(),!d(mi))return;const Pt=d(mi);if(Yt==="esc"){b(mi,null);return}try{Qa.updateShortcut(Pt,Yt),K(),b(mi,null),yc("Shortcut updated."),G()?.show?.("Shortcut updated","success")}catch(Kn){b(mi,null),Jo(Kn?.message||"Failed to update shortcut."),G()?.show?.(Kn?.message||"Failed to update shortcut.","error")}}))};let ve=$(!1);const Ke=async()=>{if(hd(),!d(ve)){b(ve,!0);try{if("caches"in window){const Le=await caches.keys();await Promise.all(Le.map(Yt=>caches.delete(Yt)))}if("serviceWorker"in navigator){const Le=await navigator.serviceWorker.getRegistration();Le&&await Le.update()}try{await Promise.all([_e.messages.clear(),_e.messageBodies.clear(),_e.folders.clear(),_e.syncManifests?.clear?.(),_e.searchIndex.clear(),_e.indexMeta.clear()])}catch(Le){console.warn("[Settings] Failed to clear mail cache tables:",Le)}yc("Cache cleared. Reloading..."),G()?.show?.("Cache cleared. Reloading...","success"),setTimeout(()=>{window.location.reload()},500)}catch(Le){Jo(Le?.message||"Failed to clear cache."),G()?.show?.(Le?.message||"Failed to clear cache.","error"),b(ve,!1)}}},kt=async()=>{if(hd(),!(!window.confirm("Reset the service worker and clear ALL local data (local storage + IndexedDB)? This will log you out and cannot be undone.")||d(Rs))){b(Rs,!0);try{try{await z4()}catch{}try{eG()}catch{}await xAe(),await jce(),localStorage.setItem("webmail_pending_idb_cleanup","1"),localStorage.clear(),localStorage.setItem("webmail_pending_idb_cleanup","1"),sessionStorage.clear(),Q9(),yc("Service worker reset and local data cleared. Redirecting to login..."),G()?.show?.("Service worker reset and local data cleared. Redirecting to login...","success"),setTimeout(()=>{window.location.replace("/")},1e3)}catch(Yt){Jo(Yt?.message||"Failed to force reset storage."),G()?.show?.(Yt?.message||"Failed to force reset storage.","error")}finally{b(Rs,!1)}}},rn=[{id:"general",label:"General"},{id:"appearance",label:"Appearance"},{id:"privacy",label:"Privacy & Security"},{id:"folders",label:"Folders & Labels"},{id:"filters",label:"Filters"},{id:"calendar",label:"Calendar"},{id:"search",label:"Search"},{id:"advanced",label:"Advanced"},{id:"shortcuts",label:"Keyboard Shortcuts"},{id:"help",label:"About & Help"}];var Jt=_tt(),Bt=w(Jt),Ft=k(Bt);rt(Ft,{variant:"ghost",size:"icon",onclick:()=>W()("/mailbox"),"aria-label":"Back",children:(Le,Yt)=>{Ib(Le,{class:"h-5 w-5"})},$$slots:{default:!0}});var $t=Z(Ft,2),zt=Z(k($t),2),Qt=Te(zt,!0),Xt=Z(Bt,2);{var gn=Le=>{var Yt=pe(),Pt=w(Yt);T(Pt,()=>Hd,(Kn,Hn)=>{Hn(Kn,{variant:"destructive",class:"mx-4 mt-4",children:(tr,Ks)=>{var rs=Js(),Cs=w(rs);y0(Cs,{class:"h-4 w-4"});var qi=Z(Cs,2);T(qi,()=>jd,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=le();oe(()=>ae(pn,d(en))),g(wn,pn)},$$slots:{default:!0}})}),g(tr,rs)},$$slots:{default:!0}})}),g(Le,Yt)};O(Xt,Le=>{d(en)&&Le(gn)})}var X=Z(Xt,2);{var re=Le=>{var Yt=pe(),Pt=w(Yt);T(Pt,()=>Hd,(Kn,Hn)=>{Hn(Kn,{class:"mx-4 mt-4 border-state-success bg-state-success/10 text-state-success",children:(tr,Ks)=>{var rs=Js(),Cs=w(rs);sY(Cs,{class:"h-4 w-4"});var qi=Z(Cs,2);T(qi,()=>jd,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=le();oe(()=>ae(pn,d(Cn))),g(wn,pn)},$$slots:{default:!0}})}),g(tr,rs)},$$slots:{default:!0}})}),g(Le,Yt)};O(X,Le=>{d(Cn)&&Le(re)})}var me=Z(X,2),we=k(me),Fe=k(we);Mi(Fe,21,()=>rn,or,(Le,Yt)=>{var Pt=Get(),Kn=Te(Pt,!0);oe(()=>{_i(Pt,1,`px-3 py-2 text-left text-sm font-medium transition-colors ${d(Ee)===d(Yt).id?"bg-primary/10 text-fg-link":"text-muted-foreground hover:bg-accent hover:text-foreground"}`),ae(Kn,d(Yt).label)}),Xe("click",Pt,()=>{b(Ee,d(Yt).id,!0),history.replaceState(null,"",`#${d(Yt).id}`),d(Yt).id==="folders"&&md(),d(Yt).id==="advanced"&&ah()}),g(Le,Pt)});var ze=Z(we,2),Vt=k(ze),ft=k(Vt);T(ft,()=>td,(Le,Yt)=>{Yt(Le,{type:"single",get value(){return d(Ee)},onValueChange:Pt=>{b(Ee,Pt,!0),history.replaceState(null,"",`#${Pt}`),Pt==="folders"&&md(),Pt==="advanced"&&ah()},children:(Pt,Kn)=>{var Hn=Js(),tr=w(Hn);T(tr,()=>id,(rs,Cs)=>{Cs(rs,{class:"w-full",children:(qi,fi)=>{var ni=le();oe(wn=>ae(ni,wn),[()=>rn.find(wn=>wn.id===d(Ee))?.label||"Select section"]),g(qi,ni)},$$slots:{default:!0}})});var Ks=Z(tr,2);T(Ks,()=>nd,(rs,Cs)=>{Cs(rs,{children:(qi,fi)=>{var ni=pe(),wn=w(ni);Mi(wn,17,()=>rn.filter(jn=>jn.id!=="shortcuts"),or,(jn,pn)=>{var Yn=pe(),In=w(Yn);T(In,()=>Bo,(bn,Nt)=>{Nt(bn,{get value(){return d(pn).id},children:(bt,Tt)=>{var at=le();oe(()=>ae(at,d(pn).label)),g(bt,at)},$$slots:{default:!0}})}),g(jn,Yn)}),g(qi,ni)},$$slots:{default:!0}})}),g(Pt,Hn)},$$slots:{default:!0}})});var Nn=Z(ze,2),Kt=k(Nn),oi=k(Kt);{var di=Le=>{var Yt=Met(),Pt=w(Yt);$fe(Pt,{onNavigate:wn=>{history.replaceState(null,"",`#${wn}`),wn==="notifications"?E0():b(Ee,wn,!0)}});var Kn=Z(Pt,2);T(Kn,()=>oo,(wn,jn)=>{jn(wn,{children:(pn,Yn)=>{var In=Js(),bn=w(In);T(bn,()=>Vo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=Js(),ut=w(dt);T(ut,()=>So,(Ht,An)=>{An(Ht,{class:"flex items-center gap-2",children:(Qn,Un)=>{var Yi=Cet(),vi=Z(w(Yi));T(vi,()=>H3,(gi,yi)=>{yi(gi,{children:(Ji,Qr)=>{var Gi=pe(),li=w(Gi);T(li,()=>fl,(zi,bs)=>{bs(zi,{children:(ys,sr)=>{var gr=Js(),fs=w(gr);T(fs,()=>yl,(Ei,Ci)=>{Ci(Ei,{children:(Ki,es)=>{k3(Ki,{class:"h-4 w-4 text-muted-foreground"})},$$slots:{default:!0}})});var hi=Z(fs,2);T(hi,()=>Il,(Ei,Ci)=>{Ci(Ei,{children:(Ki,es)=>{var ki=le("Accounts are stored on this device only and are not synced.");g(Ki,ki)},$$slots:{default:!0}})}),g(ys,gr)},$$slots:{default:!0}})}),g(Ji,Gi)},$$slots:{default:!0}})}),g(Qn,Yi)},$$slots:{default:!0}})});var Ct=Z(ut,2);T(Ct,()=>vl,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("Manage linked mailboxes and identities.");g(Qn,Yi)},$$slots:{default:!0}})}),g(at,dt)},$$slots:{default:!0}})});var Nt=Z(bn,2);T(Nt,()=>lo,(bt,Tt)=>{Tt(bt,{class:"space-y-3",children:(at,pt)=>{var dt=Js(),ut=w(dt);Mi(ut,1,r,or,(Ht,An)=>{var Qn=Net(),Un=k(Qn),Yi=k(Un);lW(Yi,{class:"h-5 w-5 text-muted-foreground"});var vi=Z(Yi,2),gi=k(vi),yi=Te(gi,!0),Ji=Z(gi,2),Qr=Te(Ji,!0),Gi=Z(Un,2);{var li=bs=>{rt(bs,{variant:"destructive",size:"sm",onclick:v0,children:(ys,sr)=>{var gr=le("Sign out");g(ys,gr)},$$slots:{default:!0}})},zi=bs=>{rt(bs,{variant:"ghost",size:"sm",onclick:()=>g2(d(An)),children:(ys,sr)=>{var gr=le("Switch to");g(ys,gr)},$$slots:{default:!0}})};O(Gi,bs=>{d(An).email===n()?bs(li):bs(zi,-1)})}oe(bs=>{_i(Qn,1,`flex items-center justify-between border border-border p-3 ${d(An).email===n()?"bg-primary/5":""}`),ae(yi,d(An).email),ae(Qr,bs)},[()=>d(An).email===n()?"Active account":`Added ${new Date(d(An).addedAt).toLocaleDateString()}`]),g(Ht,Qn)});var Ct=Z(ut,2);rt(Ct,{variant:"outline",class:"mt-4",onclick:()=>W()?.("/?add_account=true"),children:(Ht,An)=>{var Qn=wet(),Un=w(Qn);wp(Un,{class:"mr-2 h-4 w-4"}),g(Ht,Qn)},$$slots:{default:!0}}),g(at,dt)},$$slots:{default:!0}})}),g(pn,In)},$$slots:{default:!0}})});var Hn=Z(Kn,2),tr=k(Hn);{var Ks=wn=>{get(wn,{get toasts(){return G()},openExternal:f})},rs=q(()=>Cc||LA||!Na&&tqe());O(tr,wn=>{d(rs)&&wn(Ks)})}var Cs=Z(tr,2);T(Cs,()=>oo,(wn,jn)=>{jn(wn,{children:(pn,Yn)=>{var In=Js(),bn=w(In);T(bn,()=>Vo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=Js(),ut=w(dt);T(ut,()=>So,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("Notifications");g(Qn,Yi)},$$slots:{default:!0}})});var Ct=Z(ut,2);T(Ct,()=>vl,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("Choose which system notifications this app shows.");g(Qn,Yi)},$$slots:{default:!0}})}),g(at,dt)},$$slots:{default:!0}})});var Nt=Z(bn,2);T(Nt,()=>lo,(bt,Tt)=>{Tt(bt,{class:"space-y-4",children:(at,pt)=>{var dt=Yet(),ut=w(dt);Vet(ut,{get toasts(){return G()},get isTauri(){return Na}});var Ct=Z(ut,2),Ht=k(Ct);Rc(Ht,{onCheckedChange:Td,get checked(){return d(us)},set checked(An){b(us,An,!0)}}),g(at,dt)},$$slots:{default:!0}})}),g(pn,In)},$$slots:{default:!0}})}),bo(Hn,wn=>b(e0,wn),()=>d(e0));var qi=Z(Hn,2);T(qi,()=>oo,(wn,jn)=>{jn(wn,{children:(pn,Yn)=>{var In=Js(),bn=w(In);T(bn,()=>Vo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=pe(),ut=w(dt);T(ut,()=>So,(Ct,Ht)=>{Ht(Ct,{class:"flex items-center gap-2",children:(An,Qn)=>{var Un=_ne(),Yi=w(Un);hZ(Yi,{class:"h-5 w-5 text-destructive"}),g(An,Un)},$$slots:{default:!0}})}),g(at,dt)},$$slots:{default:!0}})});var Nt=Z(bn,2);T(Nt,()=>lo,(bt,Tt)=>{Tt(bt,{children:(at,pt)=>{var dt=Eet(),ut=Z(w(dt),2);rt(ut,{variant:"destructive",onclick:()=>f(y),children:(Ct,Ht)=>{var An=_ne(),Qn=w(An);nW(Qn,{class:"mr-2 h-4 w-4"}),g(Ct,An)},$$slots:{default:!0}}),g(at,dt)},$$slots:{default:!0}})}),g(pn,In)},$$slots:{default:!0}})});var fi=Z(qi,2);{var ni=wn=>{var jn=pe(),pn=w(jn);T(pn,()=>oo,(Yn,In)=>{In(Yn,{children:(bn,Nt)=>{var bt=Js(),Tt=w(bt);T(Tt,()=>Vo,(pt,dt)=>{dt(pt,{children:(ut,Ct)=>{var Ht=pe(),An=w(Ht);T(An,()=>So,(Qn,Un)=>{Un(Qn,{children:(Yi,vi)=>{var gi=le("Storage");g(Yi,gi)},$$slots:{default:!0}})}),g(ut,Ht)},$$slots:{default:!0}})});var at=Z(Tt,2);T(at,()=>lo,(pt,dt)=>{dt(pt,{children:(ut,Ct)=>{var Ht=ket(),An=w(Ht),Qn=k(An),Un=Z(k(Qn),2),Yi=Te(Un),vi=Z(Qn,2),gi=Te(vi),yi=Z(vi,2),Ji=Te(yi),Qr=Z(An,2);{var Gi=li=>{rt(li,{variant:"outline",class:"mt-4",onclick:()=>f("https://forwardemail.net/my-account/billing"),children:(zi,bs)=>{var ys=le("Increase storage");g(zi,ys)},$$slots:{default:!0}})};O(Qr,li=>{V||li(Gi)})}oe((li,zi,bs,ys)=>{ae(Yi,`${li??""}%`),go(gi,`width: ${zi??""}%`),ae(Ji,`${bs??""} of ${ys??""}`)},[()=>vh(),()=>vh(),()=>sh(d(Os)),()=>sh(d(Ts))]),g(ut,Ht)},$$slots:{default:!0}})}),g(bn,bt)},$$slots:{default:!0}})}),g(wn,jn)};O(fi,wn=>{d(Ts)>0&&wn(ni)})}g(Le,Yt)};O(oi,Le=>{d(Ee)==="general"&&Le(di)})}var Qi=Z(oi,2);{var se=Le=>{var Yt=qne(),Pt=w(Yt);T(Pt,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Theme");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-3",children:(bt,Tt)=>{var at=vet(),pt=k(at),dt=k(pt);dt.value=dt.__value="system";var ut=Z(pt,2),Ct=k(ut);Ct.value=Ct.__value="light";var Ht=Z(ut,2),An=k(Ht);An.value=An.__value="dark",Xe("change",dt,oc),gx(c,[],dt,()=>d(ce),Qn=>b(ce,Qn)),Xe("change",Ct,oc),gx(c,[],Ct,()=>d(ce),Qn=>b(ce,Qn)),Xe("change",An,oc),gx(c,[],An,()=>d(ce),Qn=>b(ce,Qn)),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Kn=Z(Pt,2);T(Kn,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Layout");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-3",children:(bt,Tt)=>{var at=Bet(),pt=w(at),dt=k(pt),ut=k(dt);ut.value=ut.__value="full";var Ct=Z(dt,2),Ht=k(Ct);Ht.value=Ht.__value="classic",Xe("change",ut,wd),gx(u,[],ut,()=>d(ke),An=>b(ke,An)),Xe("change",Ht,wd),gx(u,[],Ht,()=>d(ke),An=>b(ke,An)),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Hn=Z(Kn,2);T(Hn,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Density");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-3",children:(bt,Tt)=>{var at=Xet(),pt=w(at),dt=k(pt),ut=k(dt);ut.value=ut.__value="compact";var Ct=Z(dt,2),Ht=k(Ct);Ht.value=Ht.__value="comfortable",Xe("change",ut,ho),gx(h,[],ut,()=>d(J),An=>b(J,An)),Xe("change",Ht,ho),gx(h,[],Ht,()=>d(J),An=>b(J,An)),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var tr=Z(Hn,2);T(tr,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=pe(),pt=w(at);T(pt,()=>So,(dt,ut)=>{ut(dt,{children:(Ct,Ht)=>{var An=le("Composer defaults");g(Ct,An)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-4",children:(bt,Tt)=>{var at=Ret(),pt=w(at),dt=k(pt);Rc(dt,{onCheckedChange:lp,get checked(){return d(ge)},set checked(yi){b(ge,yi,!0)}});var ut=Z(pt,4),Ct=k(ut);Rc(Ct,{onCheckedChange:i0,get checked(){return d(Ye)},set checked(yi){b(Ye,yi,!0)}});var Ht=Z(ut,4),An=k(Ht);Rc(An,{onCheckedChange:vm,get checked(){return d(fe)},set checked(yi){b(fe,yi,!0)}});var Qn=Z(Ht,4),Un=k(Qn);Rc(Un,{onCheckedChange:Pp,get checked(){return d(Be)},set checked(yi){b(Be,yi,!0)}});var Yi=Z(Qn,4),vi=k(Yi);Ns(vi,{for:"undo-send-select",children:(yi,Ji)=>{var Qr=le("Undo send");g(yi,Qr)},$$slots:{default:!0}});var gi=Z(vi,2);T(gi,()=>td,(yi,Ji)=>{Ji(yi,{type:"single",onValueChange:Mu,get value(){return d(Zt)},set value(Qr){b(Zt,Qr,!0)},children:(Qr,Gi)=>{var li=Js(),zi=w(li);T(zi,()=>id,(ys,sr)=>{sr(ys,{id:"undo-send-select",class:"w-full",children:(gr,fs)=>{var hi=le();oe(Ei=>ae(hi,Ei),[()=>d(Zt)==="0"?"Off":`${Number(d(Zt))/1e3} seconds`]),g(gr,hi)},$$slots:{default:!0}})});var bs=Z(zi,2);T(bs,()=>nd,(ys,sr)=>{sr(ys,{children:(gr,fs)=>{var hi=$ne(),Ei=w(hi);T(Ei,()=>Bo,(ki,is)=>{is(ki,{value:"0",children:(xs,as)=>{var yr=le("Off");g(xs,yr)},$$slots:{default:!0}})});var Ci=Z(Ei,2);T(Ci,()=>Bo,(ki,is)=>{is(ki,{value:"5000",children:(xs,as)=>{var yr=le("5 seconds");g(xs,yr)},$$slots:{default:!0}})});var Ki=Z(Ci,2);T(Ki,()=>Bo,(ki,is)=>{is(ki,{value:"10000",children:(xs,as)=>{var yr=le("10 seconds");g(xs,yr)},$$slots:{default:!0}})});var es=Z(Ki,2);T(es,()=>Bo,(ki,is)=>{is(ki,{value:"30000",children:(xs,as)=>{var yr=le("30 seconds");g(xs,yr)},$$slots:{default:!0}})}),g(gr,hi)},$$slots:{default:!0}})}),g(Qr,li)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Ks=Z(tr,2);T(Ks,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=Js(),pt=w(at);T(pt,()=>So,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Signature");g(Ht,Qn)},$$slots:{default:!0}})});var dt=Z(pt,2);T(dt,()=>vl,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Added to new messages, replies, and forwards. Stored on this device.");g(Ht,Qn)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-4",children:(bt,Tt)=>{var at=Fet(),pt=w(at),dt=k(pt);Rc(dt,{onCheckedChange:pu,get checked(){return d(Ne)},set checked(An){b(Ne,An,!0)}});var ut=Z(pt,2),Ct=k(ut);Ns(Ct,{for:"signature-textarea",children:(An,Qn)=>{var Un=le("Signature");g(An,Un)},$$slots:{default:!0}});var Ht=Z(Ct,2);y7e(Ht,{get html(){return d(ot)},get text(){return d(qe)},onChange:M0}),g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var rs=Z(Ks,2);T(rs,()=>oo,(fi,ni)=>{ni(fi,{children:(wn,jn)=>{var pn=Js(),Yn=w(pn);T(Yn,()=>Vo,(bn,Nt)=>{Nt(bn,{children:(bt,Tt)=>{var at=Js(),pt=w(at);T(pt,()=>So,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Font");g(Ht,Qn)},$$slots:{default:!0}})});var dt=Z(pt,2);T(dt,()=>vl,(ut,Ct)=>{Ct(ut,{children:(Ht,An)=>{var Qn=le("Choose a custom font for better readability. System default is fastest.");g(Ht,Qn)},$$slots:{default:!0}})}),g(bt,at)},$$slots:{default:!0}})});var In=Z(Yn,2);T(In,()=>lo,(bn,Nt)=>{Nt(bn,{class:"space-y-4",children:(bt,Tt)=>{var at=Let(),pt=w(at),dt=k(pt);Ns(dt,{for:"font-select",children:(Un,Yi)=>{var vi=le("Typeface");g(Un,vi)},$$slots:{default:!0}});var ut=Z(dt,2);T(ut,()=>td,(Un,Yi)=>{Yi(Un,{type:"single",onValueChange:()=>Ea(),get value(){return d(Re)},set value(vi){b(Re,vi,!0)},children:(vi,gi)=>{var yi=Js(),Ji=w(yi);T(Ji,()=>id,(Gi,li)=>{li(Gi,{class:"w-full",get style(){return`font-family: ${d(Oe)??""}`},children:(zi,bs)=>{var ys=le();oe(sr=>ae(ys,sr),[()=>d($e).find(sr=>sr.key===d(Re))?.name||"System Default"]),g(zi,ys)},$$slots:{default:!0}})});var Qr=Z(Ji,2);T(Qr,()=>nd,(Gi,li)=>{li(Gi,{children:(zi,bs)=>{var ys=pe(),sr=w(ys);Mi(sr,17,()=>d($e),or,(gr,fs)=>{var hi=pe(),Ei=w(hi);T(Ei,()=>Bo,(Ci,Ki)=>{Ki(Ci,{get value(){return d(fs).key},children:(es,ki)=>{var is=le();oe(()=>ae(is,d(fs).name)),g(es,is)},$$slots:{default:!0}})}),g(gr,hi)}),g(zi,ys)},$$slots:{default:!0}})}),g(vi,yi)},$$slots:{default:!0}})});var Ct=Z(pt,2);{var Ht=Un=>{var Yi=Tet();g(Un,Yi)};O(Ct,Un=>{d(je)&&Un(Ht)})}var An=Z(Ct,2);{var Qn=Un=>{var Yi=Uet();oe(()=>go(Yi,`font-family: ${d(Oe)??""}`)),g(Un,Yi)};O(An,Un=>{d(Re)!=="system"&&Un(Qn)})}g(bt,at)},$$slots:{default:!0}})}),g(wn,pn)},$$slots:{default:!0}})});var Cs=Z(rs,2);{var qi=fi=>{var ni=pe(),wn=w(ni);T(wn,()=>oo,(jn,pn)=>{pn(jn,{children:(Yn,In)=>{var bn=Js(),Nt=w(bn);T(Nt,()=>Vo,(Tt,at)=>{at(Tt,{children:(pt,dt)=>{var ut=Js(),Ct=w(ut);T(Ct,()=>So,(An,Qn)=>{Qn(An,{children:(Un,Yi)=>{var vi=le("External Links");g(Un,vi)},$$slots:{default:!0}})});var Ht=Z(Ct,2);T(Ht,()=>vl,(An,Qn)=>{Qn(An,{children:(Un,Yi)=>{var vi=le(`On Windows, you can choose a browser command for web links opened from the desktop
2352
2352
  app. Leave this blank to use the Windows default browser.`);g(Un,vi)},$$slots:{default:!0}})}),g(pt,ut)},$$slots:{default:!0}})});var bt=Z(Nt,2);T(bt,()=>lo,(Tt,at)=>{at(Tt,{class:"space-y-4",children:(pt,dt)=>{var ut=Det(),Ct=w(ut),Ht=k(Ct);Ns(Ht,{for:"external-browser-override",children:(vi,gi)=>{var yi=le("Preferred browser command");g(vi,yi)},$$slots:{default:!0}});var An=Z(Ht,2);Gr(An,{id:"external-browser-override",placeholder:"Examples: firefox, chrome, msedge, or C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe",autocomplete:"off",autocapitalize:"off",spellcheck:!1,onblur:()=>lc(),get value(){return d(xt)},set value(vi){b(xt,vi,!0)}});var Qn=Z(Ct,4),Un=k(Qn);rt(Un,{type:"button",onclick:()=>lc(),children:(vi,gi)=>{var yi=le("Save");g(vi,yi)},$$slots:{default:!0}});var Yi=Z(Un,2);{let vi=q(()=>!d(xt).trim());rt(Yi,{type:"button",variant:"outline",onclick:()=>Ku(),get disabled(){return d(vi)},children:(gi,yi)=>{var Ji=le("Clear override");g(gi,Ji)},$$slots:{default:!0}})}g(pt,ut)},$$slots:{default:!0}})}),g(Yn,bn)},$$slots:{default:!0}})}),g(fi,ni)};O(Cs,fi=>{yn&&fi(qi)})}g(Le,Yt)};O(Qi,Le=>{d(Ee)==="appearance"&&Le(se)})}var Ie=Z(Qi,2);{var it=Le=>{var Yt=qne(),Pt=w(Yt);r4e(Pt,{});var Kn=Z(Pt,2);GHe(Kn,{});var Hn=Z(Kn,2);k7e(Hn,{onToast:(ni,wn)=>G()?.show?.(ni,wn)});var tr=Z(Hn,2);T(tr,()=>oo,(ni,wn)=>{wn(ni,{children:(jn,pn)=>{var Yn=Js(),In=w(Yn);T(In,()=>Vo,(Nt,bt)=>{bt(Nt,{children:(Tt,at)=>{var pt=Js(),dt=w(pt);T(dt,()=>So,(Ht,An)=>{An(Ht,{children:(Qn,Un)=>{var Yi=le("PGP encryption");g(Qn,Yi)},$$slots:{default:!0}})});var ut=Z(dt,2);{var Ct=Ht=>{var An=pe(),Qn=w(An);T(Qn,()=>vl,(Un,Yi)=>{Yi(Un,{children:(vi,gi)=>{var yi=Qet(),Ji=Z(w(yi)),Qr=Te(Ji,!0);oe(()=>ae(Qr,d(Me))),g(vi,yi)},$$slots:{default:!0}})}),g(Ht,An)};O(ut,Ht=>{d(Me)&&Ht(Ct)})}g(Tt,pt)},$$slots:{default:!0}})});var bn=Z(In,2);T(bn,()=>lo,(Nt,bt)=>{bt(Nt,{class:"space-y-4",children:(Tt,at)=>{var pt=Het(),dt=w(pt),ut=Z(k(dt),2);rt(ut,{variant:"ghost",size:"sm",onclick:Hu,children:(gi,yi)=>{var Ji=le("Add key");g(gi,Ji)},$$slots:{default:!0}});var Ct=Z(dt,2),Ht=k(Ct);{var An=gi=>{var yi=Jet();g(gi,yi)};O(Ht,gi=>{d(Vn).length===0&&gi(An)})}var Qn=Z(Ht,2);Mi(Qn,17,()=>d(Vn),or,(gi,yi)=>{var Ji=zet(),Qr=k(Ji),Gi=Te(Qr,!0),li=Z(Qr,2),zi=k(li);rt(zi,{variant:"ghost",size:"icon",onclick:()=>Bm(d(yi)),"aria-label":"Edit",children:(ys,sr)=>{Z5(ys,{class:"h-4 w-4"})},$$slots:{default:!0}});var bs=Z(zi,2);rt(bs,{variant:"ghost",size:"icon",onclick:()=>nu(d(yi)),"aria-label":"Remove",children:(ys,sr)=>{Fu(ys,{class:"h-4 w-4"})},$$slots:{default:!0}}),oe(()=>ae(Gi,d(yi).name||"Key")),g(gi,Ji)});var Un=Z(Ct,2);{var Yi=gi=>{var yi=Ket(),Ji=k(yi);Gr(Ji,{type:"text",placeholder:"Key name (e.g., Personal)",get value(){return d(Tn)},set value(ys){b(Tn,ys,!0)}});var Qr=Z(Ji,2);WI(Qr,{rows:6,placeholder:"PGP private key (ASCII armor)",get value(){return d(Wi)},set value(ys){b(Wi,ys,!0)}});var Gi=Z(Qr,2);Gr(Gi,{type:"password",placeholder:"Private key passphrase (optional)",get value(){return d(qn)},set value(ys){b(qn,ys,!0)}});var li=Z(Gi,2),zi=k(li);rt(zi,{variant:"ghost",onclick:jl,children:(ys,sr)=>{var gr=le("Cancel");g(ys,gr)},$$slots:{default:!0}});var bs=Z(zi,2);rt(bs,{onclick:Ld,get disabled(){return d(Au)},children:(ys,sr)=>{var gr=le();oe(()=>ae(gr,d(Au)?"Saving…":"Save key")),g(ys,gr)},$$slots:{default:!0}}),g(gi,yi)};O(Un,gi=>{d(ti)&&gi(Yi)})}var vi=Z(Un,2);rt(vi,{variant:"ghost",onclick:im,children:(gi,yi)=>{var Ji=le("Clear saved data");g(gi,Ji)},$$slots:{default:!0}}),g(Tt,pt)},$$slots:{default:!0}})}),g(jn,Yn)},$$slots:{default:!0}})});var Ks=Z(tr,2);{var rs=ni=>{var wn=pe(),jn=w(wn);T(jn,()=>oo,(pn,Yn)=>{Yn(pn,{children:(In,bn)=>{var Nt=Js(),bt=w(Nt);T(bt,()=>Vo,(at,pt)=>{pt(at,{children:(dt,ut)=>{var Ct=Js(),Ht=w(Ct);T(Ht,()=>So,(Qn,Un)=>{Un(Qn,{class:"flex items-center gap-2",children:(Yi,vi)=>{var gi=jet(),yi=w(gi);DP(yi,{class:"h-4 w-4"}),g(Yi,gi)},$$slots:{default:!0}})});var An=Z(Ht,2);T(An,()=>vl,(Qn,Un)=>{Un(Qn,{children:(Yi,vi)=>{var gi=le(`Scan either QR code shown with your alias password to sign in, or the Sync to
2353
2353
  another device code from Forward Email on your computer to also copy PGP keys and
2354
2354
  settings.`);g(Yi,gi)},$$slots:{default:!0}})}),g(dt,Ct)},$$slots:{default:!0}})});var Tt=Z(bt,2);T(Tt,()=>lo,(at,pt)=>{pt(at,{children:(dt,ut)=>{rt(dt,{onclick:()=>b($n,!0),children:(Ct,Ht)=>{var An=le("Scan a code");g(Ct,An)},$$slots:{default:!0}})},$$slots:{default:!0}})}),g(In,Nt)},$$slots:{default:!0}})}),g(ni,wn)},Cs=ni=>{{let wn=q(()=>d(Me)||Se.get("email")||"");DHe(ni,{get account(){return d(wn)}})}};O(Ks,ni=>{Cc?ni(rs):Cc||ni(Cs,1)})}var qi=Z(Ks,2);T(qi,()=>oo,(ni,wn)=>{wn(ni,{children:(jn,pn)=>{var Yn=Js(),In=w(Yn);T(In,()=>Vo,(Nt,bt)=>{bt(Nt,{children:(Tt,at)=>{var pt=Js(),dt=w(pt);T(dt,()=>So,(Ct,Ht)=>{Ht(Ct,{children:(An,Qn)=>{var Un=le("Privacy");g(An,Un)},$$slots:{default:!0}})});var ut=Z(dt,2);T(ut,()=>vl,(Ct,Ht)=>{Ht(Ct,{children:(An,Qn)=>{var Un=le("Control how external content is handled in emails.");g(An,Un)},$$slots:{default:!0}})}),g(Tt,pt)},$$slots:{default:!0}})});var bn=Z(In,2);T(bn,()=>lo,(Nt,bt)=>{bt(Nt,{class:"space-y-4",children:(Tt,at)=>{var pt=Oet(),dt=w(pt),ut=k(dt);Rc(ut,{onCheckedChange:Jc,get checked(){return d(tn)},set checked(Un){b(tn,Un,!0)}});var Ct=Z(dt,4),Ht=k(Ct);Rc(Ht,{onCheckedChange:QA,get checked(){return d($i)},set checked(Un){b($i,Un,!0)}});var An=Z(Ct,4),Qn=k(An);Rc(Qn,{onCheckedChange:nm,get checked(){return d(ye)},set checked(Un){b(ye,Un,!0)}}),g(Tt,pt)},$$slots:{default:!0}})}),g(jn,Yn)},$$slots:{default:!0}})});var fi=Z(qi,2);T(fi,()=>oo,(ni,wn)=>{wn(ni,{children:(jn,pn)=>{var Yn=Js(),In=w(Yn);T(In,()=>Vo,(Nt,bt)=>{bt(Nt,{children:(Tt,at)=>{var pt=Js(),dt=w(pt);T(dt,()=>So,(Ct,Ht)=>{Ht(Ct,{children:(An,Qn)=>{var Un=le("Spam reporting");g(An,Un)},$$slots:{default:!0}})});var ut=Z(dt,2);T(ut,()=>vl,(Ct,Ht)=>{Ht(Ct,{children:(An,Qn)=>{var Un=le("Where the Report spam action sends reported emails.");g(An,Un)},$$slots:{default:!0}})}),g(Tt,pt)},$$slots:{default:!0}})});var bn=Z(In,2);T(bn,()=>lo,(Nt,bt)=>{bt(Nt,{class:"space-y-4",children:(Tt,at)=>{var pt=Pet(),dt=w(pt),ut=k(dt);Gr(ut,{type:"email",get placeholder(){return kx},get value(){return d(ei)},set value(vi){b(ei,vi,!0)}});var Ct=Z(ut,2);rt(Ct,{variant:"ghost",onclick:Mm,children:(vi,gi)=>{var yi=le("Save");g(vi,yi)},$$slots:{default:!0}});var Ht=Z(Ct,2);{var An=vi=>{rt(vi,{variant:"ghost",onclick:tu,children:(gi,yi)=>{var Ji=le("Reset");g(gi,Ji)},$$slots:{default:!0}})},Qn=q(()=>d(ei).trim()!==kx);O(Ht,vi=>{d(Qn)&&vi(An)})}var Un=Z(dt,2),Yi=Z(k(Un),2);oe(()=>ae(Yi,` on a message forwards the original email
@@ -4462,7 +4462,7 @@ ${l}`:l:o==="reply-to"||o==="replyto"?e.replyTo=e.replyTo||l:o==="in-reply-to"||
4462
4462
  .fe-quote-label {
4463
4463
  font-size: 11px;
4464
4464
  }
4465
- `}const Bst=140,Xst=new Set(["http:","https:","mailto:","tel:"]);function Rst(t){const e=String(t??"").trim().replace(/^[<([\s]+|[>)\]\s.,;:!?]+$/g,"");if(!e||/\s/.test(e)||e.includes("@"))return null;const i=/^[a-z][a-z0-9+.-]*:/i.test(e)?e:`http://${e}`;let s;try{s=new URL(i)}catch{return null}if(s.protocol!=="http:"&&s.protocol!=="https:")return null;const r=s.hostname.toLowerCase(),a=/^[a-z0-9-]+(\.[a-z0-9-]+)+$/.test(r),o=/^\d{1,3}(\.\d{1,3}){3}$/.test(r);return a||o?r:null}const yie=t=>t.replace(/^www\./,"");function Iie(t,e=Bst){if(t.length<=e)return t;const n=Math.ceil((e-1)*.6),i=e-1-n;return`${t.slice(0,n)}…${t.slice(t.length-i)}`}function Fst(t,e){const n={kind:"unsupported",display:"",prefix:"",host:"",suffix:"",isIdn:!1,mismatch:null};let i;try{i=new URL(String(t??""))}catch{return n}if(!Xst.has(i.protocol))return n;if(i.protocol==="mailto:"||i.protocol==="tel:"){const A=Iie(i.href);return{...n,kind:i.protocol==="mailto:"?"mailto":"tel",display:A}}i.username="",i.password="";const s=i.hostname,r=`${i.protocol}//`,o=`${i.port?`:${i.port}`:""}${i.pathname}${i.search}${i.hash}`,l=`${r}${s}${o}`,c=Iie(l),u=c.slice(r.length+s.length),h=s.split(".").some(A=>A.startsWith("xn--")),m=Rst(e),p=m&&yie(m)!==yie(s.toLowerCase())?{textHost:m}:null;return{kind:"http",display:c,prefix:r,host:s,suffix:u,isIdn:h,mismatch:p}}function Tst(t,e=null){const n=e??(typeof document<"u"?document.body:null);return n?(n.appendChild(t),{destroy(){t.parentNode===n&&n.removeChild(t)}}):{}}var Ust=R('<iframe title="Email content" class="fe-email-iframe svelte-1jd9ri2"></iframe>'),Lst=R('<div class="fe-email-loading svelte-1jd9ri2"><div class="fe-email-loading-indicator svelte-1jd9ri2"></div></div>'),Dst=R('<div class="fe-email-iframe-container svelte-1jd9ri2"><!></div>'),Qst=R('<span class="fe-link-preview-note svelte-1jd9ri2"> </span>'),Jst=R('<span class="fe-link-preview-note svelte-1jd9ri2">Internationalized domain</span>'),zst=R('<span class="fe-link-preview-dim svelte-1jd9ri2"> </span><span class="fe-link-preview-host svelte-1jd9ri2"> </span><span class="fe-link-preview-dim svelte-1jd9ri2"> </span>',1),Kst=R('<div role="status" aria-live="polite" data-testid="link-preview"><!> <span class="fe-link-preview-url"><!></span></div>'),Hst=R("<!> <!>",1);function WB(t,e){lt(e,!0);let n=We(e,"plainText",3,!1),i=$(null),s=$(600),r=$(!1),a=$(!1),o=$(0);const l=Do;let c=$(null);const u=new Set;let h=null;const m=new Map;function p(){return typeof document>"u"?!1:!document.body.classList.contains("light-mode")}const A=q(()=>`${e.messageId}:${d(o)}:${n()}`),f=q(()=>{const ne=d(a)?d(r):p(),z=e.html||"";return n()?fie(eI(z),ne,!0):fie(z,ne,!1)});function y(){if(!d(i))return 0;try{const ne=d(i).contentDocument;if(!ne)return 0;const z=ne.querySelector(".fe-email-viewport")||ne.querySelector(".fe-email-content"),ie=z?z.getBoundingClientRect().height:0;return Math.max(Math.ceil(ie),ne.body?.scrollHeight||0,ne.body?.offsetHeight||0,ne.documentElement?.scrollHeight||0,ne.documentElement?.offsetHeight||0)}catch{return 0}}function I(){return d(i)?d(s)!==600&&d(s)>50?!0:y()>10:!1}function x(){if(!d(a))return;const ne=e.messageId,z=e.html;if(!(!z||z.length<100)&&!u.has(ne)){if(d(s)<=150){const ie=y();if(ie>50){b(s,ie,!0),e.onHeightChange?.(d(s)),W();return}}I()||(u.add(ne),console.warn("[EmailIframe] Content not rendered after delay, forcing recreation for message:",ne),uX(o))}}let V=null;function W(){V||(V=setInterval(()=>{if(!d(a)||!d(i)){Y();return}const ne=y();ne>50&&ne!==d(s)&&(b(s,ne,!0),e.onHeightChange?.(d(s)))},500))}function Y(){V&&(clearInterval(V),V=null)}function E(){h&&(clearTimeout(h),h=null),h=setTimeout(()=>{x()},500)}Hr(()=>{const ne=e.messageId;b(s,m.get(ne)||600,!0),Y(),d(a)&&E()});function C(ne){const z=ne.origin;if(z&&z!=="null"&&z!==window.location.origin||d(i)&&ne.source!==d(i).contentWindow)return;const ie=ne.data;if(!(!ie||typeof ie!="object"||!ie.type||!["height","link","link-hover","link-hover-end","form","ready","swipe"].includes(ie.type)))switch(ie.type){case"ready":h&&(clearTimeout(h),h=null);break;case"height":if(typeof ie.payload?.height=="number"&&ie.payload.height>0){const be=Math.max(ie.payload.height,50);be!==d(s)&&(b(s,be,!0),m.set(e.messageId,be),e.onHeightChange?.(d(s)),h&&(clearTimeout(h),h=null))}break;case"link":b(c,null),typeof ie.payload?.url=="string"&&e.onLinkClick?.(ie.payload.url,ie.payload.isMailto===!0);break;case"link-hover":if(l&&typeof ie.payload?.url=="string"){const be=Fst(ie.payload.url,typeof ie.payload.text=="string"?ie.payload.text:"");b(c,be.kind==="unsupported"?null:be,!0)}break;case"link-hover-end":b(c,null);break;case"form":ie.payload&&e.onFormSubmit?.(ie.payload.action||"",ie.payload.method||"get",ie.payload.data||{});break;case"swipe":ie.payload?.phase&&e.onSwipe?.(ie.payload.phase,ie.payload);break}}let G=null,N={startX:0,startY:0,active:!1,direction:null};const B=ne=>{!ne.touches||ne.touches.length!==1||(N.startX=ne.touches[0].clientX,N.startY=ne.touches[0].clientY,N.active=!1,N.direction=null,e.onSwipe?.("start",{x:N.startX,y:N.startY}))},F=ne=>{if(!ne.touches||ne.touches.length!==1||!N.startX)return;const z=ne.touches[0].clientX-N.startX,ie=ne.touches[0].clientY-N.startY;!N.active&&Math.abs(z)>15&&Math.abs(z)>Math.abs(ie)*2&&(N.active=!0,N.direction=z>0?"right":"left"),N.active&&e.onSwipe?.("move",{dx:z,dy:ie})},H=()=>{e.onSwipe?.("end",{active:N.active,direction:N.direction}),N.startX=0,N.startY=0,N.active=!1,N.direction=null};let U=null;const _=()=>{if(d(i))try{const ne=d(i).contentDocument;if(!ne||ne===U)return;U&&(U.removeEventListener("touchstart",B),U.removeEventListener("touchmove",F),U.removeEventListener("touchend",H),U.removeEventListener("touchcancel",H)),ne.addEventListener("touchstart",B,{passive:!0,capture:!0}),ne.addEventListener("touchmove",F,{passive:!0,capture:!0}),ne.addEventListener("touchend",H,{passive:!0,capture:!0}),ne.addEventListener("touchcancel",H,{passive:!0,capture:!0}),U=ne}catch{}};_d(()=>{b(a,!0),window.addEventListener("message",C),b(r,p(),!0),E(),G=new MutationObserver(()=>{const ne=p();ne!==d(r)&&(b(r,ne,!0),uX(o))}),G.observe(document.body,{attributes:!0,attributeFilter:["class"]})}),XA(()=>{b(a,!1),b(c,null),window.removeEventListener("message",C),G?.disconnect(),Y(),U&&(U.removeEventListener("touchstart",B),U.removeEventListener("touchmove",F),U.removeEventListener("touchend",H),U.removeEventListener("touchcancel",H),U=null),h&&(clearTimeout(h),h=null)});var j=Hst(),D=w(j);IO(D,()=>d(A),ne=>{var z=Dst(),ie=k(z);{var ue=ce=>{var ke=Ust();bo(ke,J=>b(i,J),()=>d(i)),oe(()=>{bi(ke,"srcdoc",d(f)),bi(ke,"sandbox",Na?"allow-scripts allow-same-origin":"allow-scripts"),go(ke,`height: ${d(s)??""}px;`)}),ed("load",ke,_),g(ce,ke)},be=ce=>{var ke=Lst();oe(()=>go(ke,`min-height: ${d(s)??""}px;`)),g(ce,ke)};O(ie,ce=>{e.html&&e.html.length>0?ce(ue):ce(be,-1)})}g(ne,z)});var P=Z(D,2);{var te=ne=>{var z=Kst();let ie;var ue=k(z);{var be=Ye=>{var fe=Qst(),Be=Te(fe);oe(()=>ae(Be,`Text says ${d(c).mismatch.textHost??""}, link goes to`)),g(Ye,fe)},ce=Ye=>{var fe=Jst();g(Ye,fe)};O(ue,Ye=>{d(c).mismatch?Ye(be):d(c).isIdn&&Ye(ce,1)})}var ke=Z(ue,2),J=k(ke);{var Ee=Ye=>{var fe=zst(),Be=w(fe),Ne=Te(Be,!0),qe=Z(Be),ot=Te(qe,!0),It=Z(qe),Zt=Te(It,!0);oe(()=>{ae(Ne,d(c).prefix),ae(ot,d(c).host),ae(Zt,d(c).suffix)}),g(Ye,fe)},ge=Ye=>{var fe=le();oe(()=>ae(fe,d(c).display)),g(Ye,fe)};O(J,Ye=>{d(c).kind==="http"?Ye(Ee):Ye(ge,-1)})}xO(z,Ye=>Tst?.(Ye)),oe(()=>ie=_i(z,1,"fe-link-preview svelte-1jd9ri2",null,ie,{"fe-link-preview-warn":d(c).mismatch||d(c).isIdn})),g(ne,z)};O(P,ne=>{d(c)&&ne(te)})}g(t,j),ct()}let WC,FK=0,VB=null,SB=null,Zie=!1;const TK=5*60*1e3,$u=(...t)=>console.log("[updater]",...t),mZ=(...t)=>console.warn("[updater]",...t);async function jst(){if(WC!==void 0)return WC;try{WC=await Promise.resolve().then(()=>CWe),$u("plugin module loaded")}catch(t){mZ("plugin module failed to load:",t),WC=null}return WC}function Ost(t){return typeof t!="string"?!1:/^\d+\.\d+\.\d+/.test(t)}async function Pst(){try{const{arch:t,platform:e}=await Promise.resolve().then(()=>NWe);return{arch:await t(),platform:await e()}}catch{return{arch:"unknown",platform:"unknown"}}}async function n_(t={}){const e=t?.force===!0;if($u("checkForUpdates() called"),!Do)return $u("skipped: not a Tauri desktop build"),null;const n=Date.now(),i=n-FK;if(!e&&i<TK)return $u(`rate-limited: last check was ${Math.round(i/1e3)}s ago (min interval ${TK/1e3}s)`),null;FK=n;const s=await jst();if(!s)return $u("skipped: plugin-updater module unavailable"),null;try{$u("calling mod.check() — this issues an HTTP GET from the Rust backend");const r=await s.check();if($u("mod.check() returned",{isNull:r==null,available:r?.available,version:r?.version,currentVersion:r?.currentVersion,date:r?.date}),!r)return $u("no update returned (server said up-to-date or returned nothing)"),null;if(r.version&&!Ost(r.version))return mZ("invalid version string from server:",r.version),null;const a=await Pst();return $u("arch/platform detected:",a),{available:r.available,version:r.version,body:typeof r.body=="string"?r.body.slice(0,1e4):"",date:r.date||null,currentVersion:r.currentVersion,arch:a.arch,platform:a.platform,_update:r}}catch(r){return mZ("mod.check() threw:",r?.message||r),null}}async function xie(){try{const{platform:t}=await Promise.resolve().then(()=>NWe);if(t()!=="macos")return null;const{resourceDir:e}=await Promise.resolve().then(()=>jZe),n=await e();if(typeof n!="string")return null;if(n.includes("AppTranslocation")||n.includes("/private/var/folders/"))return'The app is running from a temporary location (App Translocation). Please move "Forward Email" to your Applications folder and reopen it to enable updates.';if(n.startsWith("/Users/")&&!n.includes("/Applications/")&&(n.includes("/Downloads/")||n.includes("/Desktop/")))return'Please move "Forward Email" to your Applications folder to enable updates.'}catch{}return null}async function i_(t,e){if(!Do||!t?._update)return;const n=await xie();if(n){const i=new Error(n);throw i.code="BAD_INSTALL_LOCATION",i}try{let i=0,s=0,r=-10;$u("downloadAndInstall() starting for version",t.version),await t._update.downloadAndInstall(o=>{if(o.event==="Started"){if(s=o.data.contentLength||0,$u(`download started: ${s} bytes`),s>500*1024*1024){mZ("update too large — aborting:",s);return}}else if(o.event==="Progress"){if(i+=o.data.chunkLength||0,s){const l=Math.floor(i/s*100);l-r>=10&&($u(`download progress: ${l}%`),r=l)}e&&typeof e=="function"&&e({downloaded:Math.min(i,s||i),contentLength:s})}else o.event==="Finished"&&($u("download finished — installing"),e&&typeof e=="function"&&e({downloaded:s,contentLength:s}))}),$u("install complete — relaunching to apply the update");const{relaunch:a}=await Promise.resolve().then(()=>wWe);await a()}catch(i){if(String(i?.message||i||"").includes("Failed to move the new app into place")){const r=await xie(),a=new Error(r||"Could not install the update because the app location is not writable. Try reinstalling the app or running with administrator permissions.");throw a.code="BAD_INSTALL_LOCATION",mZ("install failed (bad location):",i),a}throw mZ("downloadAndInstall failed:",i),i}}function _st(t){return!t||typeof t!="object"?null:t.release&&typeof t.release=="object"?t.release.tagName||t.release.tag_name||t.release.version||null:t.tagName||t.tag_name||t.version||t.tag||null}function yye(t){!Do||!_st(t)||(FK=0,hF&&hF())}let hF=null;async function $st(t={}){if(!Do){$u("initAutoUpdater: not a Tauri desktop build, no-op");return}const{onUpdateAvailable:e,onProgress:n,intervalMs:i=60*60*1e3,wsClient:s}=t,r=Math.max(i,TK);$u("initAutoUpdater: starting",{intervalMs:r,hasOnUpdateAvailable:typeof e=="function",hasOnProgress:typeof n=="function",hasOnError:typeof t.onError=="function",hasWsClient:!!s});async function a(){try{const o=await n_();if(!o?.available){$u("doCheck: no update available");return}$u(`doCheck: update available → v${o.version} (current v${o.currentVersion})`);let l=!0;e&&typeof e=="function"?(l=await e(o),$u("onUpdateAvailable callback returned",l)):$u("no onUpdateAvailable callback — will auto-install silently"),l?await i_(o,n):$u("install declined by caller")}catch(o){if(o?.code==="BAD_INSTALL_LOCATION"){if(!Zie&&(Zie=!0,mZ(o.message),typeof t.onError=="function"))try{t.onError(o)}catch{}return}mZ("auto-update check failed:",o)}}hF=a,s&&typeof s.on=="function"&&(VB=s.on("newRelease",yye)),setTimeout(a,1e4),SB=setInterval(a,r)}function qst(){SB&&(clearInterval(SB),SB=null),VB&&(VB(),VB=null),hF=null}const Iye=Object.freeze(Object.defineProperty({__proto__:null,checkForUpdates:n_,downloadAndInstall:i_,handleWsNewRelease:yye,initAutoUpdater:$st,stopAutoUpdater:qst},Symbol.toStringTag,{value:"Module"}));var ert=R('<dt class="text-muted-foreground">Built</dt> <dd> </dd>',1),trt=R('<dt class="text-muted-foreground">Platform</dt> <dd> </dd>',1),nrt=R('<div class="mb-3 max-h-32 overflow-y-auto whitespace-pre-wrap text-xs text-muted-foreground"> </div>'),irt=R('<div class="space-y-2"><div class="h-1.5 w-full overflow-hidden rounded bg-muted"><div class="h-full bg-primary transition-all"></div></div> <div class="text-xs text-muted-foreground"> </div></div>'),srt=R("<!> Install and restart",1),rrt=R('<div class="flex items-center gap-2"><!> <!></div>'),art=R('<div class="mt-2 text-xs text-destructive"> </div>'),ort=R('<div class="rounded-md border border-primary/40 bg-primary/10 p-3 text-sm"><div class="mb-2 font-medium"> </div> <!> <!> <!></div>'),lrt=R("<!> Release Notes",1),crt=R("<!> Website",1),drt=R('<div class="space-y-3 p-5"><dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5 text-sm"><dt class="text-muted-foreground">Version</dt> <dd class="font-mono"> </dd> <!> <!> <dt class="text-muted-foreground">Update</dt> <dd> </dd> <dt class="text-muted-foreground">License</dt> <dd> </dd></dl> <!> <div class="border-t border-border pt-3 text-xs text-muted-foreground"><p>Made by the <button class="text-fg-link hover:underline inline cursor-pointer">Forward Email</button> team. Open-source, privacy-first, no tracking.</p> <p class="mt-2"><button class="text-fg-link hover:underline inline cursor-pointer">Privacy Policy</button></p> <p class="mt-2"><button class="hover:underline inline cursor-pointer">Run diagnostics</button></p></div> <div class="flex items-center gap-2 pt-1"><!> <!></div></div>'),urt=R('<div class="flex items-center justify-center p-10 text-sm text-muted-foreground">Loading...</div>'),hrt=R('<div class="fixed inset-0 z-[100] flex items-center justify-center bg-black/50" role="dialog" aria-modal="true" aria-label="About Forward Email"><div class="w-[420px] overflow-hidden rounded-lg border border-border bg-background shadow-xl"><div class="flex items-start justify-between p-5 pb-0"><div class="flex items-center gap-3"><img src="/icons/icon-256.png" alt="Forward Email" class="h-14 w-14 rounded-xl"/> <div><h2 class="text-lg font-semibold">Forward Email</h2> <p class="text-sm text-muted-foreground">Privacy-focused email</p></div></div> <button class="rounded-md p-1 hover:bg-accent" aria-label="Close"><!></button></div> <!></div></div>');function mrt(t,e){lt(e,!0);const n=async F=>{try{await C5(F,{log:()=>{}})}catch{}};let i=We(e,"open",15,!1);const s="0.14.24";let r=$(br(s)),a=$(""),o=$(""),l=$(""),c=$("BUSL-1.1"),u=$(""),h=$(!1),m=$(!1),p=0,A=$(null),f=$(!1),y=$(0),I=$("");const x={macos:"macOS",windows:"Windows",linux:"Linux"},V=(F,H)=>{const U=(H||"").toLowerCase(),_=(F||"").toLowerCase();return U==="aarch64"||U==="arm64"?_==="macos"?"Apple Silicon":"ARM64":U==="x86_64"||U==="x64"?_==="macos"?"Intel (x64)":"x64":U==="x86"?"x86":H},W=async()=>{const F=++p;if(b(m,!0),b(h,!1),b(u,Na?"Checking...":d(r)?`Web build (v${d(r)})`:"Web build",!0),Na){try{const H=await The();if(F!==p)return;H&&(b(r,H.version||d(r)||s,!0),b(a,H.buildDate||"",!0),b(o,H.arch||"",!0),b(l,H.os||"",!0),b(c,H.license||"BUSL-1.1",!0))}catch{try{const H=await Fhe();if(F!==p)return;H&&b(r,H,!0)}catch{b(r,d(r)||s,!0)}}try{const H=await n_({force:!0});if(F!==p)return;H?.available?(b(u,`Update available: v${H.version}`),b(A,H,!0)):(b(u,d(r)?`Up to date (v${d(r)})`:"Up to date",!0),b(A,null))}catch{if(F!==p)return;b(u,"Unable to check"),b(A,null)}}else b(r,d(r)||s,!0),b(a,""),b(o,""),b(l,""),b(c,"BUSL-1.1");F===p&&(b(m,!1),b(h,!0))};Hr(()=>{i()&&W()});const Y=async()=>{if(!(!d(A)||d(f))){b(f,!0),b(I,""),b(y,0);try{await i_(d(A),({downloaded:F,contentLength:H})=>{H>0&&b(y,Math.min(1,F/H),!0)})}catch(F){b(I,F&&typeof F=="object"&&"message"in F&&typeof F.message=="string"?F.message:"Update failed",!0),b(f,!1)}}},E=()=>{d(f)||(i(!1),e.onClose?.())},C=F=>{F.key==="Escape"&&E()};var G=pe(),N=w(G);{var B=F=>{var H=hrt(),U=k(H),_=k(U),j=Z(k(_),2),D=k(j);Fu(D,{class:"h-4 w-4"});var P=Z(_,2);{var te=z=>{var ie=drt(),ue=k(ie),be=Z(k(ue),2),ce=Te(be,!0),ke=Z(be,2);{var J=Me=>{var St=ert(),dn=Z(w(St),2),un=Te(dn,!0);oe(()=>ae(un,d(a))),g(Me,St)};O(ke,Me=>{d(a)&&Me(J)})}var Ee=Z(ke,2);{var ge=Me=>{var St=trt(),dn=Z(w(St),2),un=Te(dn);oe(Dn=>ae(un,`${(x[d(l)]||d(l))??""} (${Dn??""})`),[()=>V(d(l),d(o))]),g(Me,St)};O(Ee,Me=>{(d(l)||d(o))&&Me(ge)})}var Ye=Z(Ee,4),fe=Te(Ye,!0),Be=Z(Ye,4),Ne=Te(Be,!0),qe=Z(ue,2);{var ot=Me=>{var St=ort(),dn=k(St),un=Te(dn),Dn=Z(dn,2);{var Vn=tn=>{var ei=nrt(),us=Te(ei,!0);oe(()=>ae(us,d(A).body)),g(tn,ei)};O(Dn,tn=>{d(A).body&&tn(Vn)})}var $n=Z(Dn,2);{var ti=tn=>{var ei=irt(),us=k(ei),$i=Te(us),ye=Z(us,2),Ge=Te(ye);oe((Ce,Re)=>{go($i,`width: ${Ce??""}%`),ae(Ge,`Downloading… ${Re??""}%`)},[()=>Math.round(d(y)*100),()=>Math.round(d(y)*100)]),g(tn,ei)},Tn=tn=>{var ei=rrt(),us=k(ei);rt(us,{size:"sm",onclick:Y,children:(ye,Ge)=>{var Ce=srt(),Re=w(Ce);jy(Re,{class:"mr-1.5 h-3.5 w-3.5"}),g(ye,Ce)},$$slots:{default:!0}});var $i=Z(us,2);rt($i,{size:"sm",variant:"ghost",onclick:()=>n("https://github.com/forwardemail/mail.forwardemail.net/releases"),children:(ye,Ge)=>{var Ce=le("View on GitHub");g(ye,Ce)},$$slots:{default:!0}}),g(tn,ei)};O($n,tn=>{d(f)?tn(ti):tn(Tn,-1)})}var Wi=Z($n,2);{var qn=tn=>{var ei=art(),us=Te(ei,!0);oe(()=>ae(us,d(I))),g(tn,ei)};O(Wi,tn=>{d(I)&&tn(qn)})}oe(()=>ae(un,`Update available: v${d(A).version??""}`)),g(Me,St)};O(qe,Me=>{Do&&d(A)?.available&&Me(ot)})}var It=Z(qe,2),Zt=k(It),Rn=Z(k(Zt)),nn=Z(Zt,2),tt=Te(nn),xn=Z(nn,2),Wt=Te(xn),Gn=Z(It,2),Ot=k(Gn);rt(Ot,{variant:"outline",size:"sm",onclick:()=>n("https://github.com/forwardemail/mail.forwardemail.net/releases"),children:(Me,St)=>{var dn=lrt(),un=w(dn);nW(un,{class:"mr-1.5 h-3.5 w-3.5"}),g(Me,dn)},$$slots:{default:!0}});var vn=Z(Ot,2);rt(vn,{variant:"outline",size:"sm",onclick:()=>n("https://forwardemail.net"),children:(Me,St)=>{var dn=crt(),un=w(dn);nW(un,{class:"mr-1.5 h-3.5 w-3.5"}),g(Me,dn)},$$slots:{default:!0}}),oe(()=>{ae(ce,d(r)),ae(fe,d(u)),ae(Ne,d(c)||"BUSL-1.1")}),Xe("click",Rn,()=>n("https://forwardemail.net/about")),Xe("click",tt,()=>n("https://forwardemail.net/privacy")),Xe("click",Wt,()=>{E(),globalThis.history.pushState({route:"diagnostics",fromApp:!0},"","/mailbox/diagnostics"),globalThis.dispatchEvent(new PopStateEvent("popstate"))}),g(z,ie)},ne=z=>{var ie=urt();g(z,ie)};O(P,z=>{d(h)&&!d(m)?z(te):z(ne,-1)})}Xe("click",H,z=>{z.target===z.currentTarget&&E()}),Xe("keydown",H,C),Xe("click",j,E),g(F,H)};O(N,F=>{i()&&F(B)})}g(t,G),ct()}Eh(["click","keydown"]);var prt=R('<span class="inline-flex items-center justify-center h-4 w-4 rounded-sm opacity-0 group-hover:opacity-100 hover:bg-muted-foreground/20 transition-opacity shrink-0" role="button" tabindex="-1" aria-label="Close tab"><!></span>'),Art=R('<button type="button" role="tab" data-testid="tab"><!> <span class="truncate flex-1 text-left text-xs"> </span> <!></button>'),grt=R('<div class="fixed inset-0 z-50" role="presentation" tabindex="-1"><div class="fixed z-50 min-w-[160px] border border-border bg-popover p-1 shadow-md text-sm" role="menu" aria-label="Tab actions"><button type="button" class="flex items-center w-full px-3 py-1.5 hover:bg-accent transition-colors text-left" role="menuitem">Close Tab</button> <button type="button" class="flex items-center w-full px-3 py-1.5 hover:bg-accent transition-colors text-left" role="menuitem">Close Other Tabs</button> <button type="button" class="flex items-center w-full px-3 py-1.5 hover:bg-accent transition-colors text-left" role="menuitem">Close Tabs to the Right</button></div></div>'),brt=R('<div class="hidden md:flex items-center h-9 bg-muted/30 border-b border-border px-1 gap-0.5 overflow-x-auto shrink-0" role="tablist" data-testid="tab-bar"></div> <!>',1);function frt(t,e){lt(e,!0);const n=()=>lr($0,"$tabs",s),i=()=>lr(Gg,"$activeTabId",s),[s,r]=$f();let a=$(null);function o(I){nI(I)}function l(I,x){I.stopPropagation(),RS(x)}function c(I,x){I.preventDefault(),b(a,{x:I.clientX,y:I.clientY,tabId:x},!0)}function u(){b(a,null)}function h(I){if(!d(a))return;const x=d(a).tabId;switch(u(),I){case"close":RS(x);break;case"close-others":QXe(x);break;case"close-right":JXe(x);break}}function m(I){return I.type==="message"?VG:(I.folder?.toUpperCase()||"")==="INBOX"?iw:MK}function p(I,x){I.button===1&&(I.preventDefault(),RS(x))}var A=pe(),f=w(A);{var y=I=>{var x=brt(),V=w(x);Mi(V,5,n,E=>E.id,(E,C)=>{const G=q(()=>m(d(C)));var N=Art(),B=k(N);T(B,()=>d(G),(j,D)=>{D(j,{class:"h-3.5 w-3.5 shrink-0 opacity-60"})});var F=Z(B,2),H=Te(F,!0),U=Z(F,2);{var _=j=>{var D=prt(),P=k(D);Fu(P,{class:"h-3 w-3"}),Xe("click",D,te=>l(te,d(C).id)),g(j,D)};O(U,j=>{d(C).closable&&j(_)})}oe(()=>{bi(N,"aria-selected",d(C).id===i()),bi(N,"data-tab-type",d(C).type),bi(N,"data-tab-id",d(C).id),_i(N,1,`group relative inline-flex items-center gap-1.5 h-7 min-w-[120px] max-w-[220px] px-2.5 text-sm transition-colors shrink-0 border border-transparent
4465
+ `}const Bst=140,Xst=new Set(["http:","https:","mailto:","tel:"]);function Rst(t){const e=String(t??"").trim().replace(/^[<([\s]+|[>)\]\s.,;:!?]+$/g,"");if(!e||/\s/.test(e)||e.includes("@"))return null;const i=/^[a-z][a-z0-9+.-]*:/i.test(e)?e:`http://${e}`;let s;try{s=new URL(i)}catch{return null}if(s.protocol!=="http:"&&s.protocol!=="https:")return null;const r=s.hostname.toLowerCase(),a=/^[a-z0-9-]+(\.[a-z0-9-]+)+$/.test(r),o=/^\d{1,3}(\.\d{1,3}){3}$/.test(r);return a||o?r:null}const yie=t=>t.replace(/^www\./,"");function Iie(t,e=Bst){if(t.length<=e)return t;const n=Math.ceil((e-1)*.6),i=e-1-n;return`${t.slice(0,n)}…${t.slice(t.length-i)}`}function Fst(t,e){const n={kind:"unsupported",display:"",prefix:"",host:"",suffix:"",isIdn:!1,mismatch:null};let i;try{i=new URL(String(t??""))}catch{return n}if(!Xst.has(i.protocol))return n;if(i.protocol==="mailto:"||i.protocol==="tel:"){const A=Iie(i.href);return{...n,kind:i.protocol==="mailto:"?"mailto":"tel",display:A}}i.username="",i.password="";const s=i.hostname,r=`${i.protocol}//`,o=`${i.port?`:${i.port}`:""}${i.pathname}${i.search}${i.hash}`,l=`${r}${s}${o}`,c=Iie(l),u=c.slice(r.length+s.length),h=s.split(".").some(A=>A.startsWith("xn--")),m=Rst(e),p=m&&yie(m)!==yie(s.toLowerCase())?{textHost:m}:null;return{kind:"http",display:c,prefix:r,host:s,suffix:u,isIdn:h,mismatch:p}}function Tst(t,e=null){const n=e??(typeof document<"u"?document.body:null);return n?(n.appendChild(t),{destroy(){t.parentNode===n&&n.removeChild(t)}}):{}}var Ust=R('<iframe title="Email content" class="fe-email-iframe svelte-1jd9ri2"></iframe>'),Lst=R('<div class="fe-email-loading svelte-1jd9ri2"><div class="fe-email-loading-indicator svelte-1jd9ri2"></div></div>'),Dst=R('<div class="fe-email-iframe-container svelte-1jd9ri2"><!></div>'),Qst=R('<span class="fe-link-preview-note svelte-1jd9ri2"> </span>'),Jst=R('<span class="fe-link-preview-note svelte-1jd9ri2">Internationalized domain</span>'),zst=R('<span class="fe-link-preview-dim svelte-1jd9ri2"> </span><span class="fe-link-preview-host svelte-1jd9ri2"> </span><span class="fe-link-preview-dim svelte-1jd9ri2"> </span>',1),Kst=R('<div role="status" aria-live="polite" data-testid="link-preview"><!> <span class="fe-link-preview-url"><!></span></div>'),Hst=R("<!> <!>",1);function WB(t,e){lt(e,!0);let n=We(e,"plainText",3,!1),i=$(null),s=$(600),r=$(!1),a=$(!1),o=$(0);const l=Do;let c=$(null);const u=new Set;let h=null;const m=new Map;function p(){return typeof document>"u"?!1:!document.body.classList.contains("light-mode")}const A=q(()=>`${e.messageId}:${d(o)}:${n()}`),f=q(()=>{const ne=d(a)?d(r):p(),z=e.html||"";return n()?fie(eI(z),ne,!0):fie(z,ne,!1)});function y(){if(!d(i))return 0;try{const ne=d(i).contentDocument;if(!ne)return 0;const z=ne.querySelector(".fe-email-viewport")||ne.querySelector(".fe-email-content"),ie=z?z.getBoundingClientRect().height:0;return Math.max(Math.ceil(ie),ne.body?.scrollHeight||0,ne.body?.offsetHeight||0,ne.documentElement?.scrollHeight||0,ne.documentElement?.offsetHeight||0)}catch{return 0}}function I(){return d(i)?d(s)!==600&&d(s)>50?!0:y()>10:!1}function x(){if(!d(a))return;const ne=e.messageId,z=e.html;if(!(!z||z.length<100)&&!u.has(ne)){if(d(s)<=150){const ie=y();if(ie>50){b(s,ie,!0),e.onHeightChange?.(d(s)),W();return}}I()||(u.add(ne),console.warn("[EmailIframe] Content not rendered after delay, forcing recreation for message:",ne),uX(o))}}let V=null;function W(){V||(V=setInterval(()=>{if(!d(a)||!d(i)){Y();return}const ne=y();ne>50&&ne!==d(s)&&(b(s,ne,!0),e.onHeightChange?.(d(s)))},500))}function Y(){V&&(clearInterval(V),V=null)}function E(){h&&(clearTimeout(h),h=null),h=setTimeout(()=>{x()},500)}Hr(()=>{const ne=e.messageId;b(s,m.get(ne)||600,!0),Y(),d(a)&&E()});function C(ne){const z=ne.origin;if(z&&z!=="null"&&z!==window.location.origin||d(i)&&ne.source!==d(i).contentWindow)return;const ie=ne.data;if(!(!ie||typeof ie!="object"||!ie.type||!["height","link","link-hover","link-hover-end","form","ready","swipe"].includes(ie.type)))switch(ie.type){case"ready":h&&(clearTimeout(h),h=null);break;case"height":if(typeof ie.payload?.height=="number"&&ie.payload.height>0){const be=Math.max(ie.payload.height,50);be!==d(s)&&(b(s,be,!0),m.set(e.messageId,be),e.onHeightChange?.(d(s)),h&&(clearTimeout(h),h=null))}break;case"link":b(c,null),typeof ie.payload?.url=="string"&&e.onLinkClick?.(ie.payload.url,ie.payload.isMailto===!0);break;case"link-hover":if(l&&typeof ie.payload?.url=="string"){const be=Fst(ie.payload.url,typeof ie.payload.text=="string"?ie.payload.text:"");b(c,be.kind==="unsupported"?null:be,!0)}break;case"link-hover-end":b(c,null);break;case"form":ie.payload&&e.onFormSubmit?.(ie.payload.action||"",ie.payload.method||"get",ie.payload.data||{});break;case"swipe":ie.payload?.phase&&e.onSwipe?.(ie.payload.phase,ie.payload);break}}let G=null,N={startX:0,startY:0,active:!1,direction:null};const B=ne=>{!ne.touches||ne.touches.length!==1||(N.startX=ne.touches[0].clientX,N.startY=ne.touches[0].clientY,N.active=!1,N.direction=null,e.onSwipe?.("start",{x:N.startX,y:N.startY}))},F=ne=>{if(!ne.touches||ne.touches.length!==1||!N.startX)return;const z=ne.touches[0].clientX-N.startX,ie=ne.touches[0].clientY-N.startY;!N.active&&Math.abs(z)>15&&Math.abs(z)>Math.abs(ie)*2&&(N.active=!0,N.direction=z>0?"right":"left"),N.active&&e.onSwipe?.("move",{dx:z,dy:ie})},H=()=>{e.onSwipe?.("end",{active:N.active,direction:N.direction}),N.startX=0,N.startY=0,N.active=!1,N.direction=null};let U=null;const _=()=>{if(d(i))try{const ne=d(i).contentDocument;if(!ne||ne===U)return;U&&(U.removeEventListener("touchstart",B),U.removeEventListener("touchmove",F),U.removeEventListener("touchend",H),U.removeEventListener("touchcancel",H)),ne.addEventListener("touchstart",B,{passive:!0,capture:!0}),ne.addEventListener("touchmove",F,{passive:!0,capture:!0}),ne.addEventListener("touchend",H,{passive:!0,capture:!0}),ne.addEventListener("touchcancel",H,{passive:!0,capture:!0}),U=ne}catch{}};_d(()=>{b(a,!0),window.addEventListener("message",C),b(r,p(),!0),E(),G=new MutationObserver(()=>{const ne=p();ne!==d(r)&&(b(r,ne,!0),uX(o))}),G.observe(document.body,{attributes:!0,attributeFilter:["class"]})}),XA(()=>{b(a,!1),b(c,null),window.removeEventListener("message",C),G?.disconnect(),Y(),U&&(U.removeEventListener("touchstart",B),U.removeEventListener("touchmove",F),U.removeEventListener("touchend",H),U.removeEventListener("touchcancel",H),U=null),h&&(clearTimeout(h),h=null)});var j=Hst(),D=w(j);IO(D,()=>d(A),ne=>{var z=Dst(),ie=k(z);{var ue=ce=>{var ke=Ust();bo(ke,J=>b(i,J),()=>d(i)),oe(()=>{bi(ke,"srcdoc",d(f)),bi(ke,"sandbox",Na?"allow-scripts allow-same-origin":"allow-scripts"),go(ke,`height: ${d(s)??""}px;`)}),ed("load",ke,_),g(ce,ke)},be=ce=>{var ke=Lst();oe(()=>go(ke,`min-height: ${d(s)??""}px;`)),g(ce,ke)};O(ie,ce=>{e.html&&e.html.length>0?ce(ue):ce(be,-1)})}g(ne,z)});var P=Z(D,2);{var te=ne=>{var z=Kst();let ie;var ue=k(z);{var be=Ye=>{var fe=Qst(),Be=Te(fe);oe(()=>ae(Be,`Text says ${d(c).mismatch.textHost??""}, link goes to`)),g(Ye,fe)},ce=Ye=>{var fe=Jst();g(Ye,fe)};O(ue,Ye=>{d(c).mismatch?Ye(be):d(c).isIdn&&Ye(ce,1)})}var ke=Z(ue,2),J=k(ke);{var Ee=Ye=>{var fe=zst(),Be=w(fe),Ne=Te(Be,!0),qe=Z(Be),ot=Te(qe,!0),It=Z(qe),Zt=Te(It,!0);oe(()=>{ae(Ne,d(c).prefix),ae(ot,d(c).host),ae(Zt,d(c).suffix)}),g(Ye,fe)},ge=Ye=>{var fe=le();oe(()=>ae(fe,d(c).display)),g(Ye,fe)};O(J,Ye=>{d(c).kind==="http"?Ye(Ee):Ye(ge,-1)})}xO(z,Ye=>Tst?.(Ye)),oe(()=>ie=_i(z,1,"fe-link-preview svelte-1jd9ri2",null,ie,{"fe-link-preview-warn":d(c).mismatch||d(c).isIdn})),g(ne,z)};O(P,ne=>{d(c)&&ne(te)})}g(t,j),ct()}let WC,FK=0,VB=null,SB=null,Zie=!1;const TK=5*60*1e3,$u=(...t)=>console.log("[updater]",...t),mZ=(...t)=>console.warn("[updater]",...t);async function jst(){if(WC!==void 0)return WC;try{WC=await Promise.resolve().then(()=>CWe),$u("plugin module loaded")}catch(t){mZ("plugin module failed to load:",t),WC=null}return WC}function Ost(t){return typeof t!="string"?!1:/^\d+\.\d+\.\d+/.test(t)}async function Pst(){try{const{arch:t,platform:e}=await Promise.resolve().then(()=>NWe);return{arch:await t(),platform:await e()}}catch{return{arch:"unknown",platform:"unknown"}}}async function n_(t={}){const e=t?.force===!0;if($u("checkForUpdates() called"),!Do)return $u("skipped: not a Tauri desktop build"),null;const n=Date.now(),i=n-FK;if(!e&&i<TK)return $u(`rate-limited: last check was ${Math.round(i/1e3)}s ago (min interval ${TK/1e3}s)`),null;FK=n;const s=await jst();if(!s)return $u("skipped: plugin-updater module unavailable"),null;try{$u("calling mod.check() — this issues an HTTP GET from the Rust backend");const r=await s.check();if($u("mod.check() returned",{isNull:r==null,available:r?.available,version:r?.version,currentVersion:r?.currentVersion,date:r?.date}),!r)return $u("no update returned (server said up-to-date or returned nothing)"),null;if(r.version&&!Ost(r.version))return mZ("invalid version string from server:",r.version),null;const a=await Pst();return $u("arch/platform detected:",a),{available:r.available,version:r.version,body:typeof r.body=="string"?r.body.slice(0,1e4):"",date:r.date||null,currentVersion:r.currentVersion,arch:a.arch,platform:a.platform,_update:r}}catch(r){return mZ("mod.check() threw:",r?.message||r),null}}async function xie(){try{const{platform:t}=await Promise.resolve().then(()=>NWe);if(t()!=="macos")return null;const{resourceDir:e}=await Promise.resolve().then(()=>jZe),n=await e();if(typeof n!="string")return null;if(n.includes("AppTranslocation")||n.includes("/private/var/folders/"))return'The app is running from a temporary location (App Translocation). Please move "Forward Email" to your Applications folder and reopen it to enable updates.';if(n.startsWith("/Users/")&&!n.includes("/Applications/")&&(n.includes("/Downloads/")||n.includes("/Desktop/")))return'Please move "Forward Email" to your Applications folder to enable updates.'}catch{}return null}async function i_(t,e){if(!Do||!t?._update)return;const n=await xie();if(n){const i=new Error(n);throw i.code="BAD_INSTALL_LOCATION",i}try{let i=0,s=0,r=-10;$u("downloadAndInstall() starting for version",t.version),await t._update.downloadAndInstall(o=>{if(o.event==="Started"){if(s=o.data.contentLength||0,$u(`download started: ${s} bytes`),s>500*1024*1024){mZ("update too large — aborting:",s);return}}else if(o.event==="Progress"){if(i+=o.data.chunkLength||0,s){const l=Math.floor(i/s*100);l-r>=10&&($u(`download progress: ${l}%`),r=l)}e&&typeof e=="function"&&e({downloaded:Math.min(i,s||i),contentLength:s})}else o.event==="Finished"&&($u("download finished — installing"),e&&typeof e=="function"&&e({downloaded:s,contentLength:s}))}),$u("install complete — relaunching to apply the update");const{relaunch:a}=await Promise.resolve().then(()=>wWe);await a()}catch(i){if(String(i?.message||i||"").includes("Failed to move the new app into place")){const r=await xie(),a=new Error(r||"Could not install the update because the app location is not writable. Try reinstalling the app or running with administrator permissions.");throw a.code="BAD_INSTALL_LOCATION",mZ("install failed (bad location):",i),a}throw mZ("downloadAndInstall failed:",i),i}}function _st(t){return!t||typeof t!="object"?null:t.release&&typeof t.release=="object"?t.release.tagName||t.release.tag_name||t.release.version||null:t.tagName||t.tag_name||t.version||t.tag||null}function yye(t){!Do||!_st(t)||(FK=0,hF&&hF())}let hF=null;async function $st(t={}){if(!Do){$u("initAutoUpdater: not a Tauri desktop build, no-op");return}const{onUpdateAvailable:e,onProgress:n,intervalMs:i=60*60*1e3,wsClient:s}=t,r=Math.max(i,TK);$u("initAutoUpdater: starting",{intervalMs:r,hasOnUpdateAvailable:typeof e=="function",hasOnProgress:typeof n=="function",hasOnError:typeof t.onError=="function",hasWsClient:!!s});async function a(){try{const o=await n_();if(!o?.available){$u("doCheck: no update available");return}$u(`doCheck: update available → v${o.version} (current v${o.currentVersion})`);let l=!0;e&&typeof e=="function"?(l=await e(o),$u("onUpdateAvailable callback returned",l)):$u("no onUpdateAvailable callback — will auto-install silently"),l?await i_(o,n):$u("install declined by caller")}catch(o){if(o?.code==="BAD_INSTALL_LOCATION"){if(!Zie&&(Zie=!0,mZ(o.message),typeof t.onError=="function"))try{t.onError(o)}catch{}return}mZ("auto-update check failed:",o)}}hF=a,s&&typeof s.on=="function"&&(VB=s.on("newRelease",yye)),setTimeout(a,1e4),SB=setInterval(a,r)}function qst(){SB&&(clearInterval(SB),SB=null),VB&&(VB(),VB=null),hF=null}const Iye=Object.freeze(Object.defineProperty({__proto__:null,checkForUpdates:n_,downloadAndInstall:i_,handleWsNewRelease:yye,initAutoUpdater:$st,stopAutoUpdater:qst},Symbol.toStringTag,{value:"Module"}));var ert=R('<dt class="text-muted-foreground">Built</dt> <dd> </dd>',1),trt=R('<dt class="text-muted-foreground">Platform</dt> <dd> </dd>',1),nrt=R('<div class="mb-3 max-h-32 overflow-y-auto whitespace-pre-wrap text-xs text-muted-foreground"> </div>'),irt=R('<div class="space-y-2"><div class="h-1.5 w-full overflow-hidden rounded bg-muted"><div class="h-full bg-primary transition-all"></div></div> <div class="text-xs text-muted-foreground"> </div></div>'),srt=R("<!> Install and restart",1),rrt=R('<div class="flex items-center gap-2"><!> <!></div>'),art=R('<div class="mt-2 text-xs text-destructive"> </div>'),ort=R('<div class="rounded-md border border-primary/40 bg-primary/10 p-3 text-sm"><div class="mb-2 font-medium"> </div> <!> <!> <!></div>'),lrt=R("<!> Release Notes",1),crt=R("<!> Website",1),drt=R('<div class="space-y-3 p-5"><dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5 text-sm"><dt class="text-muted-foreground">Version</dt> <dd class="font-mono"> </dd> <!> <!> <dt class="text-muted-foreground">Update</dt> <dd> </dd> <dt class="text-muted-foreground">License</dt> <dd> </dd></dl> <!> <div class="border-t border-border pt-3 text-xs text-muted-foreground"><p>Made by the <button class="text-fg-link hover:underline inline cursor-pointer">Forward Email</button> team. Open-source, privacy-first, no tracking.</p> <p class="mt-2"><button class="text-fg-link hover:underline inline cursor-pointer">Privacy Policy</button></p> <p class="mt-2"><button class="hover:underline inline cursor-pointer">Run diagnostics</button></p></div> <div class="flex items-center gap-2 pt-1"><!> <!></div></div>'),urt=R('<div class="flex items-center justify-center p-10 text-sm text-muted-foreground">Loading...</div>'),hrt=R('<div class="fixed inset-0 z-[100] flex items-center justify-center bg-black/50" role="dialog" aria-modal="true" aria-label="About Forward Email"><div class="w-[420px] overflow-hidden rounded-lg border border-border bg-background shadow-xl"><div class="flex items-start justify-between p-5 pb-0"><div class="flex items-center gap-3"><img src="/icons/icon-256.png" alt="Forward Email" class="h-14 w-14 rounded-xl"/> <div><h2 class="text-lg font-semibold">Forward Email</h2> <p class="text-sm text-muted-foreground">Privacy-focused email</p></div></div> <button class="rounded-md p-1 hover:bg-accent" aria-label="Close"><!></button></div> <!></div></div>');function mrt(t,e){lt(e,!0);const n=async F=>{try{await C5(F,{log:()=>{}})}catch{}};let i=We(e,"open",15,!1);const s="0.14.25";let r=$(br(s)),a=$(""),o=$(""),l=$(""),c=$("BUSL-1.1"),u=$(""),h=$(!1),m=$(!1),p=0,A=$(null),f=$(!1),y=$(0),I=$("");const x={macos:"macOS",windows:"Windows",linux:"Linux"},V=(F,H)=>{const U=(H||"").toLowerCase(),_=(F||"").toLowerCase();return U==="aarch64"||U==="arm64"?_==="macos"?"Apple Silicon":"ARM64":U==="x86_64"||U==="x64"?_==="macos"?"Intel (x64)":"x64":U==="x86"?"x86":H},W=async()=>{const F=++p;if(b(m,!0),b(h,!1),b(u,Na?"Checking...":d(r)?`Web build (v${d(r)})`:"Web build",!0),Na){try{const H=await The();if(F!==p)return;H&&(b(r,H.version||d(r)||s,!0),b(a,H.buildDate||"",!0),b(o,H.arch||"",!0),b(l,H.os||"",!0),b(c,H.license||"BUSL-1.1",!0))}catch{try{const H=await Fhe();if(F!==p)return;H&&b(r,H,!0)}catch{b(r,d(r)||s,!0)}}try{const H=await n_({force:!0});if(F!==p)return;H?.available?(b(u,`Update available: v${H.version}`),b(A,H,!0)):(b(u,d(r)?`Up to date (v${d(r)})`:"Up to date",!0),b(A,null))}catch{if(F!==p)return;b(u,"Unable to check"),b(A,null)}}else b(r,d(r)||s,!0),b(a,""),b(o,""),b(l,""),b(c,"BUSL-1.1");F===p&&(b(m,!1),b(h,!0))};Hr(()=>{i()&&W()});const Y=async()=>{if(!(!d(A)||d(f))){b(f,!0),b(I,""),b(y,0);try{await i_(d(A),({downloaded:F,contentLength:H})=>{H>0&&b(y,Math.min(1,F/H),!0)})}catch(F){b(I,F&&typeof F=="object"&&"message"in F&&typeof F.message=="string"?F.message:"Update failed",!0),b(f,!1)}}},E=()=>{d(f)||(i(!1),e.onClose?.())},C=F=>{F.key==="Escape"&&E()};var G=pe(),N=w(G);{var B=F=>{var H=hrt(),U=k(H),_=k(U),j=Z(k(_),2),D=k(j);Fu(D,{class:"h-4 w-4"});var P=Z(_,2);{var te=z=>{var ie=drt(),ue=k(ie),be=Z(k(ue),2),ce=Te(be,!0),ke=Z(be,2);{var J=Me=>{var St=ert(),dn=Z(w(St),2),un=Te(dn,!0);oe(()=>ae(un,d(a))),g(Me,St)};O(ke,Me=>{d(a)&&Me(J)})}var Ee=Z(ke,2);{var ge=Me=>{var St=trt(),dn=Z(w(St),2),un=Te(dn);oe(Dn=>ae(un,`${(x[d(l)]||d(l))??""} (${Dn??""})`),[()=>V(d(l),d(o))]),g(Me,St)};O(Ee,Me=>{(d(l)||d(o))&&Me(ge)})}var Ye=Z(Ee,4),fe=Te(Ye,!0),Be=Z(Ye,4),Ne=Te(Be,!0),qe=Z(ue,2);{var ot=Me=>{var St=ort(),dn=k(St),un=Te(dn),Dn=Z(dn,2);{var Vn=tn=>{var ei=nrt(),us=Te(ei,!0);oe(()=>ae(us,d(A).body)),g(tn,ei)};O(Dn,tn=>{d(A).body&&tn(Vn)})}var $n=Z(Dn,2);{var ti=tn=>{var ei=irt(),us=k(ei),$i=Te(us),ye=Z(us,2),Ge=Te(ye);oe((Ce,Re)=>{go($i,`width: ${Ce??""}%`),ae(Ge,`Downloading… ${Re??""}%`)},[()=>Math.round(d(y)*100),()=>Math.round(d(y)*100)]),g(tn,ei)},Tn=tn=>{var ei=rrt(),us=k(ei);rt(us,{size:"sm",onclick:Y,children:(ye,Ge)=>{var Ce=srt(),Re=w(Ce);jy(Re,{class:"mr-1.5 h-3.5 w-3.5"}),g(ye,Ce)},$$slots:{default:!0}});var $i=Z(us,2);rt($i,{size:"sm",variant:"ghost",onclick:()=>n("https://github.com/forwardemail/mail.forwardemail.net/releases"),children:(ye,Ge)=>{var Ce=le("View on GitHub");g(ye,Ce)},$$slots:{default:!0}}),g(tn,ei)};O($n,tn=>{d(f)?tn(ti):tn(Tn,-1)})}var Wi=Z($n,2);{var qn=tn=>{var ei=art(),us=Te(ei,!0);oe(()=>ae(us,d(I))),g(tn,ei)};O(Wi,tn=>{d(I)&&tn(qn)})}oe(()=>ae(un,`Update available: v${d(A).version??""}`)),g(Me,St)};O(qe,Me=>{Do&&d(A)?.available&&Me(ot)})}var It=Z(qe,2),Zt=k(It),Rn=Z(k(Zt)),nn=Z(Zt,2),tt=Te(nn),xn=Z(nn,2),Wt=Te(xn),Gn=Z(It,2),Ot=k(Gn);rt(Ot,{variant:"outline",size:"sm",onclick:()=>n("https://github.com/forwardemail/mail.forwardemail.net/releases"),children:(Me,St)=>{var dn=lrt(),un=w(dn);nW(un,{class:"mr-1.5 h-3.5 w-3.5"}),g(Me,dn)},$$slots:{default:!0}});var vn=Z(Ot,2);rt(vn,{variant:"outline",size:"sm",onclick:()=>n("https://forwardemail.net"),children:(Me,St)=>{var dn=crt(),un=w(dn);nW(un,{class:"mr-1.5 h-3.5 w-3.5"}),g(Me,dn)},$$slots:{default:!0}}),oe(()=>{ae(ce,d(r)),ae(fe,d(u)),ae(Ne,d(c)||"BUSL-1.1")}),Xe("click",Rn,()=>n("https://forwardemail.net/about")),Xe("click",tt,()=>n("https://forwardemail.net/privacy")),Xe("click",Wt,()=>{E(),globalThis.history.pushState({route:"diagnostics",fromApp:!0},"","/mailbox/diagnostics"),globalThis.dispatchEvent(new PopStateEvent("popstate"))}),g(z,ie)},ne=z=>{var ie=urt();g(z,ie)};O(P,z=>{d(h)&&!d(m)?z(te):z(ne,-1)})}Xe("click",H,z=>{z.target===z.currentTarget&&E()}),Xe("keydown",H,C),Xe("click",j,E),g(F,H)};O(N,F=>{i()&&F(B)})}g(t,G),ct()}Eh(["click","keydown"]);var prt=R('<span class="inline-flex items-center justify-center h-4 w-4 rounded-sm opacity-0 group-hover:opacity-100 hover:bg-muted-foreground/20 transition-opacity shrink-0" role="button" tabindex="-1" aria-label="Close tab"><!></span>'),Art=R('<button type="button" role="tab" data-testid="tab"><!> <span class="truncate flex-1 text-left text-xs"> </span> <!></button>'),grt=R('<div class="fixed inset-0 z-50" role="presentation" tabindex="-1"><div class="fixed z-50 min-w-[160px] border border-border bg-popover p-1 shadow-md text-sm" role="menu" aria-label="Tab actions"><button type="button" class="flex items-center w-full px-3 py-1.5 hover:bg-accent transition-colors text-left" role="menuitem">Close Tab</button> <button type="button" class="flex items-center w-full px-3 py-1.5 hover:bg-accent transition-colors text-left" role="menuitem">Close Other Tabs</button> <button type="button" class="flex items-center w-full px-3 py-1.5 hover:bg-accent transition-colors text-left" role="menuitem">Close Tabs to the Right</button></div></div>'),brt=R('<div class="hidden md:flex items-center h-9 bg-muted/30 border-b border-border px-1 gap-0.5 overflow-x-auto shrink-0" role="tablist" data-testid="tab-bar"></div> <!>',1);function frt(t,e){lt(e,!0);const n=()=>lr($0,"$tabs",s),i=()=>lr(Gg,"$activeTabId",s),[s,r]=$f();let a=$(null);function o(I){nI(I)}function l(I,x){I.stopPropagation(),RS(x)}function c(I,x){I.preventDefault(),b(a,{x:I.clientX,y:I.clientY,tabId:x},!0)}function u(){b(a,null)}function h(I){if(!d(a))return;const x=d(a).tabId;switch(u(),I){case"close":RS(x);break;case"close-others":QXe(x);break;case"close-right":JXe(x);break}}function m(I){return I.type==="message"?VG:(I.folder?.toUpperCase()||"")==="INBOX"?iw:MK}function p(I,x){I.button===1&&(I.preventDefault(),RS(x))}var A=pe(),f=w(A);{var y=I=>{var x=brt(),V=w(x);Mi(V,5,n,E=>E.id,(E,C)=>{const G=q(()=>m(d(C)));var N=Art(),B=k(N);T(B,()=>d(G),(j,D)=>{D(j,{class:"h-3.5 w-3.5 shrink-0 opacity-60"})});var F=Z(B,2),H=Te(F,!0),U=Z(F,2);{var _=j=>{var D=prt(),P=k(D);Fu(P,{class:"h-3 w-3"}),Xe("click",D,te=>l(te,d(C).id)),g(j,D)};O(U,j=>{d(C).closable&&j(_)})}oe(()=>{bi(N,"aria-selected",d(C).id===i()),bi(N,"data-tab-type",d(C).type),bi(N,"data-tab-id",d(C).id),_i(N,1,`group relative inline-flex items-center gap-1.5 h-7 min-w-[120px] max-w-[220px] px-2.5 text-sm transition-colors shrink-0 border border-transparent
4466
4466
  ${d(C).id===i()?"bg-background text-foreground border-border border-b-background shadow-sm -mb-px z-10":"text-muted-foreground hover:bg-muted/50 hover:text-foreground"}`),bi(N,"title",d(C).label),ae(H,d(C).label)}),Xe("click",N,()=>o(d(C).id)),ed("auxclick",N,j=>p(j,d(C).id)),Xe("contextmenu",N,j=>c(j,d(C).id)),g(E,N)});var W=Z(V,2);{var Y=E=>{var C=grt(),G=k(C),N=k(G),B=Z(N,2),F=Z(B,2);oe(()=>go(G,`left: ${d(a).x??""}px; top: ${d(a).y??""}px;`)),Xe("click",C,u),Xe("keydown",C,H=>{H.key==="Escape"&&u()}),Xe("click",N,()=>h("close")),Xe("click",B,()=>h("close-others")),Xe("click",F,()=>h("close-right")),g(E,C)};O(W,E=>{d(a)&&E(Y)})}g(I,x)};O(f,I=>{n().length>1&&I(y)})}g(t,A),ct(),r()}Eh(["click","contextmenu","keydown"]);var yrt=R('<span class="fe-mobile-tab-badge svelte-1glwvao"> </span>'),Irt=R('<nav class="fe-mobile-tabbar fixed bottom-0 left-0 right-0 z-50 flex items-stretch border-t border-border bg-background md:hidden svelte-1glwvao" aria-label="Main navigation"><button type="button" aria-label="Inbox"><span class="fe-mobile-tab-icon svelte-1glwvao"><!> <!></span> <span class="fe-mobile-tab-label svelte-1glwvao">Inbox</span></button> <button type="button" aria-label="Search"><span class="fe-mobile-tab-icon svelte-1glwvao"><!></span> <span class="fe-mobile-tab-label svelte-1glwvao">Search</span></button> <button type="button" aria-label="Compose"><span class="fe-mobile-tab-icon svelte-1glwvao"><!></span> <span class="fe-mobile-tab-label svelte-1glwvao">Compose</span></button> <button type="button" aria-label="Settings"><span class="fe-mobile-tab-icon svelte-1glwvao"><!></span> <span class="fe-mobile-tab-label svelte-1glwvao">Settings</span></button></nav>');function Zrt(t,e){let n=We(e,"inboxUnseenCount",3,0),i=We(e,"activeTab",3,"inbox");var s=Irt(),r=k(s);let a;var o=k(r),l=k(o);iw(l,{class:"h-5 w-5"});var c=Z(l,2);{var u=C=>{var G=yrt(),N=Te(G,!0);oe(()=>{bi(G,"aria-label",`${n()??""} unread`),ae(N,n()>99?"99+":n())}),g(C,G)};O(c,C=>{n()>0&&C(u)})}var h=Z(r,2);let m;var p=k(h),A=k(p);WY(A,{class:"h-5 w-5"});var f=Z(h,2);let y;var I=k(f),x=k(I);Z5(x,{class:"h-5 w-5"});var V=Z(f,2);let W;var Y=k(V),E=k(Y);uF(E,{class:"h-5 w-5"}),oe(()=>{a=_i(r,1,"fe-mobile-tab svelte-1glwvao",null,a,{"fe-mobile-tab-active":i()==="inbox"}),bi(r,"aria-current",i()==="inbox"?"page":void 0),m=_i(h,1,"fe-mobile-tab svelte-1glwvao",null,m,{"fe-mobile-tab-active":i()==="search"}),bi(h,"aria-current",i()==="search"?"page":void 0),y=_i(f,1,"fe-mobile-tab svelte-1glwvao",null,y,{"fe-mobile-tab-active":i()==="compose"}),W=_i(V,1,"fe-mobile-tab svelte-1glwvao",null,W,{"fe-mobile-tab-active":i()==="settings"}),bi(V,"aria-current",i()==="settings"?"page":void 0)}),Xe("click",r,function(...C){e.onInbox?.apply(this,C)}),Xe("click",h,function(...C){e.onSearch?.apply(this,C)}),Xe("click",f,function(...C){e.onCompose?.apply(this,C)}),Xe("click",V,function(...C){e.onSettings?.apply(this,C)}),g(t,s)}Eh(["click"]);var xrt=new Set(["$$slots","$$events","$$legacy"]);function SY(t,e){lt(e,!0);/**
4467
4467
  * @license @lucide/svelte v0.577.0 - ISC
4468
4468
  *
@@ -5504,7 +5504,7 @@ ${yt}`,!0),Ts?.markBaseline?.(),Ie?.focusTop&&ph().then(()=>{d(ei)?.focus(),d(ei
5504
5504
  visibility: visible !important;
5505
5505
  opacity: 1 !important;
5506
5506
  }
5507
- `;document.head.append(qIe);Do&&Qa.addShortcuts(TRe);function E_(){const e=new URLSearchParams(globalThis.location.search).get("add_account")==="true";return globalThis.location.pathname==="/login"?"login":globalThis.location.pathname.startsWith("/calendar")?"calendar":globalThis.location.pathname.startsWith("/contacts")?"contacts":globalThis.location.pathname.startsWith("/mailbox/profile")?"profile":globalThis.location.pathname.startsWith("/mailbox/settings")?"settings":globalThis.location.pathname.startsWith("/mailbox/diagnostics")?"diagnostics":globalThis.location.pathname.startsWith("/mailbox")?"mailbox":globalThis.location.pathname==="/"||globalThis.location.pathname===""?e?"login":k_()?"mailbox":"login":"login"}const gH=new Set(["mailbox","settings","profile","calendar","contacts"]),e1e=()=>!!(Se.get("authToken")||Se.get("alias_auth")||Se.get("api_key")),k_=()=>U1t({hasReadableCredentials:e1e,isVaultLocked:Jf}),qu=Li(E_()),ll=()=>Qe(qu);let bH=!1,vB=!1,t1e=!1,lv=null,cv=null,dv=null;const mS=t=>{const e=t||ll(),n=e==="mailbox",i=e==="settings",s=e==="calendar",r=e==="contacts",a=bH&&!vB&&n,o=a&&!t1e;Qa.setEnabled(n&&!o),a?Qa.setContext("compose"):n?Qa.setContext("list"):i?Qa.setContext("settings"):s?Qa.setContext("calendar"):r?Qa.setContext("contacts"):Qa.setContext("default")},ps={mailboxView:{storageUsed:Qw,storageTotal:f5,localUsage:$J,localQuota:qJ,indexCount:ez,indexSize:tz,syncPending:tee,bodyIndexingEnabled:Jw,starredOnly:KXe,layoutMode:G0e,threadingEnabled:Tj,selectedConversationIds:u0,selectedConversation:eN,selectedMessage:Lo,messageBody:K1,attachments:FX,searchResults:uA,searchActive:tg,searching:RN,accounts:bG,currentAccount:sp,accountMenuOpen:IE,sidebarOpen:Uj,mobileReader:zXe,showFilters:Lj,selectedConversationCount:Dj,bulkMoveOpen:cO,availableMoveTargets:dO,availableLabels:Gb,query:eb,unreadOnly:cA,hasAttachmentsOnly:dA,messages:wl,page:Ny,hasNextPage:_g,filteredMessages:t3,filteredConversations:UX,loading:Lm,messageLoading:TX,load:async()=>N0e(),loadMessages:async()=>sRe(),toggleRead:async t=>w0e(t),archiveMessage:async t=>ZE(t),deleteMessage:async(t,e)=>Y0e(t,e),toggleStar:async t=>nz(t),replyTo:async t=>U0e(t),replyAll:async t=>tRe(t),forwardMessage:async t=>nRe(t),onSearch:async t=>iRe(t),getSelectedConversations:()=>L0e(),getSelectedMessagesFromConversations:()=>D0e(),bulkMoveTo:async t=>rRe(t),contextMoveTo:async(t,e)=>aRe(t,e),contextLabel:async(t,e,n)=>Q0e(t,e,n),createLabel:async(t,e)=>J0e(t,e),loadLabels:async()=>SZ(),rebuildFullSearchIndex:async()=>az(),rebuildSearchFromCache:async()=>mRe(),toggleBodyIndexing(){see()},toggleAccountMenu(){pRe()},toggleBulkMove(){ARe()},addAccount(){u3()},switchAccount:async t=>g2(t),signOut:async()=>AO(),setLayoutMode:async t=>C0e(t),moveTarget:vc,downloadOriginal:async t=>WRe(t),viewOriginal:async t=>SRe(t)},settingsModal:(()=>{const t=Li(!1);return{visible(e){return e!==void 0&&t.set(e),Qe(t)},open(){t.set(!0)},storageUsed:Qw,storageTotal:f5,localUsage:$J,localQuota:qJ,indexCount:ez,indexSize:tz,syncPending:tee,bodyIndexingEnabled:Jw,rebuildIndex:async()=>az(),toggleBodyIndexing(){see()}}})(),route:qu,currentRoute:ll},_re=document.querySelector("#toasts-root"),Ll=_re?yTe(_re):{show(){},dismiss(){},items:{subscribe:t=>t([])||(()=>{})}};globalThis.addEventListener("outbox-sent",t=>{const e=t?.detail?.subject;Ll.show(`Message sent${e?`: ${e}`:""}`,"success")});globalThis.addEventListener("mutation-queue-failed",()=>{Ll.show("Some changes couldn't be synced. Please try again.","error")});globalThis.addEventListener("mailbox-mutation-permanently-failed",t=>{Sn.actions.revertFailedMutation(t.detail)});const $re=D1t({isLockEnabled:Pm,isVaultConfigured:Zm,isUnlocked:ZZ});globalThis.addEventListener("fe:lock-app",()=>{!Pm()||!Zm()||(R9(),JN(),dw().then(()=>{MAe()}))});jXe(Ll);vYe(Ll);Ede(Ll);$he(Ll);ps.toasts=Ll;ps.mailboxView.toasts=Ll;Do&&(globalThis.__feHeartbeat=t=>{Promise.resolve().then(()=>VZ).then(({invoke:e})=>e("renderer_heartbeat",{seq:t})).then(e=>{e?.reloaded&&Ll.show("The page stopped responding and was reloaded.","info")}).catch(()=>{})});const fH=()=>{Na&&!Cc&&!LA||Promise.resolve().then(()=>Yg).then(({syncPushNotifications:t})=>t()).catch(t=>{console.warn("[main] Push notification sync failed:",t)})},iZt=()=>{if(Na&&!Cc&&!LA)return;const t=Se.get("email")||"";Promise.resolve().then(()=>Yg).then(({refreshAccountPushOnNextSync:e,syncPushNotifications:n})=>(e(t),n())).catch(e=>{console.warn("[main] Push notification sync failed:",e)})},qre=document.querySelector("#login-root"),eae=document.querySelector(".fe-login-shell");qre&&Bg(MKe,{target:qre,props:{onSuccess(t="/mailbox"){gRe?.(),iZt(),ps.navigate?ps.navigate(t,{replace:!0}):globalThis.location.replace(t)}}});const TF=document.querySelector("#settings-root"),UF=document.querySelector("#profile-root"),n1e=Li(ll()==="settings");TF&&Bg($tt,{target:TF,props:{navigate:t=>ps.navigate?.(t),active:n1e,storageUsed:ps.mailboxView.storageUsed,storageTotal:ps.mailboxView.storageTotal,localUsage:ps.mailboxView.localUsage,localQuota:ps.mailboxView.localQuota,syncPending:ps.mailboxView.syncPending,indexCount:ps.mailboxView.indexCount,indexSize:ps.mailboxView.indexSize,bodyIndexingEnabled:ps.mailboxView.bodyIndexingEnabled,rebuildIndex:ps.mailboxView.rebuildFullSearchIndex?.bind(ps.mailboxView)||ps.mailboxView.rebuildSearchFromCache?.bind(ps.mailboxView)||(async()=>{console.warn("rebuildIndex not available")}),toggleBodyIndexing:ps.mailboxView.toggleBodyIndexing.bind(ps.mailboxView),toasts:Ll,applyTheme:XY,applyFont:IH,applyDensity:yH}});const LF=document.querySelector("#diagnostics-root");let tae=null;function sZt(){tae||!LF||(tae=Bg(but,{target:LF}))}const i1e=Li(ll()==="profile");UF&&Bg(kdt,{target:UF,props:{navigate:t=>ps.navigate?.(t),active:i1e}});const DF=document.querySelector("#calendar-root");let nae=null,AZ={reload(){},prefillQuickEvent(){}};const s1e=Li(ll()==="calendar");let r1e=!1,QF=!1;function a1e(){if(!(nae||!DF))try{nae=Bg(ybt,{target:DF,props:{navigate:t=>ps.navigate?.(t),toasts:Ll,active:s1e,registerApi(t){t&&(AZ=t,ll()==="calendar"&&AZ.reload?.())}}})}catch(t){console.error("Failed to mount calendar component",t)}}ps.calendarView={load(){AZ.reload?.()},prefillQuickEvent(t){AZ.prefillQuickEvent?.(t)}};const pS=document.querySelector("#contacts-root");let JF={reload(){}};function o1e(){if(pS&&!pS.dataset.mounted)try{pS.dataset.mounted="1",Bg(cft,{target:pS,props:{navigate:t=>ps.navigate?.(t),toasts:Ll,registerApi(t){t&&(JF=t,ll()==="contacts"&&JF.reload?.())}}})}catch(t){console.error("Failed to mount contacts component",t)}}const l1e=()=>{AZ.reload?.()},c1e=t=>{const e=t.detail;if(e&&typeof e=="object"&&AZ.applyRemoteChange){AZ.applyRemoteChange(e);return}AZ.reload?.()},d1e=t=>{const e=t.detail,n=typeof e?.message=="string"?e.message:"",i=typeof e?.type=="string"?e.type:"error";n&&Ll?.show?.(n,i)};let lw=null,cw=null;globalThis.addEventListener("fe:calendar-changed",l1e);globalThis.addEventListener("fe:calendar-event-changed",c1e);globalThis.addEventListener("fe:mail-service-toast",d1e);function rZt(){globalThis.removeEventListener("fe:calendar-changed",l1e),globalThis.removeEventListener("fe:calendar-event-changed",c1e),globalThis.removeEventListener("fe:mail-service-toast",d1e),lw&&(globalThis.removeEventListener("fe:new-release",lw),lw=null),cw&&(globalThis.removeEventListener("fe:new-release",cw),cw=null)}const iae=document.querySelector("#compose-root");let aZt=null,gm={open(){},close(){},forward(){},reply(){},setContacts(){},isVisible:()=>!1,isMinimized:()=>!1,setToList(){},saveDraft(){}};const sae=document.querySelector("#passphrase-root");let mN={async open(){throw new Error("Passphrase modal not available")},close(){}};const zF=document.querySelector("#mailbox-root");let Qh=null;const u1e=Li(null),uv=new Map;function oZt(t){const e=typeof t.from=="string"?t.from:"",n=/<([^>]+)>/.exec(e)?.[1]||e,i=typeof t.html=="string"?t.html:"",s=typeof t.text=="string"?t.text:"";return{to:t.to,cc:t.cc,bcc:t.bcc,subject:t.subject,html:i||void 0,text:s||void 0,body:!i&&s?s:void 0,from:n||void 0,inReplyTo:t.inReplyTo,references:t.references,replyToMessageId:t._replyToMessageId,replyToMessageFolder:t._replyToMessageFolder,attachments:t.attachments}}async function lZt(t){const e=t?.emailData;if(!e)return;const n=oZt(e);try{Do?S2({action:"open",prefill:n}):gm.open(n)}catch(i){console.warn("[main] Failed to reopen composer after undo",i)}}function h1e(t){const e=t?.outboxId;if(!e)return;const n=Number(t?.undoWindowMs)||5e3,i=(t?.subject||"(No subject)").slice(0,40),s=t?.archive?Qe(Lo):null;let r=null;const a=()=>{uv.delete(e),r!=null&&Ll?.dismiss?.(r),EZ(),s&&ZE(s).catch(()=>{})},o=async()=>{const l=uv.get(e);l&&(clearTimeout(l),uv.delete(e)),r!=null&&Ll?.dismiss?.(r);try{const c=await mye(e);if(!c||c.status==="sending"||c.status==="sent"){Ll?.show?.("Message already sent","info");return}await e_(e),await lZt(c)}catch(c){console.warn("[main] Undo send failed",c)}};uv.set(e,setTimeout(a,n)),r=Ll?.show?.(`Sending "${i}"…`,"info",{duration:n,action:{label:"Undo",callback:()=>void o()}})??null}async function m1e(t,e={}){try{const n=Se.get("email")||"default",i=Sn.actions.getSentFolderPath?.();if(!i)return;t&&await Sn.actions.applyOptimisticSentMessage?.(t,e);try{await Sn.actions.refreshReplyTargets?.({force:!0})}catch(a){console.warn("[main] Failed to refresh reply targets after send:",a)}const s=i.toUpperCase();Sn.actions.invalidateFolderInMemCache?.(n,i);const r=(Qe(Sn.state.folders)||[]).find(a=>a?.path?.toUpperCase?.()===s);if(r){const{startInitialSync:a}=await Promise.resolve().then(()=>oue);a(n,[r],{wantBodies:!1})}Qe(Sn.state.selectedFolder)===i&&await Sn.actions.loadMessages?.(),Sn.actions.updateFolderUnreadCounts?.()}catch(n){console.warn("[main] Failed to refresh Sent folder after send:",n)}}if(iae)try{aZt=Bg(I1t,{target:iae,props:{toasts:Ll,mailboxView:u1e,onAddAccount:()=>u3(),onSent(t){const e=t||{};if(e?.undoSend){h1e(e);return}if(e?.archive){const n=Qe(Lo);n&&ZE(n).catch(i=>{console.error("[Compose] Failed to archive after send:",i)})}e?.queued||m1e(e?.sentCopy,{account:e?.account,sentFolder:e?.sentFolder})},registerApi(t){t&&(gm=t,lv&&(lv(),lv=null),t.visibility?.subscribe&&(lv=t.visibility.subscribe(e=>{bH=!!e,bH||(vB=!1),mS()})),cv&&(cv(),cv=null),t.minimized?.subscribe?cv=t.minimized.subscribe(e=>{vB=!!e,mS()}):t.isMinimized&&(vB=!!t.isMinimized(),mS()),dv&&(dv(),dv=null),t.compact?.subscribe&&(dv=t.compact.subscribe(e=>{t1e=!!e,mS()})))}}})}catch(t){console.error("Failed to mount compose component",t)}sae&&Bg(int,{target:sae,props:{registerApi(t){t&&(mN=t,ps.pgpPassphraseModal=mN,ps.mailboxView.passphraseModal=mN,rg.setPassphraseModal(mN))}}});const p1e=Li(ll()==="mailbox");zF&&(Bg(ydt,{target:zF,props:{mailboxView:ps.mailboxView,mailboxStore:Sn,navigate:t=>ps.navigate?.(t),active:p1e,applyTheme:XY,registerApi(t){t&&(Qh=t)}}}),Do&&(S0e("INBOX"),Lrt(),Qd.subscribe(t=>{const n=t.find(i=>i.path?.toUpperCase?.()==="INBOX")?.count??0;Promise.resolve().then(()=>b0e).then(({setBadgeCount:i})=>i(n)).catch(()=>{})})),Na&&_7e({navigate:t=>ps.navigate(t),log(...t){console.warn("[main]",...t)}}));const BB=t=>{eae&&(eae.style.display=t==="login"?"block":"none"),zF&&(zF.style.display=t==="mailbox"?"block":"none"),TF&&(TF.style.display=t==="settings"?"block":"none"),DF&&(DF.style.display=t==="calendar"?"block":"none"),pS&&(pS.style.display=t==="contacts"?"block":"none"),UF&&(UF.style.display=t==="profile"?"block":"none"),LF&&(LF.style.display=t==="diagnostics"?"block":"none")};let BY,ff=null,rae=null,QD=null;const cZt=()=>XY();ps.navigate=(t,e)=>{if(!t||typeof t!="string")return;if(!t.startsWith("/")){globalThis.location.href=t;return}const i=t.startsWith("/mailbox/settings")?"settings":t.startsWith("/mailbox/profile")?"profile":t.startsWith("/mailbox")?"mailbox":t.startsWith("/calendar")?"calendar":t.startsWith("/contacts")?"contacts":"login";if((i==="mailbox"||i==="settings"||i==="profile"||i==="calendar"||i==="contacts")&&!Se.get("authToken")&&!Se.get("alias_auth")){history.replaceState({route:"login"},"","/"),qu.set("login");return}const s=e?.replace===!0,r={route:i},a=window.location.hash,o=window.location.href;s?history.replaceState(r,"",t):history.pushState(r,"",t),window.location.hash!==a&&window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:o,newURL:window.location.href})),qu.set(E_()),t.includes("add_account=true")&&globalThis.dispatchEvent(new CustomEvent("login-clear-fields")),BY&&BY()};ps.mailboxView.navigate=ps.navigate;ps.settingsModal.navigate=ps.navigate;HXe(ps.navigate);const A1e=()=>{const t=ll();if(t!=="login"){if(history.length>1){history.back();return}t!=="mailbox"&&ps.navigate("/mailbox",{replace:!0})}};lnt({isEnabled:()=>{const t=ll();return t==="login"?!1:t==="mailbox"?history.length>1:Cc||history.length>1},onBack:A1e});Cc&&nO(()=>{ll()!=="mailbox"&&A1e()}).catch(t=>{console.warn("[main] Native back-button listener failed:",t)});ps.pgpPassphraseModal=mN;_1t();document.documentElement.dataset.os=Vde();Do&&document.addEventListener("click",t=>{const e=t.target;e instanceof HTMLInputElement&&e.type==="file"&&(t.preventDefault(),t.stopImmediatePropagation())},!0);globalThis.addEventListener("fe:compose-attachments-dropped",()=>{Ll.show("The original attachments are too large to carry into a forward. Please attach them manually.","warning",8e3)});Do?(ps.mailboxView.composeModal={open(t){S2({action:"open",prefill:t})},close(){},async forward(t){const e=Qe(Lo);let n=Qe(K1)||"";n||=await Hw(e||t)||"",n||=t?.body||"";const i=Kw(n),s=mO(e||{subject:t?.subject},i);S2({action:"forward",prefill:{subject:t?.subject,from:t?.from,html:s,attachments:t?.attachments}})},async reply(t){const e=Qe(Lo);let n=Qe(K1)||"";if(!n||n.length<50){const r=await Hw(e||t)||"";r&&(n=r)}n||=t?.body||"";let i=Kw(n);if(!i||i.replaceAll(/<[^>]*>/g,"").trim().length<5){const r=e||t;i=r?.snippet||r?.textContent||i||""}const s=$X({from:t?.from,date:t?.date},i);S2({action:"reply",prefill:{subject:t?.subject,from:t?.from,to:t?.to,cc:t?.cc,date:t?.date,html:s,inReplyTo:t?.inReplyTo,references:t?.references,replyToMessageId:t?.replyToMessageId??null,replyToMessageFolder:t?.replyToMessageFolder??null}})},updateReplyBody(){},toList(){},setContacts(){},isVisible:()=>!1},Promise.resolve().then(()=>ik).then(({listen:t})=>{t("compose:add-account",async()=>{try{const{getCurrentWindow:e}=await Promise.resolve().then(()=>kG);await e().setFocus()}catch{}u3()}),t("compose:sent",async e=>{const n=e.payload;if(n?.undoSend){h1e(n);return}n?.toast?.message&&Ll?.show?.(n.toast.message,n.toast.type||"success");const i=Qe(Lo),s=i?.id||null,r=i?.folder||Qe(Sn.state.selectedFolder);if(n?.draftId)try{await Gy(n.draftId)}catch(o){console.warn("[main] Failed to delete local draft after send:",o)}const a=new Set;if(n?.sourceMessageId&&a.add(n.sourceMessageId),n?.serverDraftId&&n.serverDraftId!==n.sourceMessageId&&a.add(n.serverDraftId),a.size>0)try{const{Remote:o}=await Promise.resolve().then(()=>iwe),{db:l}=await Promise.resolve().then(()=>tNe),c=(await Promise.resolve().then(()=>INe)).Local.get("email")||"default";for(const u of a){try{await o.request("MessageDelete",{},{method:"DELETE",pathOverride:`/v1/messages/${encodeURIComponent(u)}?permanent=1`})}catch(h){h?.status!==404&&console.warn("[main] Failed to delete server draft after send:",h)}try{await l.messages.where("[account+id]").equals([c,u]).delete()}catch{}}}catch(o){console.warn("[main] Draft cleanup imports failed:",o)}if(n?.sentCopyPayload){const o=n.sentCopyPayload.replyToMessageId;if(o)try{const{markOriginalAnswered:l}=await Promise.resolve().then(()=>Xnt);await l(o)}catch(l){console.warn(String.raw`[main] Failed to set \Answered flag:`,l)}}if(n?.queued||await m1e(n?.sentCopy,{account:n?.account,sentFolder:n?.sentFolder}),n?.archive){const o=Qe(Lo);o&&await ZE(o).catch(()=>{});return}if(await Sn.actions.loadMessages?.(),s&&Qe(Sn.state.selectedFolder)===r){const o=Qe(Sn.state.messages).find(l=>l?.id===s);o&&Sn.actions.selectMessage?.(o)}})})):ps.mailboxView.composeModal={open(t){gm.open(t)},close(){gm.close()},forward(t){gm.forward({subject:t?.subject,from:t?.from,html:t?.html,body:t?.body||Qe(K1),attachments:t?.attachments})},reply(t){gm.reply({subject:t?.subject,from:t?.from,to:t?.to,cc:t?.cc,date:t?.date,body:t?.body||Qe(K1),bodyLoading:t?.bodyLoading,inReplyTo:t?.inReplyTo,references:t?.references,replyToMessageId:t?.replyToMessageId??null,replyToMessageFolder:t?.replyToMessageFolder??null})},updateReplyBody:(t,e)=>gm.updateReplyBody?.(t,e),toList(t){gm.setToList(t)},setContacts(t){gm.setContacts(t)},isVisible:()=>gm.isVisible?.()};OXe(ps.mailboxView.composeModal);ps.mailboxView.passphraseModal=ps.pgpPassphraseModal;u1e.set(ps.mailboxView);ps.settingsModal.toasts=ps.toasts;qu.subscribe(t=>{const e=t==="mailbox"||t==="settings"||t==="profile"||t==="calendar"||t==="contacts";document.body.classList.toggle("mailbox-mode",e),document.body.classList.toggle("settings-mode",t==="settings"),document.body.classList.toggle("route-mailbox",t==="mailbox"),t!=="mailbox"&&gm.close(),p1e.set(t==="mailbox"),s1e.set(t==="calendar"),i1e.set(t==="profile"),n1e.set(t==="settings"),e&&r1e?(a1e(),o1e(),QF||(QF=!0,y1e(),g1e(),t_(),FF(),jue(),globalThis.addEventListener("online",()=>{EZ(),FF(),xf()})),ff&&(ff(),ff=null)):!e&&!ff&&(ff=b1e()),BB(t),t!=="settings"&&ps.settingsModal.visible(!1),t==="mailbox"&&ps.mailboxView.load(),t==="settings"&&ps.settingsModal.open(),t==="diagnostics"&&sZt(),t==="calendar"&&ps.calendarView.load(),t==="contacts"&&JF.reload?.()});function g1e(){const t=e=>{mS(e)};if(qu.subscribe(t),mS(ll()),Qa.on("new-message",()=>{ll()==="mailbox"&&gm.open()}),Qa.on("reply",()=>{const e=Qe(ps.mailboxView.selectedMessage);e?ps.mailboxView.replyTo(e):ps.mailboxView.toasts?.show?.("Select a message to reply","info")}),Qa.on("reply-all",()=>{const e=Qe(ps.mailboxView.selectedMessage);e?ps.mailboxView.replyAll?.(e):ps.mailboxView.toasts?.show?.("Select a message to reply all","info")}),Qa.on("reply-list",()=>{const e=Qe(ps.mailboxView.selectedMessage);e?ps.mailboxView.replyTo(e):ps.mailboxView.toasts?.show?.("Select a message to reply","info")}),Qa.on("forward",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.forwardMessage?.(e)}),Qa.on("save-draft",async()=>{if(!gm?.isVisible?.()){ps.mailboxView.toasts?.show?.("Open compose to save a draft first","info");return}try{await gm.saveDraft?.()}catch(e){console.error("[Shortcuts] Failed to save draft",e),ps.mailboxView.toasts?.show?.("Failed to save draft","error")}}),Qa.on("print",()=>{try{globalThis.print()}catch{Na&&ps.mailboxView.toasts?.show?.('Print is not supported in the desktop app. Use "View Original" to print from your browser.',"info")}}),Qa.on("refresh",()=>{ll()==="mailbox"&&ps.mailboxView.loadMessages()}),Qa.on("refresh-all",()=>{ps.mailboxView.loadMessages()}),Qa.on("expand-thread",()=>{ll()==="mailbox"&&Qh?.expandSelectedThread?.()}),Qa.on("collapse-thread",()=>{ll()==="mailbox"&&Qh?.collapseSelectedThread?.()}),Qa.on("toggle-read",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.toggleRead(e)}),Qa.on("mark-thread-read",()=>{ll()==="mailbox"&&Qh?.markSelectedThreadRead?.()}),Qa.on("mark-folder-read",()=>{if(ll()!=="mailbox")return;const e=Qe(vc);e&&Sn.actions.markFolderAsRead(e)}),Qa.on("mark-junk",()=>{ll()==="mailbox"&&Qh?.markJunkSelected?.()}),Qa.on("mark-not-junk",()=>{ll()==="mailbox"&&Qh?.markNotJunkSelected?.()}),Qa.on("star",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.toggleStar(e)}),Qa.on("archive",()=>{const e=Qe(ps.mailboxView.selectedMessage);if(Qh?.archiveSelected){Qh.archiveSelected();return}e&&ps.mailboxView.archiveMessage(e)}),Qa.on("delete",()=>{const e=Qe(ps.mailboxView.selectedMessage);if(Qh?.deleteSelected){Qh.deleteSelected();return}e&&ps.mailboxView.deleteMessage(e,{permanent:!1})}),Qa.on("delete-permanent",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.deleteMessage(e,{permanent:!0})}),Qa.on("next-message",()=>{ll()==="mailbox"&&Qh?.selectNext?.()}),Qa.on("previous-message",()=>{ll()==="mailbox"&&Qh?.selectPrevious?.()}),Qa.on("toggle-select",()=>{ll()==="mailbox"&&Qh?.toggleSelectCurrent?.()}),Qa.on("extend-selection-down",()=>{ll()==="mailbox"&&Qh?.extendSelectionDown?.()}),Qa.on("extend-selection-up",()=>{ll()==="mailbox"&&Qh?.extendSelectionUp?.()}),Qa.on("quick-filter",()=>{ll()==="mailbox"&&Qh?.focusSearch?.()}),Qa.on("find-in-message",()=>{ll()==="mailbox"&&Qh?.focusSearch?.()}),Qa.on("quick-filter-advanced",()=>{ll()==="mailbox"&&Qh?.focusSearch?.()}),Qa.on("help",()=>{dZt()}),Do){Qa.on("new-tab",()=>{const e=Qe(Lo);e&&V0e(e)}),Qa.on("close-tab",()=>{RS(Qe(Gg))}),Qa.on("next-tab",()=>{const e=UXe();e&&nI(e)}),Qa.on("prev-tab",()=>{const e=LXe();e&&nI(e)});for(let e=1;e<=9;e++)Qa.on(`tab-${e}`,()=>{const n=DXe(e-1);n&&nI(n)})}}function dZt(){ll()==="mailbox"&&Qh?.showShortcutsHelp?.()}function XY(t){const e=t||da("theme")||"system",n=globalThis.matchMedia&&globalThis.matchMedia("(prefers-color-scheme: dark)").matches,i=e==="dark"||e==="system"&&n;document.documentElement.classList.toggle("dark",i),document.body.classList.remove("light-mode","dark-mode"),document.body.classList.add(i?"dark-mode":"light-mode")}function yH(t){const n=(t||da("list_density")||"compact")==="comfortable"?"comfortable":"compact";document.documentElement.dataset.density=n}function IH(t){t||(t="system-ui, -apple-system, sans-serif"),document.documentElement.style.setProperty("--brand-font",t),t.includes("system-ui")?document.documentElement.style.setProperty("--brand-heading-font","'Georgia', serif"):document.documentElement.style.setProperty("--brand-heading-font",t)}function b1e(){const e=[{id:"stars",starCount:180,speed:.15,maxRadius:1.2},{id:"stars2",starCount:120,speed:.08,maxRadius:1.4},{id:"stars3",starCount:80,speed:.04,maxRadius:1.6}].map(n=>CRe(n.id,n));return()=>{for(const n of e)n?.()}}async function uZt(){try{const t=await fetch("/clear-manifest.json",{cache:"no-store"});if(!t.ok)return;const e=await t.json();if(!e.clear_below)return;const n="0.14.24",i=n.split(".").map(Number),s=e.clear_below.split(".").map(Number);if(!(i[0]<s[0]||i[0]===s[0]&&i[1]<s[1]||i[0]===s[0]&&i[1]===s[1]&&i[2]<s[2]))return;if(console.warn("[clear-manifest] Client version %s is below %s — clearing site data",n,e.clear_below),typeof indexedDB.databases=="function"){const o=await indexedDB.databases();await Promise.all(o.map(l=>indexedDB.deleteDatabase(l.name)))}else{const{DB_NAME:o}=await Promise.resolve().then(()=>_Ge);indexedDB.deleteDatabase(o)}const a=await caches.keys();await Promise.all(a.map(async o=>caches.delete(o))),"serviceWorker"in navigator&&await(await navigator.serviceWorker.getRegistration())?.unregister(),localStorage.clear(),sessionStorage.clear(),globalThis.location.reload()}catch{}}let Y1=null;async function dw(){return Y1||(Y1=new Promise(t=>{const e=document.querySelector("#app-lock-overlay");if(!e){Y1=null,t();return}e.style.display="block";const n=Bg(E1t,{target:e});f1e(),e.addEventListener("unlock",()=>{yO(n),e.style.display="none",Y1=null;try{Sn.actions.clearFolderMessageCache?.(),Sn.actions.loadMessages?.()?.catch?.(()=>{})}catch{}try{xf(),fH(),globalThis.dispatchEvent(new CustomEvent("fe:force-reconnect"))}catch(i){console.warn("[app-lock] post-unlock resume failed:",i)}rJ.then(()=>xl.actions.resumeAfterUnlock?.()).catch(i=>{console.warn("[app-lock] search resume after unlock failed:",i)}),t(),queueMicrotask(()=>void s3())},{once:!0})}),Y1)}function f1e(){const t=document.getElementById("app-lock-boot");t&&(t.style.display="none"),document.documentElement.classList.remove("app-lock-boot")}function hZt(){if(f1e(),Y1)return;const t=document.querySelector("#app-lock-overlay");t&&(t.style.display="none")}function mZt(){return Pm()&&Zm()&&!ZZ()&&!GS()}function M_(){jKe(()=>{R9(),JN(),dw().then(()=>{MAe()})})}async function aae(){const t=document.querySelector("#rl-app");if(t){Lve(),mZt()&&(JN(),dw()),await uZt(),t.classList.add("ready");try{F1t()}catch{}try{dwe()}catch{}try{navigator.storage?.persist&&navigator.storage.persisted().then(e=>e?null:navigator.storage.persist()).catch(()=>{})}catch{}try{if($Ge(),typeof globalThis.__markAppBootstrapped=="function"&&globalThis.__markAppBootstrapped(),nZt(Ll),await $m.init(),Zde(),globalThis.__TAURI_INTERNALS__&&Promise.resolve().then(()=>pde).then(y=>y.getSodium()).catch(()=>{}),K4(()=>{xYe(),xl.actions.terminateWorker(),eG()}),$ce({onRecoveryStart(y){console.warn("[DB] Database recovery started due to:",y?.message),Ll?.show?.("Updating local database...","info",0)},onRecoveryComplete(){Ll?.dismiss?.(),Ll?.show?.("Local database updated successfully","success")},onRecoveryFailed(y){console.error("[DB] Database recovery failed:",y?.message),Ll?.dismiss?.(),Ll?.show?.("Local database is stuck. Click to reset and reload.","error",0,{label:"Reset and reload",callback:async()=>{try{const I=await navigator.serviceWorker?.getRegistrations?.();Array.isArray(I)&&await Promise.all(I.map(x=>x.unregister().catch(()=>!1)))}catch{}window.location.reload()}})}}),Pm()&&Zm()&&GS()&&!ZZ())try{await yX()}catch(y){console.warn("[bootstrap] session DEK restore failed:",y)}$E().catch(y=>{console.error("[bootstrap] db crypto bridge init failed:",y)});const e=await Promise.race([rE(),new Promise(y=>setTimeout(()=>y({success:!1,timedOut:!0}),4e3))]);if(e.timedOut?console.warn("[DB] Database init slow; continuing boot — cache will attach when ready"):e.success?e.recovered&&Ll?.show?.("Local cache was cleared to fix a storage issue. Your data will sync from the server.","info",8e3):(console.error("[DB] Database initialization failed:",e.error),Ll?.show?.("Local storage unavailable. Some features may not work offline.","warning",1e4)),e.success){yde().catch(y=>{console.warn("[DB] Account reconciliation failed:",y)});try{const{isDemoMode:y,cleanupDemoAccount:I}=await Promise.resolve().then(()=>Bde),{DEMO_EMAIL:x}=await Promise.resolve().then(()=>RNe),V=Yl.getAll(),W=V.some(E=>E.email===x),Y=V.some(E=>E.email!==x);if(W&&Y||W&&!y()){console.info("[bootstrap] Cleaning up stale demo account"),await I({preserveCredentials:!0});const E=Yl.getAll();E.length>0&&Yl.getActive()===x&&Yl.setActive(E[0].email)}}catch(y){console.warn("[bootstrap] Demo cleanup failed:",y)}}let n=ll();const i=new URLSearchParams(globalThis.location.search),s=i.get("add_account")==="true";if(gH.has(n)&&!k_())qu.set("login"),history.replaceState({route:"login"},"","/"),n="login";else if(n==="mailbox"&&globalThis.location.pathname==="/"&&!s){const y=globalThis.location.hash||"",I=history.state||{};history.replaceState({...I,route:"mailbox"},"","/mailbox"+y)}const r=()=>{const y=i.get("email");if(!y||n==="login")return;const I=Yl.getAll(),x=Yl.getActive(),V=y.trim().toLowerCase();I.find(Y=>Y.email.toLowerCase()===V)?(x?.toLowerCase()!==V&&g2(V),history.replaceState({route:"mailbox"},"","/mailbox"),n="mailbox",qu.set("mailbox")):(history.replaceState({route:"login"},"",`/?add_account=true&email=${encodeURIComponent(y)}`),n="login",qu.set("login"),globalThis.dispatchEvent(new CustomEvent("login-prefill-email",{detail:y})))},a=Jf();a||r();const o=n==="mailbox"||n==="settings"||n==="profile"||n==="calendar"||n==="contacts";if(document.body.classList.toggle("mailbox-mode",o),BB(n),Pm()&&Zm()&&!ZZ()&&!GS()?(JN(),await dw(),n==="login"&&(Se.get("authToken")||Se.get("alias_auth"))&&(n="mailbox",qu.set("mailbox"),history.replaceState({route:"mailbox"},"","/mailbox"))):Pm()&&Zm()&&GS()&&(await yX()||(JN(),await dw()),cE(),n==="login"&&(Se.get("authToken")||Se.get("alias_auth"))&&(n="mailbox",qu.set("mailbox"),history.replaceState({route:"mailbox"},"","/mailbox"))),hZt(),!Pm()){const y=["alias_auth","api_key","authToken","email"];for(const I of y){const x=`webmail_${I}`;try{if(sessionStorage.getItem(x)===null){const V=localStorage.getItem(x);V&&sessionStorage.setItem(x,V)}}catch{}}}a&&(r(),gH.has(n)&&!e1e()&&(qu.set("login"),history.replaceState({route:"login"},"","/"),n="login",document.body.classList.remove("mailbox-mode"),BB("login"))),qGe(),Tve({isReady:()=>!Y1&&!Jf()&&!!(Se.get("authToken")||Se.get("alias_auth")),switchAccount:y=>g2(y),navigate:y=>{const I=`${window.location.pathname}${window.location.hash}`;ps.navigate(y),I===y&&window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:window.location.href,newURL:window.location.href}))}}),Promise.resolve().then(()=>OBt).then(({runMacOSSelfHeal:y})=>y()).catch(y=>{console.warn("[bootstrap] self-heal init failed:",y)}),Pm()&&Zm()&&M_(),ps.settingsModal.applyTheme=XY,ps.settingsModal.applyFont=IH,ps.settingsModal.applyDensity=yH,yH(),rae?.(),rae=q9.subscribe(y=>{XY(y||"system")}),!QD&&globalThis.matchMedia&&(QD=globalThis.matchMedia("(prefers-color-scheme: dark)"),QD.addEventListener("change",cZt));const l=Se.get("email")||"default",c=da("font",{account:l});c&&c!=="system"&&Promise.resolve().then(()=>h$e).then(({loadFont:y})=>{y(c).then(IH).catch(I=>{console.warn("[bootstrap] Failed to load saved font:",I)})}).catch(y=>{console.warn("[bootstrap] Failed to import font-loader:",y)}),n==="mailbox"&&ps.mailboxView.load(),n==="settings"&&ps.settingsModal.open(),n==="calendar"&&ps.calendarView.load(),n==="contacts"&&JF.reload?.(),r1e=!0;const u=ll(),h=u==="mailbox"||u==="settings"||u==="profile"||u==="calendar"||u==="contacts";h&&(a1e(),o1e(),ff&&(ff(),ff=null)),!ff&&!h&&(ff=b1e()),JEe(),h&&!QF&&(QF=!0,y1e(),g1e(),t_(),FF(),jue(),globalThis.addEventListener("online",()=>{EZ(),FF(),xf()}));let m=!1;const p=y=>{if(!m){m=!0,console.warn(`[auth] Forced re-auth triggered (${y})`),Ll?.show?.("Session expired. Redirecting to login…","error",4e3),Se.remove("alias_auth"),Se.remove("api_key"),Se.remove("authToken");try{sessionStorage.removeItem("webmail_alias_auth"),sessionStorage.removeItem("webmail_api_key"),sessionStorage.removeItem("webmail_authToken")}catch{}setTimeout(()=>{history.replaceState({route:"login"},"","/"),qu.set("login"),BB("login"),document.body.classList.remove("mailbox-mode"),globalThis.dispatchEvent(new CustomEvent("login-clear-fields")),m=!1},1500)}},A=y=>{const I=$re.evaluate(y);if(I==="recover"){p(y);return}console.warn(`[auth] Auth failure from ${y} not acted on: ${I}`)};if(globalThis.addEventListener("fe:auth-failed",()=>A("websocket")),globalThis.addEventListener("fe:auth-expired",()=>A("http-401")),globalThis.addEventListener("app:switch-account",y=>{const I=y?.detail?.email;I&&typeof I=="string"&&g2(I)}),globalThis.addEventListener("app:deep-link",y=>{const I=y?.detail?.url;if(!I||typeof I!="string")return;const x=I.trim();if(x.toLowerCase().startsWith("mailto:")){const V=SI(x);ps?.mailboxView?.composeModal?.open&&ps.mailboxView.composeModal.open(GI(V));return}if(x.toLowerCase().startsWith("forwardemail://")){const V=khe(x);if(V){zZ(V);return}const W=x.replace(/^forwardemail:\/\//i,"/");ps?.navigate&&/^\/[a-z]/.test(W)&&ps.navigate(W)}}),globalThis.addEventListener("app:single-instance",y=>{const I=y?.detail?.args;if(Array.isArray(I)){for(const x of I)if(typeof x=="string"&&x.toLowerCase().startsWith("mailto:")){const V=SI(x);ps?.mailboxView?.composeModal?.open&&ps.mailboxView.composeModal.open(GI(V));break}}}),Na){Promise.resolve().then(()=>VZ).then(({initTauriBridge:I,onShareReceived:x})=>{I(),x(V=>{ps?.mailboxView?.composeModal?.open&&ps.mailboxView.composeModal.open({subject:V.subject,body:V.text,text:V.text})})}),Promise.resolve().then(()=>Iye).then(({initAutoUpdater:I,handleWsNewRelease:x})=>{I({onUpdateAvailable:V=>(Ll.show(`Installing update v${V?.version??""}. The app will restart`,"info"),!0),onError:V=>{Ll.show(V?.message||"Update failed to install","error")}}),lw=V=>{x(V?.detail)},globalThis.addEventListener("fe:new-release",lw)}),Promise.resolve().then(()=>zq).then(({initNotificationChannels:I,initTauriNotificationClickHandler:x})=>{I(),x()}),Promise.resolve().then(()=>xfe).then(({initBackgroundService:I,onResume:x})=>{I(),Cc&&x(()=>{$re.canAuthenticate()&&(xf(),Promise.resolve().then(()=>oue).then(({resumeSync:V})=>V()),fH(),globalThis.dispatchEvent(new CustomEvent("fe:force-reconnect")))})});const y=()=>setTimeout(fH,3e3);if(Cc||LA){const I=()=>setTimeout(()=>{Promise.resolve().then(()=>Yg).then(({initPushTapHandling:x})=>x()).catch(x=>console.warn("[main] Push tap handling failed:",x))},500);document.readyState==="complete"?I():window.addEventListener("load",I,{once:!0})}document.readyState==="complete"?y():window.addEventListener("load",y,{once:!0})}YNe()&&(document.readyState==="complete"?oae():window.addEventListener("load",()=>{oae()}));const f=globalThis.__FORWARDEMAIL_TERMINAL__===!0;if(!Na&&!f){let y=!1;async function I(x){if(y)return;y=!0;const V=x?`v${x}`:"latest";console.info(`[update] Performing app update to ${V}`);try{gm?.isVisible?.()&&(console.info("[update] Saving draft before reload"),await gm.saveDraft?.())}catch(W){console.warn("[update] Failed to save draft before reload:",W)}try{Ll?.show?.(`Updating to ${V}…`,"info",0)}catch{}try{if(da("notify_app_updates")!==!1){const{notify:W}=await Promise.resolve().then(()=>zq);await W({title:"Forward Email Updated",body:`App updated to ${V}. Reloading…`,tag:"app-update"})}}catch{}try{const{waitForServiceWorkerUpdate:W}=await Promise.resolve().then(()=>Ele);await W(globalThis.__swRegistration)}catch{}setTimeout(()=>{globalThis.location.reload()},1200)}globalThis.__performAppUpdate=I,Promise.resolve().then(()=>Ele).then(({start:x,handleWsNewRelease:V,checkNow:W})=>{x({onUpdateAvailable(Y){I(Y?.newVersion)}}),globalThis.__checkForWebUpdates=W,cw=Y=>{V(Y?.detail)},globalThis.addEventListener("fe:new-release",cw)})}}catch(e){console.error("[main] bootstrap failed",e);const n=document.querySelector("#fe-fallback-recovery");n&&(n.style.display="block"),globalThis.gtag&&globalThis.gtag("event","exception",{description:`Bootstrap failed: ${e?.message||"unknown"}`,fatal:!0})}}}function pZt(){const t=async e=>{if(e?.type==="dbError")if(console.error("[Sync -> Main] Database error:",e),e.recoverable){const n=new Error(e.error);n.name=e.errorName,Ll?.show?.("Fixing local storage issue...","info",0);const i=await sE(n);Ll?.dismiss?.(),i.recovered?(Ll?.show?.("Local storage fixed. Refreshing...","success"),setTimeout(()=>{globalThis.location.reload()},1500)):Ll?.show?.("Could not fix storage issue. Try clearing browser data in Settings.","error",1e4)}else Ll?.show?.("Local storage error. Some features may not work.","warning")};"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",async e=>{if(e.data?.type==="notification-click"){zZ(e.data.target);return}if(e.data?.type==="push-subscription-changed"){Promise.resolve().then(()=>Yg).then(({handleWebPushSubscriptionChange:n})=>n()).catch(n=>console.warn("[main] Web Push re-registration failed:",n));return}t(e.data)}),globalThis.addEventListener("sync-shim-message",e=>{t(e.detail)})}function AZt(){let t="/";return t.endsWith("/")||(t+="/"),new URL("sw.js",`${globalThis.location.origin}${t}`).toString()}async function oae(){pZt();try{const t=AZt(),e=await navigator.serviceWorker.register(t,{updateViaCache:"none"});globalThis.__swRegistration=e,e.addEventListener("updatefound",()=>{const r=e.installing;r&&r.addEventListener("statechange",()=>{r.state==="installed"&&navigator.serviceWorker.controller&&(console.info("[SW] New service worker installed, activating"),r.postMessage({type:"SKIP_WAITING"}))})});const n=!!navigator.serviceWorker.controller;navigator.serviceWorker.addEventListener("controllerchange",()=>{n&&(typeof globalThis.__performAppUpdate=="function"?globalThis.__performAppUpdate():globalThis.location.reload())});let i=0;const s=setInterval(()=>{e.update().catch(()=>{}),i++,i>=5&&(clearInterval(s),setInterval(()=>{e.update().catch(()=>{})},15*60*1e3))},60*1e3)}catch(t){console.warn("[SW] Service worker registration failed:",t.message)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",aae):aae();globalThis.addEventListener("popstate",()=>{const t=E_(),e=k_();if(gH.has(t)&&!e){history.replaceState({route:"login"},"","/"),qu.set("login");return}if(t==="login"&&e){history.replaceState({route:"mailbox"},"","/mailbox"),qu.set("mailbox");return}t!==ll()&&qu.set(t)});const wC=t=>{try{return decodeURIComponent(t)}catch{return t}};BY=function(){const t=globalThis.location.hash||"";if(t.startsWith("#compose?mailto=")){const e=t.slice(16),n=wC(e).trim();n&&(ll()!=="mailbox"&&qu.set("mailbox"),setTimeout(()=>{const s=SI(n);ps.mailboxView.composeModal.open(GI(s))},0)),history.replaceState({route:ll()},"",globalThis.location.pathname)}else if(t.startsWith("#compose=")||t.startsWith("#mailto=")){const n=((t.startsWith("#compose=")?wC(t.replace("#compose=","")):wC(t.replace("#mailto=","")))||"").trim();n&&(ll()!=="mailbox"&&qu.set("mailbox"),setTimeout(()=>{if(n.toLowerCase().startsWith("mailto:")||n.includes("?")||t.startsWith("#mailto=")){const r=SI(n);ps.mailboxView.composeModal.open(GI(r))}else ps.mailboxView.composeModal.open({to:[n]})},0)),history.replaceState({route:ll()},"",globalThis.location.pathname)}else if(t.startsWith("#addevent=")){const e=wC(t.replace("#addevent=",""));ll()!=="calendar"&&qu.set("calendar"),setTimeout(()=>{ps.calendarView.prefillQuickEvent&&ps.calendarView.prefillQuickEvent(e)},0),history.replaceState({route:ll()},"",globalThis.location.pathname)}else if(t.startsWith("#search=")){const e=wC(t.replace("#search=",""));ll()!=="mailbox"&&qu.set("mailbox"),setTimeout(()=>{typeof ps.mailboxView.onSearch=="function"&&(ps.mailboxView.onSearch(e),ps.mailboxView.page?.set?.(1),ps.mailboxView.loadMessages?.())},0),history.replaceState({route:ll()},"",globalThis.location.pathname)}else t.length>1&&t.includes("/")&&ll()!=="mailbox"&&qu.set("mailbox")};globalThis.addEventListener("hashchange",BY);BY();function gZt(){const t=Se.get("email")||"default",e=da("prefetch_folders",{account:t}),i=["INBOX",...Array.isArray(e)?e:[]];return[...new Set(i.filter(Boolean))]}async function bZt(){const t=gZt();for(const e of t)try{await Qy({type:"metadata",folder:e,account:Se.get("email"),pageSize:200})}catch{}}function y1e(){Qe(d3)||ll()==="mailbox"&&bZt()}const fZt=Object.freeze(Object.defineProperty({__proto__:null,cleanupCustomEventListeners:rZt,startAppLockTimer:M_},Symbol.toStringTag,{value:"Module"}));Qa.isMac=!1;globalThis.__forwardemailShortcuts=Qa;globalThis.__forwardemailI18n=$m;/*!
5507
+ `;document.head.append(qIe);Do&&Qa.addShortcuts(TRe);function E_(){const e=new URLSearchParams(globalThis.location.search).get("add_account")==="true";return globalThis.location.pathname==="/login"?"login":globalThis.location.pathname.startsWith("/calendar")?"calendar":globalThis.location.pathname.startsWith("/contacts")?"contacts":globalThis.location.pathname.startsWith("/mailbox/profile")?"profile":globalThis.location.pathname.startsWith("/mailbox/settings")?"settings":globalThis.location.pathname.startsWith("/mailbox/diagnostics")?"diagnostics":globalThis.location.pathname.startsWith("/mailbox")?"mailbox":globalThis.location.pathname==="/"||globalThis.location.pathname===""?e?"login":k_()?"mailbox":"login":"login"}const gH=new Set(["mailbox","settings","profile","calendar","contacts"]),e1e=()=>!!(Se.get("authToken")||Se.get("alias_auth")||Se.get("api_key")),k_=()=>U1t({hasReadableCredentials:e1e,isVaultLocked:Jf}),qu=Li(E_()),ll=()=>Qe(qu);let bH=!1,vB=!1,t1e=!1,lv=null,cv=null,dv=null;const mS=t=>{const e=t||ll(),n=e==="mailbox",i=e==="settings",s=e==="calendar",r=e==="contacts",a=bH&&!vB&&n,o=a&&!t1e;Qa.setEnabled(n&&!o),a?Qa.setContext("compose"):n?Qa.setContext("list"):i?Qa.setContext("settings"):s?Qa.setContext("calendar"):r?Qa.setContext("contacts"):Qa.setContext("default")},ps={mailboxView:{storageUsed:Qw,storageTotal:f5,localUsage:$J,localQuota:qJ,indexCount:ez,indexSize:tz,syncPending:tee,bodyIndexingEnabled:Jw,starredOnly:KXe,layoutMode:G0e,threadingEnabled:Tj,selectedConversationIds:u0,selectedConversation:eN,selectedMessage:Lo,messageBody:K1,attachments:FX,searchResults:uA,searchActive:tg,searching:RN,accounts:bG,currentAccount:sp,accountMenuOpen:IE,sidebarOpen:Uj,mobileReader:zXe,showFilters:Lj,selectedConversationCount:Dj,bulkMoveOpen:cO,availableMoveTargets:dO,availableLabels:Gb,query:eb,unreadOnly:cA,hasAttachmentsOnly:dA,messages:wl,page:Ny,hasNextPage:_g,filteredMessages:t3,filteredConversations:UX,loading:Lm,messageLoading:TX,load:async()=>N0e(),loadMessages:async()=>sRe(),toggleRead:async t=>w0e(t),archiveMessage:async t=>ZE(t),deleteMessage:async(t,e)=>Y0e(t,e),toggleStar:async t=>nz(t),replyTo:async t=>U0e(t),replyAll:async t=>tRe(t),forwardMessage:async t=>nRe(t),onSearch:async t=>iRe(t),getSelectedConversations:()=>L0e(),getSelectedMessagesFromConversations:()=>D0e(),bulkMoveTo:async t=>rRe(t),contextMoveTo:async(t,e)=>aRe(t,e),contextLabel:async(t,e,n)=>Q0e(t,e,n),createLabel:async(t,e)=>J0e(t,e),loadLabels:async()=>SZ(),rebuildFullSearchIndex:async()=>az(),rebuildSearchFromCache:async()=>mRe(),toggleBodyIndexing(){see()},toggleAccountMenu(){pRe()},toggleBulkMove(){ARe()},addAccount(){u3()},switchAccount:async t=>g2(t),signOut:async()=>AO(),setLayoutMode:async t=>C0e(t),moveTarget:vc,downloadOriginal:async t=>WRe(t),viewOriginal:async t=>SRe(t)},settingsModal:(()=>{const t=Li(!1);return{visible(e){return e!==void 0&&t.set(e),Qe(t)},open(){t.set(!0)},storageUsed:Qw,storageTotal:f5,localUsage:$J,localQuota:qJ,indexCount:ez,indexSize:tz,syncPending:tee,bodyIndexingEnabled:Jw,rebuildIndex:async()=>az(),toggleBodyIndexing(){see()}}})(),route:qu,currentRoute:ll},_re=document.querySelector("#toasts-root"),Ll=_re?yTe(_re):{show(){},dismiss(){},items:{subscribe:t=>t([])||(()=>{})}};globalThis.addEventListener("outbox-sent",t=>{const e=t?.detail?.subject;Ll.show(`Message sent${e?`: ${e}`:""}`,"success")});globalThis.addEventListener("mutation-queue-failed",()=>{Ll.show("Some changes couldn't be synced. Please try again.","error")});globalThis.addEventListener("mailbox-mutation-permanently-failed",t=>{Sn.actions.revertFailedMutation(t.detail)});const $re=D1t({isLockEnabled:Pm,isVaultConfigured:Zm,isUnlocked:ZZ});globalThis.addEventListener("fe:lock-app",()=>{!Pm()||!Zm()||(R9(),JN(),dw().then(()=>{MAe()}))});jXe(Ll);vYe(Ll);Ede(Ll);$he(Ll);ps.toasts=Ll;ps.mailboxView.toasts=Ll;Do&&(globalThis.__feHeartbeat=t=>{Promise.resolve().then(()=>VZ).then(({invoke:e})=>e("renderer_heartbeat",{seq:t})).then(e=>{e?.reloaded&&Ll.show("The page stopped responding and was reloaded.","info")}).catch(()=>{})});const fH=()=>{Na&&!Cc&&!LA||Promise.resolve().then(()=>Yg).then(({syncPushNotifications:t})=>t()).catch(t=>{console.warn("[main] Push notification sync failed:",t)})},iZt=()=>{if(Na&&!Cc&&!LA)return;const t=Se.get("email")||"";Promise.resolve().then(()=>Yg).then(({refreshAccountPushOnNextSync:e,syncPushNotifications:n})=>(e(t),n())).catch(e=>{console.warn("[main] Push notification sync failed:",e)})},qre=document.querySelector("#login-root"),eae=document.querySelector(".fe-login-shell");qre&&Bg(MKe,{target:qre,props:{onSuccess(t="/mailbox"){gRe?.(),iZt(),ps.navigate?ps.navigate(t,{replace:!0}):globalThis.location.replace(t)}}});const TF=document.querySelector("#settings-root"),UF=document.querySelector("#profile-root"),n1e=Li(ll()==="settings");TF&&Bg($tt,{target:TF,props:{navigate:t=>ps.navigate?.(t),active:n1e,storageUsed:ps.mailboxView.storageUsed,storageTotal:ps.mailboxView.storageTotal,localUsage:ps.mailboxView.localUsage,localQuota:ps.mailboxView.localQuota,syncPending:ps.mailboxView.syncPending,indexCount:ps.mailboxView.indexCount,indexSize:ps.mailboxView.indexSize,bodyIndexingEnabled:ps.mailboxView.bodyIndexingEnabled,rebuildIndex:ps.mailboxView.rebuildFullSearchIndex?.bind(ps.mailboxView)||ps.mailboxView.rebuildSearchFromCache?.bind(ps.mailboxView)||(async()=>{console.warn("rebuildIndex not available")}),toggleBodyIndexing:ps.mailboxView.toggleBodyIndexing.bind(ps.mailboxView),toasts:Ll,applyTheme:XY,applyFont:IH,applyDensity:yH}});const LF=document.querySelector("#diagnostics-root");let tae=null;function sZt(){tae||!LF||(tae=Bg(but,{target:LF}))}const i1e=Li(ll()==="profile");UF&&Bg(kdt,{target:UF,props:{navigate:t=>ps.navigate?.(t),active:i1e}});const DF=document.querySelector("#calendar-root");let nae=null,AZ={reload(){},prefillQuickEvent(){}};const s1e=Li(ll()==="calendar");let r1e=!1,QF=!1;function a1e(){if(!(nae||!DF))try{nae=Bg(ybt,{target:DF,props:{navigate:t=>ps.navigate?.(t),toasts:Ll,active:s1e,registerApi(t){t&&(AZ=t,ll()==="calendar"&&AZ.reload?.())}}})}catch(t){console.error("Failed to mount calendar component",t)}}ps.calendarView={load(){AZ.reload?.()},prefillQuickEvent(t){AZ.prefillQuickEvent?.(t)}};const pS=document.querySelector("#contacts-root");let JF={reload(){}};function o1e(){if(pS&&!pS.dataset.mounted)try{pS.dataset.mounted="1",Bg(cft,{target:pS,props:{navigate:t=>ps.navigate?.(t),toasts:Ll,registerApi(t){t&&(JF=t,ll()==="contacts"&&JF.reload?.())}}})}catch(t){console.error("Failed to mount contacts component",t)}}const l1e=()=>{AZ.reload?.()},c1e=t=>{const e=t.detail;if(e&&typeof e=="object"&&AZ.applyRemoteChange){AZ.applyRemoteChange(e);return}AZ.reload?.()},d1e=t=>{const e=t.detail,n=typeof e?.message=="string"?e.message:"",i=typeof e?.type=="string"?e.type:"error";n&&Ll?.show?.(n,i)};let lw=null,cw=null;globalThis.addEventListener("fe:calendar-changed",l1e);globalThis.addEventListener("fe:calendar-event-changed",c1e);globalThis.addEventListener("fe:mail-service-toast",d1e);function rZt(){globalThis.removeEventListener("fe:calendar-changed",l1e),globalThis.removeEventListener("fe:calendar-event-changed",c1e),globalThis.removeEventListener("fe:mail-service-toast",d1e),lw&&(globalThis.removeEventListener("fe:new-release",lw),lw=null),cw&&(globalThis.removeEventListener("fe:new-release",cw),cw=null)}const iae=document.querySelector("#compose-root");let aZt=null,gm={open(){},close(){},forward(){},reply(){},setContacts(){},isVisible:()=>!1,isMinimized:()=>!1,setToList(){},saveDraft(){}};const sae=document.querySelector("#passphrase-root");let mN={async open(){throw new Error("Passphrase modal not available")},close(){}};const zF=document.querySelector("#mailbox-root");let Qh=null;const u1e=Li(null),uv=new Map;function oZt(t){const e=typeof t.from=="string"?t.from:"",n=/<([^>]+)>/.exec(e)?.[1]||e,i=typeof t.html=="string"?t.html:"",s=typeof t.text=="string"?t.text:"";return{to:t.to,cc:t.cc,bcc:t.bcc,subject:t.subject,html:i||void 0,text:s||void 0,body:!i&&s?s:void 0,from:n||void 0,inReplyTo:t.inReplyTo,references:t.references,replyToMessageId:t._replyToMessageId,replyToMessageFolder:t._replyToMessageFolder,attachments:t.attachments}}async function lZt(t){const e=t?.emailData;if(!e)return;const n=oZt(e);try{Do?S2({action:"open",prefill:n}):gm.open(n)}catch(i){console.warn("[main] Failed to reopen composer after undo",i)}}function h1e(t){const e=t?.outboxId;if(!e)return;const n=Number(t?.undoWindowMs)||5e3,i=(t?.subject||"(No subject)").slice(0,40),s=t?.archive?Qe(Lo):null;let r=null;const a=()=>{uv.delete(e),r!=null&&Ll?.dismiss?.(r),EZ(),s&&ZE(s).catch(()=>{})},o=async()=>{const l=uv.get(e);l&&(clearTimeout(l),uv.delete(e)),r!=null&&Ll?.dismiss?.(r);try{const c=await mye(e);if(!c||c.status==="sending"||c.status==="sent"){Ll?.show?.("Message already sent","info");return}await e_(e),await lZt(c)}catch(c){console.warn("[main] Undo send failed",c)}};uv.set(e,setTimeout(a,n)),r=Ll?.show?.(`Sending "${i}"…`,"info",{duration:n,action:{label:"Undo",callback:()=>void o()}})??null}async function m1e(t,e={}){try{const n=Se.get("email")||"default",i=Sn.actions.getSentFolderPath?.();if(!i)return;t&&await Sn.actions.applyOptimisticSentMessage?.(t,e);try{await Sn.actions.refreshReplyTargets?.({force:!0})}catch(a){console.warn("[main] Failed to refresh reply targets after send:",a)}const s=i.toUpperCase();Sn.actions.invalidateFolderInMemCache?.(n,i);const r=(Qe(Sn.state.folders)||[]).find(a=>a?.path?.toUpperCase?.()===s);if(r){const{startInitialSync:a}=await Promise.resolve().then(()=>oue);a(n,[r],{wantBodies:!1})}Qe(Sn.state.selectedFolder)===i&&await Sn.actions.loadMessages?.(),Sn.actions.updateFolderUnreadCounts?.()}catch(n){console.warn("[main] Failed to refresh Sent folder after send:",n)}}if(iae)try{aZt=Bg(I1t,{target:iae,props:{toasts:Ll,mailboxView:u1e,onAddAccount:()=>u3(),onSent(t){const e=t||{};if(e?.undoSend){h1e(e);return}if(e?.archive){const n=Qe(Lo);n&&ZE(n).catch(i=>{console.error("[Compose] Failed to archive after send:",i)})}e?.queued||m1e(e?.sentCopy,{account:e?.account,sentFolder:e?.sentFolder})},registerApi(t){t&&(gm=t,lv&&(lv(),lv=null),t.visibility?.subscribe&&(lv=t.visibility.subscribe(e=>{bH=!!e,bH||(vB=!1),mS()})),cv&&(cv(),cv=null),t.minimized?.subscribe?cv=t.minimized.subscribe(e=>{vB=!!e,mS()}):t.isMinimized&&(vB=!!t.isMinimized(),mS()),dv&&(dv(),dv=null),t.compact?.subscribe&&(dv=t.compact.subscribe(e=>{t1e=!!e,mS()})))}}})}catch(t){console.error("Failed to mount compose component",t)}sae&&Bg(int,{target:sae,props:{registerApi(t){t&&(mN=t,ps.pgpPassphraseModal=mN,ps.mailboxView.passphraseModal=mN,rg.setPassphraseModal(mN))}}});const p1e=Li(ll()==="mailbox");zF&&(Bg(ydt,{target:zF,props:{mailboxView:ps.mailboxView,mailboxStore:Sn,navigate:t=>ps.navigate?.(t),active:p1e,applyTheme:XY,registerApi(t){t&&(Qh=t)}}}),Do&&(S0e("INBOX"),Lrt(),Qd.subscribe(t=>{const n=t.find(i=>i.path?.toUpperCase?.()==="INBOX")?.count??0;Promise.resolve().then(()=>b0e).then(({setBadgeCount:i})=>i(n)).catch(()=>{})})),Na&&_7e({navigate:t=>ps.navigate(t),log(...t){console.warn("[main]",...t)}}));const BB=t=>{eae&&(eae.style.display=t==="login"?"block":"none"),zF&&(zF.style.display=t==="mailbox"?"block":"none"),TF&&(TF.style.display=t==="settings"?"block":"none"),DF&&(DF.style.display=t==="calendar"?"block":"none"),pS&&(pS.style.display=t==="contacts"?"block":"none"),UF&&(UF.style.display=t==="profile"?"block":"none"),LF&&(LF.style.display=t==="diagnostics"?"block":"none")};let BY,ff=null,rae=null,QD=null;const cZt=()=>XY();ps.navigate=(t,e)=>{if(!t||typeof t!="string")return;if(!t.startsWith("/")){globalThis.location.href=t;return}const i=t.startsWith("/mailbox/settings")?"settings":t.startsWith("/mailbox/profile")?"profile":t.startsWith("/mailbox")?"mailbox":t.startsWith("/calendar")?"calendar":t.startsWith("/contacts")?"contacts":"login";if((i==="mailbox"||i==="settings"||i==="profile"||i==="calendar"||i==="contacts")&&!Se.get("authToken")&&!Se.get("alias_auth")){history.replaceState({route:"login"},"","/"),qu.set("login");return}const s=e?.replace===!0,r={route:i},a=window.location.hash,o=window.location.href;s?history.replaceState(r,"",t):history.pushState(r,"",t),window.location.hash!==a&&window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:o,newURL:window.location.href})),qu.set(E_()),t.includes("add_account=true")&&globalThis.dispatchEvent(new CustomEvent("login-clear-fields")),BY&&BY()};ps.mailboxView.navigate=ps.navigate;ps.settingsModal.navigate=ps.navigate;HXe(ps.navigate);const A1e=()=>{const t=ll();if(t!=="login"){if(history.length>1){history.back();return}t!=="mailbox"&&ps.navigate("/mailbox",{replace:!0})}};lnt({isEnabled:()=>{const t=ll();return t==="login"?!1:t==="mailbox"?history.length>1:Cc||history.length>1},onBack:A1e});Cc&&nO(()=>{ll()!=="mailbox"&&A1e()}).catch(t=>{console.warn("[main] Native back-button listener failed:",t)});ps.pgpPassphraseModal=mN;_1t();document.documentElement.dataset.os=Vde();Do&&document.addEventListener("click",t=>{const e=t.target;e instanceof HTMLInputElement&&e.type==="file"&&(t.preventDefault(),t.stopImmediatePropagation())},!0);globalThis.addEventListener("fe:compose-attachments-dropped",()=>{Ll.show("The original attachments are too large to carry into a forward. Please attach them manually.","warning",8e3)});Do?(ps.mailboxView.composeModal={open(t){S2({action:"open",prefill:t})},close(){},async forward(t){const e=Qe(Lo);let n=Qe(K1)||"";n||=await Hw(e||t)||"",n||=t?.body||"";const i=Kw(n),s=mO(e||{subject:t?.subject},i);S2({action:"forward",prefill:{subject:t?.subject,from:t?.from,html:s,attachments:t?.attachments}})},async reply(t){const e=Qe(Lo);let n=Qe(K1)||"";if(!n||n.length<50){const r=await Hw(e||t)||"";r&&(n=r)}n||=t?.body||"";let i=Kw(n);if(!i||i.replaceAll(/<[^>]*>/g,"").trim().length<5){const r=e||t;i=r?.snippet||r?.textContent||i||""}const s=$X({from:t?.from,date:t?.date},i);S2({action:"reply",prefill:{subject:t?.subject,from:t?.from,to:t?.to,cc:t?.cc,date:t?.date,html:s,inReplyTo:t?.inReplyTo,references:t?.references,replyToMessageId:t?.replyToMessageId??null,replyToMessageFolder:t?.replyToMessageFolder??null}})},updateReplyBody(){},toList(){},setContacts(){},isVisible:()=>!1},Promise.resolve().then(()=>ik).then(({listen:t})=>{t("compose:add-account",async()=>{try{const{getCurrentWindow:e}=await Promise.resolve().then(()=>kG);await e().setFocus()}catch{}u3()}),t("compose:sent",async e=>{const n=e.payload;if(n?.undoSend){h1e(n);return}n?.toast?.message&&Ll?.show?.(n.toast.message,n.toast.type||"success");const i=Qe(Lo),s=i?.id||null,r=i?.folder||Qe(Sn.state.selectedFolder);if(n?.draftId)try{await Gy(n.draftId)}catch(o){console.warn("[main] Failed to delete local draft after send:",o)}const a=new Set;if(n?.sourceMessageId&&a.add(n.sourceMessageId),n?.serverDraftId&&n.serverDraftId!==n.sourceMessageId&&a.add(n.serverDraftId),a.size>0)try{const{Remote:o}=await Promise.resolve().then(()=>iwe),{db:l}=await Promise.resolve().then(()=>tNe),c=(await Promise.resolve().then(()=>INe)).Local.get("email")||"default";for(const u of a){try{await o.request("MessageDelete",{},{method:"DELETE",pathOverride:`/v1/messages/${encodeURIComponent(u)}?permanent=1`})}catch(h){h?.status!==404&&console.warn("[main] Failed to delete server draft after send:",h)}try{await l.messages.where("[account+id]").equals([c,u]).delete()}catch{}}}catch(o){console.warn("[main] Draft cleanup imports failed:",o)}if(n?.sentCopyPayload){const o=n.sentCopyPayload.replyToMessageId;if(o)try{const{markOriginalAnswered:l}=await Promise.resolve().then(()=>Xnt);await l(o)}catch(l){console.warn(String.raw`[main] Failed to set \Answered flag:`,l)}}if(n?.queued||await m1e(n?.sentCopy,{account:n?.account,sentFolder:n?.sentFolder}),n?.archive){const o=Qe(Lo);o&&await ZE(o).catch(()=>{});return}if(await Sn.actions.loadMessages?.(),s&&Qe(Sn.state.selectedFolder)===r){const o=Qe(Sn.state.messages).find(l=>l?.id===s);o&&Sn.actions.selectMessage?.(o)}})})):ps.mailboxView.composeModal={open(t){gm.open(t)},close(){gm.close()},forward(t){gm.forward({subject:t?.subject,from:t?.from,html:t?.html,body:t?.body||Qe(K1),attachments:t?.attachments})},reply(t){gm.reply({subject:t?.subject,from:t?.from,to:t?.to,cc:t?.cc,date:t?.date,body:t?.body||Qe(K1),bodyLoading:t?.bodyLoading,inReplyTo:t?.inReplyTo,references:t?.references,replyToMessageId:t?.replyToMessageId??null,replyToMessageFolder:t?.replyToMessageFolder??null})},updateReplyBody:(t,e)=>gm.updateReplyBody?.(t,e),toList(t){gm.setToList(t)},setContacts(t){gm.setContacts(t)},isVisible:()=>gm.isVisible?.()};OXe(ps.mailboxView.composeModal);ps.mailboxView.passphraseModal=ps.pgpPassphraseModal;u1e.set(ps.mailboxView);ps.settingsModal.toasts=ps.toasts;qu.subscribe(t=>{const e=t==="mailbox"||t==="settings"||t==="profile"||t==="calendar"||t==="contacts";document.body.classList.toggle("mailbox-mode",e),document.body.classList.toggle("settings-mode",t==="settings"),document.body.classList.toggle("route-mailbox",t==="mailbox"),t!=="mailbox"&&gm.close(),p1e.set(t==="mailbox"),s1e.set(t==="calendar"),i1e.set(t==="profile"),n1e.set(t==="settings"),e&&r1e?(a1e(),o1e(),QF||(QF=!0,y1e(),g1e(),t_(),FF(),jue(),globalThis.addEventListener("online",()=>{EZ(),FF(),xf()})),ff&&(ff(),ff=null)):!e&&!ff&&(ff=b1e()),BB(t),t!=="settings"&&ps.settingsModal.visible(!1),t==="mailbox"&&ps.mailboxView.load(),t==="settings"&&ps.settingsModal.open(),t==="diagnostics"&&sZt(),t==="calendar"&&ps.calendarView.load(),t==="contacts"&&JF.reload?.()});function g1e(){const t=e=>{mS(e)};if(qu.subscribe(t),mS(ll()),Qa.on("new-message",()=>{ll()==="mailbox"&&gm.open()}),Qa.on("reply",()=>{const e=Qe(ps.mailboxView.selectedMessage);e?ps.mailboxView.replyTo(e):ps.mailboxView.toasts?.show?.("Select a message to reply","info")}),Qa.on("reply-all",()=>{const e=Qe(ps.mailboxView.selectedMessage);e?ps.mailboxView.replyAll?.(e):ps.mailboxView.toasts?.show?.("Select a message to reply all","info")}),Qa.on("reply-list",()=>{const e=Qe(ps.mailboxView.selectedMessage);e?ps.mailboxView.replyTo(e):ps.mailboxView.toasts?.show?.("Select a message to reply","info")}),Qa.on("forward",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.forwardMessage?.(e)}),Qa.on("save-draft",async()=>{if(!gm?.isVisible?.()){ps.mailboxView.toasts?.show?.("Open compose to save a draft first","info");return}try{await gm.saveDraft?.()}catch(e){console.error("[Shortcuts] Failed to save draft",e),ps.mailboxView.toasts?.show?.("Failed to save draft","error")}}),Qa.on("print",()=>{try{globalThis.print()}catch{Na&&ps.mailboxView.toasts?.show?.('Print is not supported in the desktop app. Use "View Original" to print from your browser.',"info")}}),Qa.on("refresh",()=>{ll()==="mailbox"&&ps.mailboxView.loadMessages()}),Qa.on("refresh-all",()=>{ps.mailboxView.loadMessages()}),Qa.on("expand-thread",()=>{ll()==="mailbox"&&Qh?.expandSelectedThread?.()}),Qa.on("collapse-thread",()=>{ll()==="mailbox"&&Qh?.collapseSelectedThread?.()}),Qa.on("toggle-read",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.toggleRead(e)}),Qa.on("mark-thread-read",()=>{ll()==="mailbox"&&Qh?.markSelectedThreadRead?.()}),Qa.on("mark-folder-read",()=>{if(ll()!=="mailbox")return;const e=Qe(vc);e&&Sn.actions.markFolderAsRead(e)}),Qa.on("mark-junk",()=>{ll()==="mailbox"&&Qh?.markJunkSelected?.()}),Qa.on("mark-not-junk",()=>{ll()==="mailbox"&&Qh?.markNotJunkSelected?.()}),Qa.on("star",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.toggleStar(e)}),Qa.on("archive",()=>{const e=Qe(ps.mailboxView.selectedMessage);if(Qh?.archiveSelected){Qh.archiveSelected();return}e&&ps.mailboxView.archiveMessage(e)}),Qa.on("delete",()=>{const e=Qe(ps.mailboxView.selectedMessage);if(Qh?.deleteSelected){Qh.deleteSelected();return}e&&ps.mailboxView.deleteMessage(e,{permanent:!1})}),Qa.on("delete-permanent",()=>{const e=Qe(ps.mailboxView.selectedMessage);e&&ps.mailboxView.deleteMessage(e,{permanent:!0})}),Qa.on("next-message",()=>{ll()==="mailbox"&&Qh?.selectNext?.()}),Qa.on("previous-message",()=>{ll()==="mailbox"&&Qh?.selectPrevious?.()}),Qa.on("toggle-select",()=>{ll()==="mailbox"&&Qh?.toggleSelectCurrent?.()}),Qa.on("extend-selection-down",()=>{ll()==="mailbox"&&Qh?.extendSelectionDown?.()}),Qa.on("extend-selection-up",()=>{ll()==="mailbox"&&Qh?.extendSelectionUp?.()}),Qa.on("quick-filter",()=>{ll()==="mailbox"&&Qh?.focusSearch?.()}),Qa.on("find-in-message",()=>{ll()==="mailbox"&&Qh?.focusSearch?.()}),Qa.on("quick-filter-advanced",()=>{ll()==="mailbox"&&Qh?.focusSearch?.()}),Qa.on("help",()=>{dZt()}),Do){Qa.on("new-tab",()=>{const e=Qe(Lo);e&&V0e(e)}),Qa.on("close-tab",()=>{RS(Qe(Gg))}),Qa.on("next-tab",()=>{const e=UXe();e&&nI(e)}),Qa.on("prev-tab",()=>{const e=LXe();e&&nI(e)});for(let e=1;e<=9;e++)Qa.on(`tab-${e}`,()=>{const n=DXe(e-1);n&&nI(n)})}}function dZt(){ll()==="mailbox"&&Qh?.showShortcutsHelp?.()}function XY(t){const e=t||da("theme")||"system",n=globalThis.matchMedia&&globalThis.matchMedia("(prefers-color-scheme: dark)").matches,i=e==="dark"||e==="system"&&n;document.documentElement.classList.toggle("dark",i),document.body.classList.remove("light-mode","dark-mode"),document.body.classList.add(i?"dark-mode":"light-mode")}function yH(t){const n=(t||da("list_density")||"compact")==="comfortable"?"comfortable":"compact";document.documentElement.dataset.density=n}function IH(t){t||(t="system-ui, -apple-system, sans-serif"),document.documentElement.style.setProperty("--brand-font",t),t.includes("system-ui")?document.documentElement.style.setProperty("--brand-heading-font","'Georgia', serif"):document.documentElement.style.setProperty("--brand-heading-font",t)}function b1e(){const e=[{id:"stars",starCount:180,speed:.15,maxRadius:1.2},{id:"stars2",starCount:120,speed:.08,maxRadius:1.4},{id:"stars3",starCount:80,speed:.04,maxRadius:1.6}].map(n=>CRe(n.id,n));return()=>{for(const n of e)n?.()}}async function uZt(){try{const t=await fetch("/clear-manifest.json",{cache:"no-store"});if(!t.ok)return;const e=await t.json();if(!e.clear_below)return;const n="0.14.25",i=n.split(".").map(Number),s=e.clear_below.split(".").map(Number);if(!(i[0]<s[0]||i[0]===s[0]&&i[1]<s[1]||i[0]===s[0]&&i[1]===s[1]&&i[2]<s[2]))return;if(console.warn("[clear-manifest] Client version %s is below %s — clearing site data",n,e.clear_below),typeof indexedDB.databases=="function"){const o=await indexedDB.databases();await Promise.all(o.map(l=>indexedDB.deleteDatabase(l.name)))}else{const{DB_NAME:o}=await Promise.resolve().then(()=>_Ge);indexedDB.deleteDatabase(o)}const a=await caches.keys();await Promise.all(a.map(async o=>caches.delete(o))),"serviceWorker"in navigator&&await(await navigator.serviceWorker.getRegistration())?.unregister(),localStorage.clear(),sessionStorage.clear(),globalThis.location.reload()}catch{}}let Y1=null;async function dw(){return Y1||(Y1=new Promise(t=>{const e=document.querySelector("#app-lock-overlay");if(!e){Y1=null,t();return}e.style.display="block";const n=Bg(E1t,{target:e});f1e(),e.addEventListener("unlock",()=>{yO(n),e.style.display="none",Y1=null;try{Sn.actions.clearFolderMessageCache?.(),Sn.actions.loadMessages?.()?.catch?.(()=>{})}catch{}try{xf(),fH(),globalThis.dispatchEvent(new CustomEvent("fe:force-reconnect"))}catch(i){console.warn("[app-lock] post-unlock resume failed:",i)}rJ.then(()=>xl.actions.resumeAfterUnlock?.()).catch(i=>{console.warn("[app-lock] search resume after unlock failed:",i)}),t(),queueMicrotask(()=>void s3())},{once:!0})}),Y1)}function f1e(){const t=document.getElementById("app-lock-boot");t&&(t.style.display="none"),document.documentElement.classList.remove("app-lock-boot")}function hZt(){if(f1e(),Y1)return;const t=document.querySelector("#app-lock-overlay");t&&(t.style.display="none")}function mZt(){return Pm()&&Zm()&&!ZZ()&&!GS()}function M_(){jKe(()=>{R9(),JN(),dw().then(()=>{MAe()})})}async function aae(){const t=document.querySelector("#rl-app");if(t){Lve(),mZt()&&(JN(),dw()),await uZt(),t.classList.add("ready");try{F1t()}catch{}try{dwe()}catch{}try{navigator.storage?.persist&&navigator.storage.persisted().then(e=>e?null:navigator.storage.persist()).catch(()=>{})}catch{}try{if($Ge(),typeof globalThis.__markAppBootstrapped=="function"&&globalThis.__markAppBootstrapped(),nZt(Ll),await $m.init(),Zde(),globalThis.__TAURI_INTERNALS__&&Promise.resolve().then(()=>pde).then(y=>y.getSodium()).catch(()=>{}),K4(()=>{xYe(),xl.actions.terminateWorker(),eG()}),$ce({onRecoveryStart(y){console.warn("[DB] Database recovery started due to:",y?.message),Ll?.show?.("Updating local database...","info",0)},onRecoveryComplete(){Ll?.dismiss?.(),Ll?.show?.("Local database updated successfully","success")},onRecoveryFailed(y){console.error("[DB] Database recovery failed:",y?.message),Ll?.dismiss?.(),Ll?.show?.("Local database is stuck. Click to reset and reload.","error",0,{label:"Reset and reload",callback:async()=>{try{const I=await navigator.serviceWorker?.getRegistrations?.();Array.isArray(I)&&await Promise.all(I.map(x=>x.unregister().catch(()=>!1)))}catch{}window.location.reload()}})}}),Pm()&&Zm()&&GS()&&!ZZ())try{await yX()}catch(y){console.warn("[bootstrap] session DEK restore failed:",y)}$E().catch(y=>{console.error("[bootstrap] db crypto bridge init failed:",y)});const e=await Promise.race([rE(),new Promise(y=>setTimeout(()=>y({success:!1,timedOut:!0}),4e3))]);if(e.timedOut?console.warn("[DB] Database init slow; continuing boot — cache will attach when ready"):e.success?e.recovered&&Ll?.show?.("Local cache was cleared to fix a storage issue. Your data will sync from the server.","info",8e3):(console.error("[DB] Database initialization failed:",e.error),Ll?.show?.("Local storage unavailable. Some features may not work offline.","warning",1e4)),e.success){yde().catch(y=>{console.warn("[DB] Account reconciliation failed:",y)});try{const{isDemoMode:y,cleanupDemoAccount:I}=await Promise.resolve().then(()=>Bde),{DEMO_EMAIL:x}=await Promise.resolve().then(()=>RNe),V=Yl.getAll(),W=V.some(E=>E.email===x),Y=V.some(E=>E.email!==x);if(W&&Y||W&&!y()){console.info("[bootstrap] Cleaning up stale demo account"),await I({preserveCredentials:!0});const E=Yl.getAll();E.length>0&&Yl.getActive()===x&&Yl.setActive(E[0].email)}}catch(y){console.warn("[bootstrap] Demo cleanup failed:",y)}}let n=ll();const i=new URLSearchParams(globalThis.location.search),s=i.get("add_account")==="true";if(gH.has(n)&&!k_())qu.set("login"),history.replaceState({route:"login"},"","/"),n="login";else if(n==="mailbox"&&globalThis.location.pathname==="/"&&!s){const y=globalThis.location.hash||"",I=history.state||{};history.replaceState({...I,route:"mailbox"},"","/mailbox"+y)}const r=()=>{const y=i.get("email");if(!y||n==="login")return;const I=Yl.getAll(),x=Yl.getActive(),V=y.trim().toLowerCase();I.find(Y=>Y.email.toLowerCase()===V)?(x?.toLowerCase()!==V&&g2(V),history.replaceState({route:"mailbox"},"","/mailbox"),n="mailbox",qu.set("mailbox")):(history.replaceState({route:"login"},"",`/?add_account=true&email=${encodeURIComponent(y)}`),n="login",qu.set("login"),globalThis.dispatchEvent(new CustomEvent("login-prefill-email",{detail:y})))},a=Jf();a||r();const o=n==="mailbox"||n==="settings"||n==="profile"||n==="calendar"||n==="contacts";if(document.body.classList.toggle("mailbox-mode",o),BB(n),Pm()&&Zm()&&!ZZ()&&!GS()?(JN(),await dw(),n==="login"&&(Se.get("authToken")||Se.get("alias_auth"))&&(n="mailbox",qu.set("mailbox"),history.replaceState({route:"mailbox"},"","/mailbox"))):Pm()&&Zm()&&GS()&&(await yX()||(JN(),await dw()),cE(),n==="login"&&(Se.get("authToken")||Se.get("alias_auth"))&&(n="mailbox",qu.set("mailbox"),history.replaceState({route:"mailbox"},"","/mailbox"))),hZt(),!Pm()){const y=["alias_auth","api_key","authToken","email"];for(const I of y){const x=`webmail_${I}`;try{if(sessionStorage.getItem(x)===null){const V=localStorage.getItem(x);V&&sessionStorage.setItem(x,V)}}catch{}}}a&&(r(),gH.has(n)&&!e1e()&&(qu.set("login"),history.replaceState({route:"login"},"","/"),n="login",document.body.classList.remove("mailbox-mode"),BB("login"))),qGe(),Tve({isReady:()=>!Y1&&!Jf()&&!!(Se.get("authToken")||Se.get("alias_auth")),switchAccount:y=>g2(y),navigate:y=>{const I=`${window.location.pathname}${window.location.hash}`;ps.navigate(y),I===y&&window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:window.location.href,newURL:window.location.href}))}}),Promise.resolve().then(()=>OBt).then(({runMacOSSelfHeal:y})=>y()).catch(y=>{console.warn("[bootstrap] self-heal init failed:",y)}),Pm()&&Zm()&&M_(),ps.settingsModal.applyTheme=XY,ps.settingsModal.applyFont=IH,ps.settingsModal.applyDensity=yH,yH(),rae?.(),rae=q9.subscribe(y=>{XY(y||"system")}),!QD&&globalThis.matchMedia&&(QD=globalThis.matchMedia("(prefers-color-scheme: dark)"),QD.addEventListener("change",cZt));const l=Se.get("email")||"default",c=da("font",{account:l});c&&c!=="system"&&Promise.resolve().then(()=>h$e).then(({loadFont:y})=>{y(c).then(IH).catch(I=>{console.warn("[bootstrap] Failed to load saved font:",I)})}).catch(y=>{console.warn("[bootstrap] Failed to import font-loader:",y)}),n==="mailbox"&&ps.mailboxView.load(),n==="settings"&&ps.settingsModal.open(),n==="calendar"&&ps.calendarView.load(),n==="contacts"&&JF.reload?.(),r1e=!0;const u=ll(),h=u==="mailbox"||u==="settings"||u==="profile"||u==="calendar"||u==="contacts";h&&(a1e(),o1e(),ff&&(ff(),ff=null)),!ff&&!h&&(ff=b1e()),JEe(),h&&!QF&&(QF=!0,y1e(),g1e(),t_(),FF(),jue(),globalThis.addEventListener("online",()=>{EZ(),FF(),xf()}));let m=!1;const p=y=>{if(!m){m=!0,console.warn(`[auth] Forced re-auth triggered (${y})`),Ll?.show?.("Session expired. Redirecting to login…","error",4e3),Se.remove("alias_auth"),Se.remove("api_key"),Se.remove("authToken");try{sessionStorage.removeItem("webmail_alias_auth"),sessionStorage.removeItem("webmail_api_key"),sessionStorage.removeItem("webmail_authToken")}catch{}setTimeout(()=>{history.replaceState({route:"login"},"","/"),qu.set("login"),BB("login"),document.body.classList.remove("mailbox-mode"),globalThis.dispatchEvent(new CustomEvent("login-clear-fields")),m=!1},1500)}},A=y=>{const I=$re.evaluate(y);if(I==="recover"){p(y);return}console.warn(`[auth] Auth failure from ${y} not acted on: ${I}`)};if(globalThis.addEventListener("fe:auth-failed",()=>A("websocket")),globalThis.addEventListener("fe:auth-expired",()=>A("http-401")),globalThis.addEventListener("app:switch-account",y=>{const I=y?.detail?.email;I&&typeof I=="string"&&g2(I)}),globalThis.addEventListener("app:deep-link",y=>{const I=y?.detail?.url;if(!I||typeof I!="string")return;const x=I.trim();if(x.toLowerCase().startsWith("mailto:")){const V=SI(x);ps?.mailboxView?.composeModal?.open&&ps.mailboxView.composeModal.open(GI(V));return}if(x.toLowerCase().startsWith("forwardemail://")){const V=khe(x);if(V){zZ(V);return}const W=x.replace(/^forwardemail:\/\//i,"/");ps?.navigate&&/^\/[a-z]/.test(W)&&ps.navigate(W)}}),globalThis.addEventListener("app:single-instance",y=>{const I=y?.detail?.args;if(Array.isArray(I)){for(const x of I)if(typeof x=="string"&&x.toLowerCase().startsWith("mailto:")){const V=SI(x);ps?.mailboxView?.composeModal?.open&&ps.mailboxView.composeModal.open(GI(V));break}}}),Na){Promise.resolve().then(()=>VZ).then(({initTauriBridge:I,onShareReceived:x})=>{I(),x(V=>{ps?.mailboxView?.composeModal?.open&&ps.mailboxView.composeModal.open({subject:V.subject,body:V.text,text:V.text})})}),Promise.resolve().then(()=>Iye).then(({initAutoUpdater:I,handleWsNewRelease:x})=>{I({onUpdateAvailable:V=>(Ll.show(`Installing update v${V?.version??""}. The app will restart`,"info"),!0),onError:V=>{Ll.show(V?.message||"Update failed to install","error")}}),lw=V=>{x(V?.detail)},globalThis.addEventListener("fe:new-release",lw)}),Promise.resolve().then(()=>zq).then(({initNotificationChannels:I,initTauriNotificationClickHandler:x})=>{I(),x()}),Promise.resolve().then(()=>xfe).then(({initBackgroundService:I,onResume:x})=>{I(),Cc&&x(()=>{$re.canAuthenticate()&&(xf(),Promise.resolve().then(()=>oue).then(({resumeSync:V})=>V()),fH(),globalThis.dispatchEvent(new CustomEvent("fe:force-reconnect")))})});const y=()=>setTimeout(fH,3e3);if(Cc||LA){const I=()=>setTimeout(()=>{Promise.resolve().then(()=>Yg).then(({initPushTapHandling:x})=>x()).catch(x=>console.warn("[main] Push tap handling failed:",x))},500);document.readyState==="complete"?I():window.addEventListener("load",I,{once:!0})}document.readyState==="complete"?y():window.addEventListener("load",y,{once:!0})}YNe()&&(document.readyState==="complete"?oae():window.addEventListener("load",()=>{oae()}));const f=globalThis.__FORWARDEMAIL_TERMINAL__===!0;if(!Na&&!f){let y=!1;async function I(x){if(y)return;y=!0;const V=x?`v${x}`:"latest";console.info(`[update] Performing app update to ${V}`);try{gm?.isVisible?.()&&(console.info("[update] Saving draft before reload"),await gm.saveDraft?.())}catch(W){console.warn("[update] Failed to save draft before reload:",W)}try{Ll?.show?.(`Updating to ${V}…`,"info",0)}catch{}try{if(da("notify_app_updates")!==!1){const{notify:W}=await Promise.resolve().then(()=>zq);await W({title:"Forward Email Updated",body:`App updated to ${V}. Reloading…`,tag:"app-update"})}}catch{}try{const{waitForServiceWorkerUpdate:W}=await Promise.resolve().then(()=>Ele);await W(globalThis.__swRegistration)}catch{}setTimeout(()=>{globalThis.location.reload()},1200)}globalThis.__performAppUpdate=I,Promise.resolve().then(()=>Ele).then(({start:x,handleWsNewRelease:V,checkNow:W})=>{x({onUpdateAvailable(Y){I(Y?.newVersion)}}),globalThis.__checkForWebUpdates=W,cw=Y=>{V(Y?.detail)},globalThis.addEventListener("fe:new-release",cw)})}}catch(e){console.error("[main] bootstrap failed",e);const n=document.querySelector("#fe-fallback-recovery");n&&(n.style.display="block"),globalThis.gtag&&globalThis.gtag("event","exception",{description:`Bootstrap failed: ${e?.message||"unknown"}`,fatal:!0})}}}function pZt(){const t=async e=>{if(e?.type==="dbError")if(console.error("[Sync -> Main] Database error:",e),e.recoverable){const n=new Error(e.error);n.name=e.errorName,Ll?.show?.("Fixing local storage issue...","info",0);const i=await sE(n);Ll?.dismiss?.(),i.recovered?(Ll?.show?.("Local storage fixed. Refreshing...","success"),setTimeout(()=>{globalThis.location.reload()},1500)):Ll?.show?.("Could not fix storage issue. Try clearing browser data in Settings.","error",1e4)}else Ll?.show?.("Local storage error. Some features may not work.","warning")};"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",async e=>{if(e.data?.type==="notification-click"){zZ(e.data.target);return}if(e.data?.type==="push-subscription-changed"){Promise.resolve().then(()=>Yg).then(({handleWebPushSubscriptionChange:n})=>n()).catch(n=>console.warn("[main] Web Push re-registration failed:",n));return}t(e.data)}),globalThis.addEventListener("sync-shim-message",e=>{t(e.detail)})}function AZt(){let t="/";return t.endsWith("/")||(t+="/"),new URL("sw.js",`${globalThis.location.origin}${t}`).toString()}async function oae(){pZt();try{const t=AZt(),e=await navigator.serviceWorker.register(t,{updateViaCache:"none"});globalThis.__swRegistration=e,e.addEventListener("updatefound",()=>{const r=e.installing;r&&r.addEventListener("statechange",()=>{r.state==="installed"&&navigator.serviceWorker.controller&&(console.info("[SW] New service worker installed, activating"),r.postMessage({type:"SKIP_WAITING"}))})});const n=!!navigator.serviceWorker.controller;navigator.serviceWorker.addEventListener("controllerchange",()=>{n&&(typeof globalThis.__performAppUpdate=="function"?globalThis.__performAppUpdate():globalThis.location.reload())});let i=0;const s=setInterval(()=>{e.update().catch(()=>{}),i++,i>=5&&(clearInterval(s),setInterval(()=>{e.update().catch(()=>{})},15*60*1e3))},60*1e3)}catch(t){console.warn("[SW] Service worker registration failed:",t.message)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",aae):aae();globalThis.addEventListener("popstate",()=>{const t=E_(),e=k_();if(gH.has(t)&&!e){history.replaceState({route:"login"},"","/"),qu.set("login");return}if(t==="login"&&e){history.replaceState({route:"mailbox"},"","/mailbox"),qu.set("mailbox");return}t!==ll()&&qu.set(t)});const wC=t=>{try{return decodeURIComponent(t)}catch{return t}};BY=function(){const t=globalThis.location.hash||"";if(t.startsWith("#compose?mailto=")){const e=t.slice(16),n=wC(e).trim();n&&(ll()!=="mailbox"&&qu.set("mailbox"),setTimeout(()=>{const s=SI(n);ps.mailboxView.composeModal.open(GI(s))},0)),history.replaceState({route:ll()},"",globalThis.location.pathname)}else if(t.startsWith("#compose=")||t.startsWith("#mailto=")){const n=((t.startsWith("#compose=")?wC(t.replace("#compose=","")):wC(t.replace("#mailto=","")))||"").trim();n&&(ll()!=="mailbox"&&qu.set("mailbox"),setTimeout(()=>{if(n.toLowerCase().startsWith("mailto:")||n.includes("?")||t.startsWith("#mailto=")){const r=SI(n);ps.mailboxView.composeModal.open(GI(r))}else ps.mailboxView.composeModal.open({to:[n]})},0)),history.replaceState({route:ll()},"",globalThis.location.pathname)}else if(t.startsWith("#addevent=")){const e=wC(t.replace("#addevent=",""));ll()!=="calendar"&&qu.set("calendar"),setTimeout(()=>{ps.calendarView.prefillQuickEvent&&ps.calendarView.prefillQuickEvent(e)},0),history.replaceState({route:ll()},"",globalThis.location.pathname)}else if(t.startsWith("#search=")){const e=wC(t.replace("#search=",""));ll()!=="mailbox"&&qu.set("mailbox"),setTimeout(()=>{typeof ps.mailboxView.onSearch=="function"&&(ps.mailboxView.onSearch(e),ps.mailboxView.page?.set?.(1),ps.mailboxView.loadMessages?.())},0),history.replaceState({route:ll()},"",globalThis.location.pathname)}else t.length>1&&t.includes("/")&&ll()!=="mailbox"&&qu.set("mailbox")};globalThis.addEventListener("hashchange",BY);BY();function gZt(){const t=Se.get("email")||"default",e=da("prefetch_folders",{account:t}),i=["INBOX",...Array.isArray(e)?e:[]];return[...new Set(i.filter(Boolean))]}async function bZt(){const t=gZt();for(const e of t)try{await Qy({type:"metadata",folder:e,account:Se.get("email"),pageSize:200})}catch{}}function y1e(){Qe(d3)||ll()==="mailbox"&&bZt()}const fZt=Object.freeze(Object.defineProperty({__proto__:null,cleanupCustomEventListeners:rZt,startAppLockTimer:M_},Symbol.toStringTag,{value:"Module"}));Qa.isMac=!1;globalThis.__forwardemailShortcuts=Qa;globalThis.__forwardemailI18n=$m;/*!
5508
5508
  * hash-wasm (https://www.npmjs.com/package/hash-wasm)
5509
5509
  * (c) Dani Biro
5510
5510
  * @license MIT
@@ -5550,7 +5550,7 @@ Minimum version required to store current data is: `+r+`.
5550
5550
  `;return typeof i=="function"&&i(null,m),m};const xkt=REt,p4=uWe,GWe=VWe,Wkt=SWe;function y6(t,e,n,i,s){const r=[].slice.call(arguments,1),a=r.length,o=typeof r[a-1]=="function";if(!o&&!xkt())throw new Error("Callback required as last argument");if(o){if(a<2)throw new Error("Too few arguments provided");a===2?(s=n,n=e,e=i=void 0):a===3&&(e.getContext&&typeof s>"u"?(s=i,i=void 0):(s=i,i=n,n=e,e=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(n=e,e=i=void 0):a===2&&!e.getContext&&(i=n,n=e,e=void 0),new Promise(function(l,c){try{const u=p4.create(n,i);l(t(u,e,i))}catch(u){c(u)}})}try{const l=p4.create(n,i);s(null,t(l,e,i))}catch(l){s(l)}}D5.create=p4.create;D5.toCanvas=y6.bind(null,GWe.render);D5.toDataURL=y6.bind(null,GWe.renderToDataURL);D5.toString=y6.bind(null,function(t,e,n){return Wkt.render(t,n)});const Vkt=kle({__proto__:null,default:D5},[D5]),Skt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Gkt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ckt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Nkt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),wkt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ykt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ekt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),kkt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Mkt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));async function vkt(){return Wh()}async function Bkt(){return(await Wh()).token}const Xkt=Object.freeze(Object.defineProperty({__proto__:null,getToken:Bkt,requestPermission:vkt},Symbol.toStringTag,{value:"Module"})),Rkt=async()=>null,Fkt=async()=>({unregister:()=>{}}),Tkt=async()=>({unregister:()=>{}}),Ukt=async()=>"denied",Lkt=Object.freeze(Object.defineProperty({__proto__:null,getToken:Rkt,onNotificationReceived:Fkt,onTokenRefresh:Tkt,requestPermission:Ukt},Symbol.toStringTag,{value:"Module"})),Dkt=async()=>{},Qkt=async()=>({remove:()=>{}}),Jkt=async()=>()=>{},zkt=async()=>{},Kkt=async()=>{},Hkt=()=>({listen:async()=>()=>{},onCloseRequested:async()=>()=>{},onFocusChanged:async()=>()=>{},close:async()=>{}}),jkt=async()=>null,Okt=async()=>({unregister:()=>{}}),Pkt=async()=>({unregister:()=>{}}),_kt=async()=>({unregister:()=>{}}),$kt=class{},qkt=class{};let eMt=class{};const tMt=async(...t)=>t.join("/"),nMt=async()=>"/",iMt=async()=>!1,sMt=()=>{},rMt=async()=>"denied",aMt=async()=>null,oMt=async()=>{},lMt=async()=>"unknown",cMt=async()=>"web",dMt=async()=>()=>{},uMt=async()=>{},hMt={},CWe=Object.freeze(Object.defineProperty({__proto__:null,BaseDirectory:eMt,Channel:qkt,Resource:$kt,addPluginListener:Qkt,appDir:nMt,arch:lMt,check:aMt,default:hMt,emit:zkt,emitTo:Kkt,exit:uMt,getCurrentWindow:Hkt,getToken:jkt,invoke:Dkt,isPermissionGranted:iMt,join:tMt,listen:Jkt,onNotificationReceived:Okt,onNotificationTapped:Pkt,onOpenUrl:dMt,onTokenRefresh:_kt,platform:cMt,relaunch:oMt,requestPermission:rMt,sendNotification:sMt},Symbol.toStringTag,{value:"Module"})),mMt=async()=>{},pMt=async()=>({remove:()=>{}}),AMt=async()=>()=>{},gMt=async()=>{},bMt=async()=>{},fMt=()=>({listen:async()=>()=>{},onCloseRequested:async()=>()=>{},onFocusChanged:async()=>()=>{},close:async()=>{}}),yMt=async()=>null,IMt=async()=>({unregister:()=>{}}),ZMt=async()=>({unregister:()=>{}}),xMt=async()=>({unregister:()=>{}}),WMt=class{},VMt=class{};let SMt=class{};const GMt=async(...t)=>t.join("/"),CMt=async()=>"/",NMt=async()=>!1,wMt=()=>{},YMt=async()=>"denied",EMt=async()=>null,kMt=async()=>{},MMt=async()=>"unknown",vMt=async()=>"web",BMt=async()=>()=>{},XMt=async()=>{},RMt={},NWe=Object.freeze(Object.defineProperty({__proto__:null,BaseDirectory:SMt,Channel:VMt,Resource:WMt,addPluginListener:pMt,appDir:CMt,arch:MMt,check:EMt,default:RMt,emit:gMt,emitTo:bMt,exit:XMt,getCurrentWindow:fMt,getToken:yMt,invoke:mMt,isPermissionGranted:NMt,join:GMt,listen:AMt,onNotificationReceived:IMt,onNotificationTapped:ZMt,onOpenUrl:BMt,onTokenRefresh:xMt,platform:vMt,relaunch:kMt,requestPermission:YMt,sendNotification:wMt},Symbol.toStringTag,{value:"Module"})),FMt=async()=>{},TMt=async()=>({remove:()=>{}}),UMt=async()=>()=>{},LMt=async()=>{},DMt=async()=>{},QMt=()=>({listen:async()=>()=>{},onCloseRequested:async()=>()=>{},onFocusChanged:async()=>()=>{},close:async()=>{}}),JMt=async()=>null,zMt=async()=>({unregister:()=>{}}),KMt=async()=>({unregister:()=>{}}),HMt=async()=>({unregister:()=>{}}),jMt=class{},OMt=class{};class PMt{}const _Mt=async(...t)=>t.join("/"),$Mt=async()=>"/",qMt=async()=>!1,evt=()=>{},tvt=async()=>"denied",nvt=async()=>null,ivt=async()=>{},svt=async()=>"unknown",rvt=async()=>"web",avt=async()=>()=>{},ovt=async()=>{},lvt={},wWe=Object.freeze(Object.defineProperty({__proto__:null,BaseDirectory:PMt,Channel:OMt,Resource:jMt,addPluginListener:TMt,appDir:$Mt,arch:svt,check:nvt,default:lvt,emit:LMt,emitTo:DMt,exit:ovt,getCurrentWindow:QMt,getToken:JMt,invoke:FMt,isPermissionGranted:qMt,join:_Mt,listen:UMt,onNotificationReceived:zMt,onNotificationTapped:KMt,onOpenUrl:avt,onTokenRefresh:HMt,platform:rvt,relaunch:ivt,requestPermission:tvt,sendNotification:evt},Symbol.toStringTag,{value:"Module"}));class YWe{constructor(...e){this.type="Logical",e.length===1?"Logical"in e[0]?(this.width=e[0].Logical.width,this.height=e[0].Logical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toPhysical(e){return new _S(this.width*e,this.height*e)}[zp](){return{width:this.width,height:this.height}}toJSON(){return this[zp]()}}class _S{constructor(...e){this.type="Physical",e.length===1?"Physical"in e[0]?(this.width=e[0].Physical.width,this.height=e[0].Physical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toLogical(e){return new YWe(this.width/e,this.height/e)}[zp](){return{width:this.width,height:this.height}}toJSON(){return this[zp]()}}class M1{constructor(e){this.size=e}toLogical(e){return this.size instanceof YWe?this.size:this.size.toLogical(e)}toPhysical(e){return this.size instanceof _S?this.size:this.size.toPhysical(e)}[zp](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[zp]()}}class EWe{constructor(...e){this.type="Logical",e.length===1?"Logical"in e[0]?(this.x=e[0].Logical.x,this.y=e[0].Logical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toPhysical(e){return new ug(this.x*e,this.y*e)}[zp](){return{x:this.x,y:this.y}}toJSON(){return this[zp]()}}class ug{constructor(...e){this.type="Physical",e.length===1?"Physical"in e[0]?(this.x=e[0].Physical.x,this.y=e[0].Physical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toLogical(e){return new EWe(this.x/e,this.y/e)}[zp](){return{x:this.x,y:this.y}}toJSON(){return this[zp]()}}class Nf{constructor(e){this.position=e}toLogical(e){return this.position instanceof EWe?this.position:this.position.toLogical(e)}toPhysical(e){return this.position instanceof ug?this.position:this.position.toPhysical(e)}[zp](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[zp]()}}var Q0;(function(t){t.WINDOW_RESIZED="tauri://resize",t.WINDOW_MOVED="tauri://move",t.WINDOW_CLOSE_REQUESTED="tauri://close-requested",t.WINDOW_DESTROYED="tauri://destroyed",t.WINDOW_FOCUS="tauri://focus",t.WINDOW_BLUR="tauri://blur",t.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",t.WINDOW_THEME_CHANGED="tauri://theme-changed",t.WINDOW_CREATED="tauri://window-created",t.WEBVIEW_CREATED="tauri://webview-created",t.DRAG_ENTER="tauri://drag-enter",t.DRAG_OVER="tauri://drag-over",t.DRAG_DROP="tauri://drag-drop",t.DRAG_LEAVE="tauri://drag-leave"})(Q0||(Q0={}));async function kWe(t,e){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(t,e),await ln("plugin:event|unlisten",{event:t,eventId:e})}async function KT(t,e,n){var i;const s=typeof n?.target=="string"?{kind:"AnyLabel",label:n.target}:(i=n?.target)!==null&&i!==void 0?i:{kind:"Any"};return ln("plugin:event|listen",{event:t,target:s,handler:zZe(e)}).then(r=>async()=>kWe(t,r))}async function I6(t,e,n){return KT(t,i=>{kWe(t,i.id),e(i)},n)}async function MWe(t,e){await ln("plugin:event|emit",{event:t,payload:e})}async function vWe(t,e,n){await ln("plugin:event|emit_to",{target:typeof t=="string"?{kind:"AnyLabel",label:t}:t,event:e,payload:n})}let cvt=class PB extends HZe{constructor(e){super(e)}static async new(e,n,i){return ln("plugin:image|new",{rgba:wf(e),width:n,height:i}).then(s=>new PB(s))}static async fromBytes(e){return ln("plugin:image|from_bytes",{bytes:wf(e)}).then(n=>new PB(n))}static async fromPath(e){return ln("plugin:image|from_path",{path:e}).then(n=>new PB(n))}async rgba(){return ln("plugin:image|rgba",{rid:this.rid}).then(e=>new Uint8Array(e))}async size(){return ln("plugin:image|size",{rid:this.rid})}};function wf(t){return t==null?null:typeof t=="string"?t:t instanceof cvt?t.rid:t}var A4;(function(t){t[t.Critical=1]="Critical",t[t.Informational=2]="Informational"})(A4||(A4={}));class dvt{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}var hle;(function(t){t.None="none",t.Normal="normal",t.Indeterminate="indeterminate",t.Paused="paused",t.Error="error"})(hle||(hle={}));function BWe(){return new HT(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function EQ(){return ln("plugin:window|get_all_windows").then(t=>t.map(e=>new HT(e,{skip:!0})))}const kQ=["tauri://created","tauri://error"];class HT{constructor(e,n={}){var i;this.label=e,this.listeners=Object.create(null),n?.skip||ln("plugin:window|create",{options:{...n,parent:typeof n.parent=="string"?n.parent:(i=n.parent)===null||i===void 0?void 0:i.label,label:e}}).then(async()=>this.emit("tauri://created")).catch(async s=>this.emit("tauri://error",s))}static async getByLabel(e){var n;return(n=(await EQ()).find(i=>i.label===e))!==null&&n!==void 0?n:null}static getCurrent(){return BWe()}static async getAll(){return EQ()}static async getFocusedWindow(){for(const e of await EQ())if(await e.isFocused())return e;return null}async listen(e,n){return this._handleTauriEvent(e,n)?()=>{const i=this.listeners[e];i.splice(i.indexOf(n),1)}:KT(e,n,{target:{kind:"Window",label:this.label}})}async once(e,n){return this._handleTauriEvent(e,n)?()=>{const i=this.listeners[e];i.splice(i.indexOf(n),1)}:I6(e,n,{target:{kind:"Window",label:this.label}})}async emit(e,n){if(kQ.includes(e)){for(const i of this.listeners[e]||[])i({event:e,id:-1,payload:n});return}return MWe(e,n)}async emitTo(e,n,i){if(kQ.includes(n)){for(const s of this.listeners[n]||[])s({event:n,id:-1,payload:i});return}return vWe(e,n,i)}_handleTauriEvent(e,n){return kQ.includes(e)?(e in this.listeners?this.listeners[e].push(n):this.listeners[e]=[n],!0):!1}async scaleFactor(){return ln("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return ln("plugin:window|inner_position",{label:this.label}).then(e=>new ug(e))}async outerPosition(){return ln("plugin:window|outer_position",{label:this.label}).then(e=>new ug(e))}async innerSize(){return ln("plugin:window|inner_size",{label:this.label}).then(e=>new _S(e))}async outerSize(){return ln("plugin:window|outer_size",{label:this.label}).then(e=>new _S(e))}async isFullscreen(){return ln("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return ln("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return ln("plugin:window|is_maximized",{label:this.label})}async isFocused(){return ln("plugin:window|is_focused",{label:this.label})}async isDecorated(){return ln("plugin:window|is_decorated",{label:this.label})}async isResizable(){return ln("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return ln("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return ln("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return ln("plugin:window|is_closable",{label:this.label})}async isVisible(){return ln("plugin:window|is_visible",{label:this.label})}async title(){return ln("plugin:window|title",{label:this.label})}async theme(){return ln("plugin:window|theme",{label:this.label})}async isAlwaysOnTop(){return ln("plugin:window|is_always_on_top",{label:this.label})}async center(){return ln("plugin:window|center",{label:this.label})}async requestUserAttention(e){let n=null;return e&&(e===A4.Critical?n={type:"Critical"}:n={type:"Informational"}),ln("plugin:window|request_user_attention",{label:this.label,value:n})}async setResizable(e){return ln("plugin:window|set_resizable",{label:this.label,value:e})}async setEnabled(e){return ln("plugin:window|set_enabled",{label:this.label,value:e})}async isEnabled(){return ln("plugin:window|is_enabled",{label:this.label})}async setMaximizable(e){return ln("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return ln("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return ln("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return ln("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return ln("plugin:window|maximize",{label:this.label})}async unmaximize(){return ln("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return ln("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return ln("plugin:window|minimize",{label:this.label})}async unminimize(){return ln("plugin:window|unminimize",{label:this.label})}async show(){return ln("plugin:window|show",{label:this.label})}async hide(){return ln("plugin:window|hide",{label:this.label})}async close(){return ln("plugin:window|close",{label:this.label})}async destroy(){return ln("plugin:window|destroy",{label:this.label})}async setDecorations(e){return ln("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return ln("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return ln("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return ln("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return ln("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return ln("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return ln("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){return ln("plugin:window|set_size",{label:this.label,value:e instanceof M1?e:new M1(e)})}async setMinSize(e){return ln("plugin:window|set_min_size",{label:this.label,value:e instanceof M1?e:e?new M1(e):null})}async setMaxSize(e){return ln("plugin:window|set_max_size",{label:this.label,value:e instanceof M1?e:e?new M1(e):null})}async setSizeConstraints(e){function n(i){return i?{Logical:i}:null}return ln("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:n(e?.minWidth),minHeight:n(e?.minHeight),maxWidth:n(e?.maxWidth),maxHeight:n(e?.maxHeight)}})}async setPosition(e){return ln("plugin:window|set_position",{label:this.label,value:e instanceof Nf?e:new Nf(e)})}async setFullscreen(e){return ln("plugin:window|set_fullscreen",{label:this.label,value:e})}async setSimpleFullscreen(e){return ln("plugin:window|set_simple_fullscreen",{label:this.label,value:e})}async setFocus(){return ln("plugin:window|set_focus",{label:this.label})}async setFocusable(e){return ln("plugin:window|set_focusable",{label:this.label,value:e})}async setIcon(e){return ln("plugin:window|set_icon",{label:this.label,value:wf(e)})}async setSkipTaskbar(e){return ln("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return ln("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return ln("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return ln("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setBackgroundColor(e){return ln("plugin:window|set_background_color",{color:e})}async setCursorPosition(e){return ln("plugin:window|set_cursor_position",{label:this.label,value:e instanceof Nf?e:new Nf(e)})}async setIgnoreCursorEvents(e){return ln("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return ln("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return ln("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setBadgeCount(e){return ln("plugin:window|set_badge_count",{label:this.label,value:e})}async setBadgeLabel(e){return ln("plugin:window|set_badge_label",{label:this.label,value:e})}async setOverlayIcon(e){return ln("plugin:window|set_overlay_icon",{label:this.label,value:e?wf(e):void 0})}async setProgressBar(e){return ln("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return ln("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return ln("plugin:window|set_title_bar_style",{label:this.label,value:e})}async setTheme(e){return ln("plugin:window|set_theme",{label:this.label,value:e})}async onResized(e){return this.listen(Q0.WINDOW_RESIZED,n=>{n.payload=new _S(n.payload),e(n)})}async onMoved(e){return this.listen(Q0.WINDOW_MOVED,n=>{n.payload=new ug(n.payload),e(n)})}async onCloseRequested(e){return this.listen(Q0.WINDOW_CLOSE_REQUESTED,async n=>{const i=new dvt(n);await e(i),i.isPreventDefault()||await this.destroy()})}async onDragDropEvent(e){const n=await this.listen(Q0.DRAG_ENTER,a=>{e({...a,payload:{type:"enter",paths:a.payload.paths,position:new ug(a.payload.position)}})}),i=await this.listen(Q0.DRAG_OVER,a=>{e({...a,payload:{type:"over",position:new ug(a.payload.position)}})}),s=await this.listen(Q0.DRAG_DROP,a=>{e({...a,payload:{type:"drop",paths:a.payload.paths,position:new ug(a.payload.position)}})}),r=await this.listen(Q0.DRAG_LEAVE,a=>{e({...a,payload:{type:"leave"}})});return()=>{n(),s(),i(),r()}}async onFocusChanged(e){const n=await this.listen(Q0.WINDOW_FOCUS,s=>{e({...s,payload:!0})}),i=await this.listen(Q0.WINDOW_BLUR,s=>{e({...s,payload:!1})});return()=>{n(),i()}}async onScaleChanged(e){return this.listen(Q0.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(Q0.WINDOW_THEME_CHANGED,e)}}var mle;(function(t){t.Disabled="disabled",t.Throttle="throttle",t.Suspend="suspend"})(mle||(mle={}));var ple;(function(t){t.Default="default",t.FluentOverlay="fluentOverlay"})(ple||(ple={}));var Ale;(function(t){t.AppearanceBased="appearanceBased",t.Light="light",t.Dark="dark",t.MediumLight="mediumLight",t.UltraDark="ultraDark",t.Titlebar="titlebar",t.Selection="selection",t.Menu="menu",t.Popover="popover",t.Sidebar="sidebar",t.HeaderView="headerView",t.Sheet="sheet",t.WindowBackground="windowBackground",t.HudWindow="hudWindow",t.FullScreenUI="fullScreenUI",t.Tooltip="tooltip",t.ContentBackground="contentBackground",t.UnderWindowBackground="underWindowBackground",t.UnderPageBackground="underPageBackground",t.Mica="mica",t.Blur="blur",t.Acrylic="acrylic",t.Tabbed="tabbed",t.TabbedDark="tabbedDark",t.TabbedLight="tabbedLight"})(Ale||(Ale={}));var gle;(function(t){t.FollowsWindowActiveState="followsWindowActiveState",t.Active="active",t.Inactive="inactive"})(gle||(gle={}));function XWe(){return new Z6(BWe(),window.__TAURI_INTERNALS__.metadata.currentWebview.label,{skip:!0})}async function ble(){return ln("plugin:webview|get_all_webviews").then(t=>t.map(e=>new Z6(new HT(e.windowLabel,{skip:!0}),e.label,{skip:!0})))}const MQ=["tauri://created","tauri://error"];class Z6{constructor(e,n,i){this.window=e,this.label=n,this.listeners=Object.create(null),i?.skip||ln("plugin:webview|create_webview",{windowLabel:e.label,options:{...i,label:n}}).then(async()=>this.emit("tauri://created")).catch(async s=>this.emit("tauri://error",s))}static async getByLabel(e){var n;return(n=(await ble()).find(i=>i.label===e))!==null&&n!==void 0?n:null}static getCurrent(){return XWe()}static async getAll(){return ble()}async listen(e,n){return this._handleTauriEvent(e,n)?()=>{const i=this.listeners[e];i.splice(i.indexOf(n),1)}:KT(e,n,{target:{kind:"Webview",label:this.label}})}async once(e,n){return this._handleTauriEvent(e,n)?()=>{const i=this.listeners[e];i.splice(i.indexOf(n),1)}:I6(e,n,{target:{kind:"Webview",label:this.label}})}async emit(e,n){if(MQ.includes(e)){for(const i of this.listeners[e]||[])i({event:e,id:-1,payload:n});return}return MWe(e,n)}async emitTo(e,n,i){if(MQ.includes(n)){for(const s of this.listeners[n]||[])s({event:n,id:-1,payload:i});return}return vWe(e,n,i)}_handleTauriEvent(e,n){return MQ.includes(e)?(e in this.listeners?this.listeners[e].push(n):this.listeners[e]=[n],!0):!1}async position(){return ln("plugin:webview|webview_position",{label:this.label}).then(e=>new ug(e))}async size(){return ln("plugin:webview|webview_size",{label:this.label}).then(e=>new _S(e))}async close(){return ln("plugin:webview|webview_close",{label:this.label})}async setSize(e){return ln("plugin:webview|set_webview_size",{label:this.label,value:e instanceof M1?e:new M1(e)})}async setPosition(e){return ln("plugin:webview|set_webview_position",{label:this.label,value:e instanceof Nf?e:new Nf(e)})}async setFocus(){return ln("plugin:webview|set_webview_focus",{label:this.label})}async setAutoResize(e){return ln("plugin:webview|set_webview_auto_resize",{label:this.label,value:e})}async hide(){return ln("plugin:webview|webview_hide",{label:this.label})}async show(){return ln("plugin:webview|webview_show",{label:this.label})}async setZoom(e){return ln("plugin:webview|set_webview_zoom",{label:this.label,value:e})}async reparent(e){return ln("plugin:webview|reparent",{label:this.label,window:typeof e=="string"?e:e.label})}async clearAllBrowsingData(){return ln("plugin:webview|clear_all_browsing_data")}async setBackgroundColor(e){return ln("plugin:webview|set_webview_background_color",{color:e})}async onDragDropEvent(e){const n=await this.listen(Q0.DRAG_ENTER,a=>{e({...a,payload:{type:"enter",paths:a.payload.paths,position:new ug(a.payload.position)}})}),i=await this.listen(Q0.DRAG_OVER,a=>{e({...a,payload:{type:"over",position:new ug(a.payload.position)}})}),s=await this.listen(Q0.DRAG_DROP,a=>{e({...a,payload:{type:"drop",paths:a.payload.paths,position:new ug(a.payload.position)}})}),r=await this.listen(Q0.DRAG_LEAVE,a=>{e({...a,payload:{type:"leave"}})});return()=>{n(),s(),i(),r()}}}function RWe(){const t=XWe();return new BG(t.label,{skip:!0})}async function g4(){return ln("plugin:window|get_all_windows").then(t=>t.map(e=>new BG(e,{skip:!0})))}class BG{constructor(e,n={}){var i;this.label=e,this.listeners=Object.create(null),n?.skip||ln("plugin:webview|create_webview_window",{options:{...n,parent:typeof n.parent=="string"?n.parent:(i=n.parent)===null||i===void 0?void 0:i.label,label:e}}).then(async()=>this.emit("tauri://created")).catch(async s=>this.emit("tauri://error",s))}static async getByLabel(e){var n;const i=(n=(await g4()).find(s=>s.label===e))!==null&&n!==void 0?n:null;return i?new BG(i.label,{skip:!0}):null}static getCurrent(){return RWe()}static async getAll(){return g4()}async listen(e,n){return this._handleTauriEvent(e,n)?()=>{const i=this.listeners[e];i.splice(i.indexOf(n),1)}:KT(e,n,{target:{kind:"WebviewWindow",label:this.label}})}async once(e,n){return this._handleTauriEvent(e,n)?()=>{const i=this.listeners[e];i.splice(i.indexOf(n),1)}:I6(e,n,{target:{kind:"WebviewWindow",label:this.label}})}async setBackgroundColor(e){return ln("plugin:window|set_background_color",{color:e}).then(()=>ln("plugin:webview|set_webview_background_color",{color:e}))}}uvt(BG,[HT,Z6]);function uvt(t,e){(Array.isArray(e)?e:[e]).forEach(n=>{Object.getOwnPropertyNames(n.prototype).forEach(i=>{var s;typeof t.prototype=="object"&&t.prototype&&i in t.prototype||Object.defineProperty(t.prototype,i,(s=Object.getOwnPropertyDescriptor(n.prototype,i))!==null&&s!==void 0?s:Object.create(null))})})}const hvt=Object.freeze(Object.defineProperty({__proto__:null,WebviewWindow:BG,getAllWebviewWindows:g4,getCurrentWebviewWindow:RWe},Symbol.toStringTag,{value:"Module"}));async function mvt(t){try{const{Menu:e,MenuItem:n,CheckMenuItem:i,Submenu:s,PredefinedMenuItem:r}=await Promise.resolve().then(()=>cXt),{message:a,actions:o,folders:l,labels:c=[]}=t,u=!!a.is_unread,h=!!a.is_starred||Array.isArray(a.flags)&&a.flags.includes("\\Flagged"),m=[];if(m.push(await n.new({text:"Reply",action:o.onReply})),m.push(await n.new({text:"Forward",action:o.onForward})),m.push(await r.new({item:"Separator"})),m.push(await n.new({text:u?"Mark as Read":"Mark as Unread",action:o.onToggleRead})),o.onToggleStar&&m.push(await n.new({text:h?"Unstar":"Star",action:o.onToggleStar})),m.push(await r.new({item:"Separator"})),!t.isArchiveFolder&&!t.isSpamFolder&&!t.isDraftFolder&&!t.isTrashFolder&&m.push(await n.new({text:"Archive",action:o.onArchive})),m.push(await n.new({text:"Delete",action:o.onDelete})),o.onReportSpam&&!t.isSpamFolder&&!t.isDraftFolder&&m.push(await n.new({text:"Report spam",action:o.onReportSpam})),l.length>0){m.push(await r.new({item:"Separator"}));const A=await Promise.all(l.slice(0,20).map(y=>n.new({text:y.path||y.name||"Unknown",action:()=>o.onMoveTo(y.path)}))),f=await s.new({text:"Move to",items:A});m.push(f)}if(o.onToggleLabel){const A=new Set,f=V=>{if(Array.isArray(V))for(const W of V)W&&(typeof W=="string"?A.add(W):typeof W=="object"&&W.id&&A.add(String(W.id)))};f(a.labels),f(a.label_ids),f(a.labelIds);const y=V=>String(V.id||V.keyword||V.value||V.name||""),I=await Promise.all(c.filter(V=>y(V)).slice(0,50).map(V=>{const W=y(V),Y=V.name||V.label||V.value||W;return i.new({text:Y,checked:A.has(W),action:()=>o.onToggleLabel?.(W)})})),x=[...I];if(o.onNewLabel&&(I.length>0&&x.push(await r.new({item:"Separator"})),x.push(await n.new({text:"New label…",action:o.onNewLabel}))),x.length>0){m.push(await r.new({item:"Separator"}));const V=await s.new({text:"Label as…",items:x});m.push(V)}}return await(await e.new({items:m})).popup(),!0}catch(e){return console.warn("[native-context-menu] Failed, falling back to HTML menu:",e),!1}}const pvt=Object.freeze(Object.defineProperty({__proto__:null,showNativeContextMenu:mvt},Symbol.toStringTag,{value:"Module"}));function Ev(t){if(typeof t!="string"||!t)throw new Error("expected a non-empty string, got: "+t)}function vQ(t){if(typeof t!="number")throw new Error("expected a number, got: "+t)}const Avt=1,gvt=1,PW="emoji",H5="keyvalue",x6="favorites",bvt="tokens",FWe="tokens",fvt="unicode",TWe="count",yvt="group",Ivt="order",UWe="group-order",b4="eTag",I9="url",fle="skinTone",XG="readonly",W6="readwrite",LWe="skinUnicodes",Zvt="skinUnicodes",xvt="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",Wvt="en";function Vvt(t,e){const n=new Set,i=[];for(const s of t){const r=e(s);n.has(r)||(n.add(r),i.push(s))}return i}function yle(t){return Vvt(t,e=>e.unicode)}function Svt(t){function e(n,i,s){const r=i?t.createObjectStore(n,{keyPath:i}):t.createObjectStore(n);if(s)for(const[a,[o,l]]of Object.entries(s))r.createIndex(a,o,{multiEntry:l});return r}e(H5),e(PW,fvt,{[FWe]:[bvt,!0],[UWe]:[[yvt,Ivt]],[LWe]:[Zvt,!0]}),e(x6,void 0,{[TWe]:[""]})}const f4={},_B={},Z9={};function DWe(t,e,n){n.onerror=()=>e(n.error),n.onblocked=()=>e(new Error("IDB blocked")),n.onsuccess=()=>t(n.result)}async function Gvt(t){const e=await new Promise((n,i)=>{const s=indexedDB.open(t,Avt);f4[t]=s,s.onupgradeneeded=r=>{r.oldVersion<gvt&&Svt(s.result)},DWe(n,i,s)});return e.onclose=()=>V6(t),e}function Cvt(t){return _B[t]||(_B[t]=Gvt(t)),_B[t]}function QI(t,e,n,i){return new Promise((s,r)=>{const a=t.transaction(e,n,{durability:"relaxed"}),o=typeof e=="string"?a.objectStore(e):e.map(c=>a.objectStore(c));let l;i(o,a,c=>{l=c}),a.oncomplete=()=>s(l),a.onerror=()=>r(a.error)})}function V6(t){const e=f4[t],n=e&&e.result;if(n){n.close();const i=Z9[t];if(i)for(const s of i)s()}delete f4[t],delete _B[t],delete Z9[t]}function Nvt(t){return new Promise((e,n)=>{V6(t);const i=indexedDB.deleteDatabase(t);DWe(e,n,i)})}function wvt(t,e){let n=Z9[t];n||(n=Z9[t]=[]),n.push(e)}const Yvt=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function $S(t){return t.split(/[\s_]+/).map(e=>!e.match(/\w/)||Yvt.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const Evt=2;function QWe(t){return t.filter(Boolean).map(e=>e.toLowerCase()).filter(e=>e.length>=Evt)}function kvt(t){return t.map(({annotation:n,emoticon:i,group:s,order:r,shortcodes:a,skins:o,tags:l,emoji:c,version:u})=>{const h=[...new Set(QWe([...(a||[]).map($S).flat(),...(l||[]).map($S).flat(),...$S(n),i]))].sort(),m={annotation:n,group:s,order:r,tags:l,tokens:h,unicode:c,version:u};if(i&&(m.emoticon=i),a&&(m.shortcodes=a),o){m.skinTones=[],m.skinUnicodes=[],m.skinVersions=[];for(const{tone:p,emoji:A,version:f}of o)m.skinTones.push(p),m.skinUnicodes.push(A),m.skinVersions.push(f)}return m})}function JWe(t,e,n,i){t[e](n).onsuccess=s=>i&&i(s.target.result)}function GW(t,e,n){JWe(t,"get",e,n)}function zWe(t,e,n){JWe(t,"getAll",e,n)}function S6(t){t.commit&&t.commit()}function Mvt(t,e){let n=t[0];for(let i=1;i<t.length;i++){const s=t[i];e(n)>e(s)&&(n=s)}return n}function KWe(t,e){const n=Mvt(t,s=>s.length),i=[];for(const s of n)t.some(r=>r.findIndex(a=>e(a)===e(s))===-1)||i.push(s);return i}async function vvt(t){return!await G6(t,H5,I9)}async function Bvt(t,e,n){const[i,s]=await Promise.all([b4,I9].map(r=>G6(t,H5,r)));return i===n&&s===e}async function Xvt(t,e){return QI(t,PW,XG,(i,s,r)=>{let a;const o=()=>{i.getAll(a&&IDBKeyRange.lowerBound(a,!0),50).onsuccess=l=>{const c=l.target.result;for(const u of c)if(a=u.unicode,e(u))return r(u);if(c.length<50)return r();o()}};o()})}async function HWe(t,e,n,i){try{const s=kvt(e);await QI(t,[PW,H5],W6,([r,a],o)=>{let l,c,u=0;function h(){++u===2&&m()}function m(){if(!(l===i&&c===n)){r.clear();for(const p of s)r.put(p);a.put(i,b4),a.put(n,I9),S6(o)}}GW(a,b4,p=>{l=p,h()}),GW(a,I9,p=>{c=p,h()})})}finally{}}async function Rvt(t,e){return QI(t,PW,XG,(n,i,s)=>{const r=IDBKeyRange.bound([e,0],[e+1,0],!1,!0);zWe(n.index(UWe),r,s)})}async function jWe(t,e){const n=QWe($S(e));return n.length?QI(t,PW,XG,(i,s,r)=>{const a=[],o=()=>{a.length===n.length&&l()},l=()=>{const c=KWe(a,u=>u.unicode);r(c.sort((u,h)=>u.order<h.order?-1:1))};for(let c=0;c<n.length;c++){const u=n[c],h=c===n.length-1?IDBKeyRange.bound(u,u+"￿",!1,!0):IDBKeyRange.only(u);zWe(i.index(FWe),h,m=>{a.push(m),o()})}}):[]}async function Fvt(t,e){const n=await jWe(t,e);return n.length?n.filter(i=>(i.shortcodes||[]).map(r=>r.toLowerCase()).includes(e.toLowerCase()))[0]||null:await Xvt(t,s=>(s.shortcodes||[]).includes(e.toLowerCase()))||null}async function Tvt(t,e){return QI(t,PW,XG,(n,i,s)=>GW(n,e,r=>{if(r)return s(r);GW(n.index(LWe),e,a=>s(a||null))}))}function G6(t,e,n){return QI(t,e,XG,(i,s,r)=>GW(i,n,r))}function Uvt(t,e,n,i){return QI(t,e,W6,(s,r)=>{s.put(i,n),S6(r)})}function Lvt(t,e){return QI(t,x6,W6,(n,i)=>GW(n,e,s=>{n.put((s||0)+1,e),S6(i)}))}function Dvt(t,e,n){return n===0?[]:QI(t,[x6,PW],XG,([i,s],r,a)=>{const o=[];i.index(TWe).openCursor(void 0,"prev").onsuccess=l=>{const c=l.target.result;if(!c)return a(o);function u(p){if(o.push(p),o.length===n)return a(o);c.continue()}const h=c.primaryKey,m=e.byName(h);if(m)return u(m);GW(s,h,p=>{if(p)return u(p);c.continue()})}})}const kv="";function Qvt(t,e){const n=new Map;for(const s of t){const r=e(s);for(const a of r){let o=n;for(let c=0;c<a.length;c++){const u=a.charAt(c);let h=o.get(u);h||(h=new Map,o.set(u,h)),o=h}let l=o.get(kv);l||(l=[],o.set(kv,l)),l.push(s)}}return(s,r)=>{let a=n;for(let c=0;c<s.length;c++){const u=s.charAt(c),h=a.get(u);if(h)a=h;else return[]}if(r)return a.get(kv)||[];const o=[],l=[a];for(;l.length;){const u=[...l.shift().entries()].sort((h,m)=>h[0]<m[0]?-1:1);for(const[h,m]of u)h===kv?o.push(...m):l.push(m)}return o}}const Jvt=["name","url"];function zvt(t){const e=t&&Array.isArray(t),n=e&&t.length&&(!t[0]||Jvt.some(i=>!(i in t[0])));if(!e||n)throw new Error("Custom emojis are in the wrong format")}function Ile(t){zvt(t);const e=(m,p)=>m.name.toLowerCase()<p.name.toLowerCase()?-1:1,n=t.sort(e),s=Qvt(t,m=>{const p=new Set;if(m.shortcodes)for(const A of m.shortcodes)for(const f of $S(A))p.add(f);return p}),r=m=>s(m,!0),a=m=>s(m,!1),o=m=>{const p=$S(m),A=p.map((f,y)=>(y<p.length-1?r:a)(f));return KWe(A,f=>f.name).sort(e)},l=new Map,c=new Map;for(const m of t){c.set(m.name.toLowerCase(),m);for(const p of m.shortcodes||[])l.set(p.toLowerCase(),m)}return{all:n,search:o,byShortcode:m=>l.get(m.toLowerCase()),byName:m=>c.get(m.toLowerCase())}}const Kvt=typeof wrappedJSObject<"u";function JC(t){if(!t)return t;if(Kvt&&(t=structuredClone(t)),delete t.tokens,t.skinTones){const e=t.skinTones.length;t.skins=Array(e);for(let n=0;n<e;n++)t.skins[n]={tone:t.skinTones[n],unicode:t.skinUnicodes[n],version:t.skinVersions[n]};delete t.skinTones,delete t.skinUnicodes,delete t.skinVersions}return t}function OWe(t){t||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const Hvt=["annotation","emoji","group","order","version"];function jvt(t){if(!t||!Array.isArray(t)||!t[0]||typeof t[0]!="object"||Hvt.some(e=>!(e in t[0])))throw new Error("Emoji data is in the wrong format")}function PWe(t,e){if(Math.floor(t.status/100)!==2)throw new Error("Failed to fetch: "+e+": "+t.status)}async function Ovt(t){const e=await fetch(t,{method:"HEAD"});PWe(e,t);const n=e.headers.get("etag");return OWe(n),n}async function y4(t){const e=await fetch(t);PWe(e,t);const n=e.headers.get("etag");OWe(n);const i=await e.json();return jvt(i),[n,i]}function Pvt(t){for(var e="",n=new Uint8Array(t),i=n.byteLength,s=-1;++s<i;)e+=String.fromCharCode(n[s]);return e}function _vt(t){for(var e=t.length,n=new ArrayBuffer(e),i=new Uint8Array(n),s=-1;++s<e;)i[s]=t.charCodeAt(s);return n}async function _We(t){const e=JSON.stringify(t);let n=_vt(e);const i=await crypto.subtle.digest("SHA-1",n),s=Pvt(i);return btoa(s)}async function $vt(t,e){let n,i=await Ovt(e);if(!i){const s=await y4(e);i=s[0],n=s[1],i||(i=await _We(n))}await Bvt(t,e,i)||(n||(n=(await y4(e))[1]),await HWe(t,n,e,i))}async function qvt(t,e){let[n,i]=await y4(e);n||(n=await _We(i)),await HWe(t,i,e,n)}async function eBt(t,e){try{await $vt(t,e)}catch(n){if(n.name!=="InvalidStateError")throw n}}class $We{constructor({dataSource:e=xvt,locale:n=Wvt,customEmoji:i=[]}={}){this.dataSource=e,this.locale=n,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=Ile(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const e=this._db=await Cvt(this._dbName);wvt(this._dbName,this._clear);const n=this.dataSource;await vvt(e)?await qvt(e,n):this._lazyUpdate=eBt(e,n)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return vQ(e),await this.ready(),yle(await Rvt(this._db,e)).map(JC)}async getEmojiBySearchQuery(e){Ev(e),await this.ready();const n=this._custom.search(e),i=yle(await jWe(this._db,e)).map(JC);return[...n,...i]}async getEmojiByShortcode(e){Ev(e),await this.ready();const n=this._custom.byShortcode(e);return n||JC(await Fvt(this._db,e))}async getEmojiByUnicodeOrName(e){Ev(e),await this.ready();const n=this._custom.byName(e);return n||JC(await Tvt(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await G6(this._db,H5,fle)||0}async setPreferredSkinTone(e){return vQ(e),await this.ready(),Uvt(this._db,H5,fle,e)}async incrementFavoriteEmojiCount(e){return Ev(e),await this.ready(),Lvt(this._db,e)}async getTopFavoriteEmoji(e){return vQ(e),await this.ready(),(await Dvt(this._db,this._custom,e)).map(JC)}set customEmoji(e){this._custom=Ile(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch{}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await V6(this._dbName)}async delete(){await this._shutdown(),await Nvt(this._dbName)}}const I4=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([t,e,n])=>({id:t,emoji:e,name:n})),BQ=I4.slice(1),tBt=2,Zle=6,qWe=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function xle(t){return t.unicode.includes("‍")}const nBt={"🫪":17,"🫩":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},iBt=1e3,sBt="🖐️",rBt=8,aBt=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],eVe='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',oBt=(t,e)=>t<e?-1:t>e?1:0,Wle=(t,e)=>{const n=document.createElement("canvas");n.width=n.height=1;const i=n.getContext("2d",{willReadFrequently:!0});return i.textBaseline="top",i.font=`100px ${eVe}`,i.fillStyle=e,i.scale(.01,.01),i.fillText(t,0,0),i.getImageData(0,0,1,1).data},lBt=(t,e)=>{const n=[...t].join(","),i=[...e].join(",");return n===i&&!n.startsWith("0,0,0,")};function cBt(t){const e=Wle(t,"#000"),n=Wle(t,"#fff");return e&&n&&lBt(e,n)}function dBt(){const t=Object.entries(nBt);try{for(const[e,n]of t)if(cBt(e))return n}catch{}finally{}return t[0][1]}let XQ;const RQ=()=>(XQ||(XQ=new Promise(t=>qWe(()=>t(dBt())))),XQ),Z4=new Map,uBt="️",hBt="\uD83C",mBt="‍",pBt=127995,ABt=57339;function gBt(t,e){if(e===0)return t;const n=t.indexOf(mBt);return n!==-1?t.substring(0,n)+String.fromCodePoint(pBt+e-1)+t.substring(n):(t.endsWith(uBt)&&(t=t.substring(0,t.length-1)),t+hBt+String.fromCodePoint(ABt+e-1))}function Hb(t){t.preventDefault(),t.stopPropagation()}function FQ(t,e,n){return e+=t?-1:1,e<0?e=n.length-1:e>=n.length&&(e=0),e}function tVe(t,e){const n=new Set,i=[];for(const s of t){const r=e(s);n.has(r)||(n.add(r),i.push(s))}return i}function bBt(t,e){const n=i=>{const s={};for(const r of i)typeof r.tone=="number"&&r.version<=e&&(s[r.tone]=r.unicode);return s};return t.map(({unicode:i,skins:s,shortcodes:r,url:a,name:o,category:l,annotation:c})=>({unicode:i,name:o,shortcodes:r,url:a,category:l,annotation:c,id:i||o,skins:s&&n(s)}))}const $B=requestAnimationFrame;let fBt=typeof ResizeObserver=="function";function yBt(t,e,n){let i;fBt?(i=new ResizeObserver(n),i.observe(t)):$B(n),e.addEventListener("abort",()=>{i&&i.disconnect()})}function Vle(t){{const e=document.createRange();return e.selectNode(t.firstChild),e.getBoundingClientRect().width}}const IBt="😀";let TQ,Yx;function Sle(t,e,n){const i=Vle(e);if(!i){if(!Yx){Yx=n.cloneNode(!0);const s=getComputedStyle(n);for(const r of["font-family","line-height","width","height","font-size","display","align-items","justify-content"])Yx.style.setProperty(r,s.getPropertyValue(r),"important")}try{return document.body.appendChild(Yx),Yx.firstChild.nodeValue=t,Vle(Yx)}finally{Yx.remove()}}return i}function ZBt(t,e,n){let i=!0;for(const s of t){const r=n(s);if(!r)continue;typeof TQ>"u"&&(TQ=Sle(IBt,e,e));const o=Sle(s.unicode,r,e)/1.8<TQ;Z4.set(s.unicode,o),o||(i=!1)}return i}function xBt(t){return tVe(t,e=>e)}function WBt(t){t&&(t.scrollTop=0)}function pw(t,e,n){let i=t.get(e);return i||(i=n(),t.set(e,i)),i}function Gle(t){return""+t}function VBt(t){const e=document.createElement("template");return e.innerHTML=t,e}const SBt=new WeakMap,GBt=new WeakMap,CBt=Symbol("un-keyed"),NBt="replaceChildren"in Element.prototype;function wBt(t,e){NBt?t.replaceChildren(...e):(t.innerHTML="",t.append(...e))}function YBt(t,e){let n=t.firstChild,i=0;for(;n;){if(e[i]!==n)return!0;n=n.nextSibling,i++}return i!==e.length}function EBt(t,e){const{targetNode:n}=e;let{targetParentNode:i}=e,s=!1;i?s=YBt(i,t):(s=!0,e.targetNode=void 0,e.targetParentNode=i=n.parentNode),s&&wBt(i,t)}function kBt(t,e){for(const n of e){const{targetNode:i,currentExpression:s,binding:{expressionIndex:r,attributeName:a,attributeValuePre:o,attributeValuePost:l}}=n,c=t[r];if(s!==c)if(n.currentExpression=c,a)if(c===null)i.removeAttribute(a);else{const u=o+Gle(c)+l;i.setAttribute(a,u)}else{let u;Array.isArray(c)?EBt(c,n):c instanceof Element?(u=c,i.replaceWith(u)):i.nodeValue=Gle(c),u&&(n.targetNode=u)}}}function MBt(t){let e="",n=!1,i=!1,s=-1;const r=new Map,a=[];let o=0;for(let c=0,u=t.length;c<u;c++){const h=t[c];if(e+=h.slice(o),c===u-1)break;for(let x=0;x<h.length;x++)switch(h.charAt(x)){case"<":{h.charAt(x+1)==="/"?a.pop():(n=!0,a.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const m=a[a.length-1],p=pw(r,m,()=>[]);let A,f,y;if(i){const x=/(\S+)="?([^"=]*)$/.exec(h);A=x[1],f=x[2];const V=/^([^">]*)("?)/.exec(t[c+1]);y=V[1],e=e.slice(0,-1*x[0].length),o=V[0].length}else o=0;const I={attributeName:A,attributeValuePre:f,attributeValuePost:y,expressionIndex:c};p.push(I),!n&&!i&&(e+=" ")}return{template:VBt(e),elementsToBindings:r}}function Cle(t,e,n){for(let i=0;i<t.length;i++){const s=t[i],r=s.attributeName?e:e.firstChild,a={binding:s,targetNode:r,targetParentNode:void 0,currentExpression:void 0};n.push(a)}}function vBt(t,e){const n=[];let i;if(e.size===1&&(i=e.get(0)))Cle(i,t,n);else{const s=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT);let r=t,a=-1;do{const o=e.get(++a);o&&Cle(o,r,n)}while(r=s.nextNode())}return n}function BBt(t){const{template:e,elementsToBindings:n}=pw(SBt,t,()=>MBt(t)),i=e.cloneNode(!0).content.firstElementChild,s=vBt(i,n);return function(a){return kBt(a,s),i}}function XBt(t){const e=pw(GBt,t,()=>new Map);let n=CBt;function i(r,...a){const o=pw(e,r,()=>new Map);return pw(o,n,()=>BBt(r))(a)}function s(r,a,o){return r.map((l,c)=>{const u=n;n=o(l);try{return a(l,c)}finally{n=u}})}return{map:s,html:i}}function RBt(t,e,n,i,s,r,a,o,l){const{labelWithSkin:c,titleForEmoji:u,unicodeWithSkin:h}=n,{html:m,map:p}=XBt(e);function A(x,V,W){return p(x,(Y,E)=>m`<button role="${V?"option":"menuitem"}" aria-selected="${V?E===e.activeSearchItem:null}" aria-label="${c(Y,e.currentSkinTone)}" title="${u(Y)}" class="${"emoji"+(V&&E===e.activeSearchItem?" active":"")+(Y.unicode?"":" custom-emoji")}" id="${`${W}-${Y.id}`}" style="${Y.unicode?null:`--custom-emoji-background: url(${JSON.stringify(Y.url)})`}">${Y.unicode?h(Y,e.currentSkinTone):""}</button>`,Y=>`${W}-${Y.id}`)}const y=m`<section data-ref="rootElement" class="picker" aria-label="${e.i18n.regionLabel}" style="${e.pickerStyle||""}"><div class="pad-top"></div><div class="search-row"><div class="search-wrapper"><input id="search" class="search" type="search" role="combobox" enterkeyhint="search" placeholder="${e.i18n.searchLabel}" autocapitalize="none" autocomplete="off" spellcheck="true" aria-expanded="${!!(e.searchMode&&e.currentEmojis.length)}" aria-controls="search-results" aria-describedby="search-description" aria-autocomplete="list" aria-activedescendant="${e.activeSearchItemId?`emo-${e.activeSearchItemId}`:null}" data-ref="searchElement" data-on-input="onSearchInput" data-on-keydown="onSearchKeydown"><label class="sr-only" for="search">${e.i18n.searchLabel}</label> <span id="search-description" class="sr-only">${e.i18n.searchDescription}</span></div><div class="skintone-button-wrapper ${e.skinTonePickerExpandedAfterAnimation?"expanded":""}"><button id="skintone-button" class="emoji ${e.skinTonePickerExpanded?"hide-focus":""}" aria-label="${e.skinToneButtonLabel}" title="${e.skinToneButtonLabel}" aria-describedby="skintone-description" aria-haspopup="listbox" aria-expanded="${e.skinTonePickerExpanded}" aria-controls="skintone-list" data-on-click="onClickSkinToneButton">${e.skinToneButtonText||""}</button></div><span id="skintone-description" class="sr-only">${e.i18n.skinToneDescription}</span><div data-ref="skinToneDropdown" id="skintone-list" class="skintone-list hide-focus ${e.skinTonePickerExpanded?"":"hidden no-animate"}" style="transform:translateY(${e.skinTonePickerExpanded?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))"})" role="listbox" aria-label="${e.i18n.skinTonesLabel}" aria-activedescendant="skintone-${e.activeSkinTone}" aria-hidden="${!e.skinTonePickerExpanded}" tabIndex="-1" data-on-focusout="onSkinToneOptionsFocusOut" data-on-click="onSkinToneOptionsClick" data-on-keydown="onSkinToneOptionsKeydown" data-on-keyup="onSkinToneOptionsKeyup">${p(e.skinTones,(x,V)=>m`<div id="skintone-${V}" class="emoji ${V===e.activeSkinTone?"active":""}" aria-selected="${V===e.activeSkinTone}" role="option" title="${e.i18n.skinTones[V]}" aria-label="${e.i18n.skinTones[V]}">${x}</div>`,x=>x)}</div></div><div class="nav" role="tablist" style="grid-template-columns:repeat(${e.groups.length},1fr)" aria-label="${e.i18n.categoriesLabel}" data-on-keydown="onNavKeydown" data-on-click="onNavClick">${p(e.groups,x=>m`<button role="tab" class="nav-button" aria-controls="tab-${x.id}" aria-label="${e.i18n.categories[x.name]}" aria-selected="${!e.searchMode&&e.currentGroup.id===x.id}" title="${e.i18n.categories[x.name]}" data-group-id="${x.id}"><div class="nav-emoji emoji">${x.emoji}</div></button>`,x=>x.id)}</div><div class="indicator-wrapper"><div class="indicator" style="transform:translateX(${(e.isRtl?-1:1)*e.currentGroupIndex*100}%)"></div></div><div class="message ${e.message?"":"gone"}" role="alert" aria-live="polite">${e.message||""}</div><div data-ref="tabpanelElement" class="tabpanel ${!e.databaseLoaded||e.message?"gone":""}" role="${e.searchMode?"region":"tabpanel"}" aria-label="${e.searchMode?e.i18n.searchResultsLabel:e.i18n.categories[e.currentGroup.name]}" id="${e.searchMode?null:`tab-${e.currentGroup.id}`}" tabIndex="0" data-on-click="onEmojiClick"><div data-action="calculateEmojiGridStyle">${p(e.currentEmojisWithCategories,(x,V)=>m`<div><div id="menu-label-${V}" class="category ${e.currentEmojisWithCategories.length===1&&e.currentEmojisWithCategories[0].category===""?"gone":""}" aria-hidden="true">${e.searchMode?e.i18n.searchResultsLabel:x.category?x.category:e.currentEmojisWithCategories.length>1?e.i18n.categories.custom:e.i18n.categories[e.currentGroup.name]}</div><div class="emoji-menu ${V!==0&&!e.searchMode&&e.currentGroup.id===-1?"visibility-auto":""}" style="${`--num-rows: ${Math.ceil(x.emojis.length/e.numColumns)}`}" data-action="updateOnIntersection" role="${e.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${V}" id="${e.searchMode?"search-results":null}">${A(x.emojis,e.searchMode,"emo")}</div></div>`,x=>x.category)}</div></div><div class="favorites onscreen emoji-menu ${e.message?"gone":""}" role="menu" aria-label="${e.i18n.favoritesLabel}" data-on-click="onEmojiClick">${A(e.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,I=(x,V)=>{for(const W of t.querySelectorAll(`[${x}]`))V(W,W.getAttribute(x))};if(l){t.appendChild(y);for(const x of["click","focusout","input","keydown","keyup"])I(`data-on-${x}`,(V,W)=>{V.addEventListener(x,i[W])});I("data-ref",(x,V)=>{r[V]=x}),a.addEventListener("abort",()=>{t.removeChild(y)})}I("data-action",(x,V)=>{let W=o.get(V);W||o.set(V,W=new WeakSet),W.has(x)||(W.add(x),s[V](x))})}const x9=typeof queueMicrotask=="function"?queueMicrotask:t=>Promise.resolve().then(t);function FBt(t){let e=!1,n;const i=new Map,s=new Set;let r;const a=()=>{if(e)return;const c=[...s];s.clear();try{for(const u of c)u()}finally{r=!1,s.size&&(r=!0,x9(a))}},o=new Proxy({},{get(c,u){if(n){let h=i.get(u);h||(h=new Set,i.set(u,h)),h.add(n)}return c[u]},set(c,u,h){if(c[u]!==h){c[u]=h;const m=i.get(u);if(m){for(const p of m)s.add(p);r||(r=!0,x9(a))}}return!0}}),l=c=>{const u=()=>{const h=n;n=u;try{return c()}finally{n=h}};return u()};return t.addEventListener("abort",()=>{e=!0}),{state:o,createEffect:l}}function UQ(t,e,n){if(t.length!==e.length)return!1;for(let i=0;i<t.length;i++)if(!n(t[i],e[i]))return!1;return!0}const Nle=new WeakMap;function TBt(t,e,n){{const i=t.closest(".tabpanel");let s=Nle.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),Nle.set(i,s),e.addEventListener("abort",()=>{s.disconnect()})),s.observe(t)}}const LQ=[],{assign:Mv}=Object;function UBt(t,e){const n={},i=new AbortController,s=i.signal,{state:r,createEffect:a}=FBt(s),o=new Map;Mv(r,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),Mv(r,e),Mv(r,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:rBt,isRtl:!1,currentGroupIndex:0,groups:BQ,databaseLoaded:!1,activeSearchItemId:void 0}),a(()=>{r.currentGroup!==r.groups[r.currentGroupIndex]&&(r.currentGroup=r.groups[r.currentGroupIndex])});const l=fe=>{t.getElementById(fe).focus()},c=fe=>t.getElementById(`emo-${fe.id}`),u=(fe,Be)=>{n.rootElement.dispatchEvent(new CustomEvent(fe,{detail:Be,bubbles:!0,composed:!0}))},h=(fe,Be)=>fe.id===Be.id,m=(fe,Be)=>{const{category:Ne,emojis:qe}=fe,{category:ot,emojis:It}=Be;return Ne!==ot?!1:UQ(qe,It,h)},p=fe=>{UQ(r.currentEmojis,fe,h)||(r.currentEmojis=fe)},A=fe=>{r.searchMode!==fe&&(r.searchMode=fe)},f=fe=>{UQ(r.currentEmojisWithCategories,fe,m)||(r.currentEmojisWithCategories=fe)},y=(fe,Be)=>Be&&fe.skins&&fe.skins[Be]||fe.unicode,V={labelWithSkin:(fe,Be)=>xBt([fe.name||y(fe,Be),fe.annotation,...fe.shortcodes||LQ].filter(Boolean)).join(", "),titleForEmoji:fe=>fe.annotation||(fe.shortcodes||LQ).join(", "),unicodeWithSkin:y},W={onClickSkinToneButton:ke,onEmojiClick:ue,onNavClick:te,onNavKeydown:ne,onSearchKeydown:P,onSkinToneOptionsClick:ce,onSkinToneOptionsFocusOut:ge,onSkinToneOptionsKeydown:J,onSkinToneOptionsKeyup:Ee,onSearchInput:Ye},Y={calculateEmojiGridStyle:G,updateOnIntersection:N};let E=!0;a(()=>{RBt(t,r,V,W,Y,n,s,o,E),E=!1}),r.emojiVersion||RQ().then(fe=>{fe||(r.message=r.i18n.emojiUnsupportedMessage)}),a(()=>{async function fe(){let Be=!1;const Ne=setTimeout(()=>{Be=!0,r.message=r.i18n.loadingMessage},iBt);try{await r.database.ready(),r.databaseLoaded=!0}catch(qe){console.error(qe),r.message=r.i18n.networkErrorMessage}finally{clearTimeout(Ne),Be&&(Be=!1,r.message="")}}r.database&&fe()}),a(()=>{r.pickerStyle=`
5551
5551
  --num-groups: ${r.groups.length};
5552
5552
  --indicator-opacity: ${r.searchMode?0:1};
5553
- --num-skintones: ${Zle};`}),a(()=>{r.customEmoji&&r.database&&C()}),a(()=>{r.customEmoji&&r.customEmoji.length?r.groups!==I4&&(r.groups=I4):r.groups!==BQ&&(r.currentGroupIndex&&r.currentGroupIndex--,r.groups=BQ)}),a(()=>{async function fe(){r.databaseLoaded&&(r.currentSkinTone=await r.database.getPreferredSkinTone())}fe()}),a(()=>{r.skinTones=Array(Zle).fill().map((fe,Be)=>gBt(r.skinToneEmoji,Be))}),a(()=>{r.skinToneButtonText=r.skinTones[r.currentSkinTone]}),a(()=>{r.skinToneButtonLabel=r.i18n.skinToneLabel.replace("{skinTone}",r.i18n.skinTones[r.currentSkinTone])}),a(()=>{async function fe(){const{database:Be}=r,Ne=(await Promise.all(aBt.map(qe=>Be.getEmojiByUnicodeOrName(qe)))).filter(Boolean);r.defaultFavoriteEmojis=Ne}r.databaseLoaded&&fe()});function C(){const{customEmoji:fe,database:Be}=r,Ne=fe||LQ;Be.customEmoji!==Ne&&(Be.customEmoji=Ne)}a(()=>{async function fe(){C();const{database:Be,defaultFavoriteEmojis:Ne,numColumns:qe}=r,ot=await Be.getTopFavoriteEmoji(qe),It=await _(tVe([...ot,...Ne],Zt=>Zt.unicode||Zt.name).slice(0,qe));r.currentFavorites=It}r.databaseLoaded&&r.defaultFavoriteEmojis&&fe()});function G(fe){yBt(fe,s,()=>{{const Be=getComputedStyle(n.rootElement),Ne=parseInt(Be.getPropertyValue("--num-columns"),10),qe=Be.getPropertyValue("direction")==="rtl";r.numColumns=Ne,r.isRtl=qe}})}function N(fe){TBt(fe,s,Be=>{for(const{target:Ne,isIntersecting:qe}of Be)Ne.classList.toggle("onscreen",qe)})}a(()=>{async function fe(){const{searchText:Be,currentGroup:Ne,databaseLoaded:qe,customEmoji:ot}=r;if(!qe)r.currentEmojis=[],r.searchMode=!1;else if(Be.length>=tBt){const It=await D(Be);r.searchText===Be&&(p(It),A(!0))}else{const{id:It}=Ne;if(It!==-1||ot&&ot.length){const Zt=await j(It);r.currentGroup.id===It&&(p(Zt),A(!1))}}}fe()});const B=()=>{$B(()=>WBt(n.tabpanelElement))};a(()=>{const{currentEmojis:fe,emojiVersion:Be}=r,Ne=fe.filter(qe=>qe.unicode).filter(qe=>xle(qe)&&!Z4.has(qe.unicode));if(!Be&&Ne.length)p(fe),$B(()=>F(Ne));else{const qe=Be?fe:fe.filter(H);p(qe),B()}});function F(fe){ZBt(fe,n.baselineEmoji,c)?B():r.currentEmojis=[...r.currentEmojis]}function H(fe){return!fe.unicode||!xle(fe)||Z4.get(fe.unicode)}async function U(fe){const Be=r.emojiVersion||await RQ();return fe.filter(({version:Ne})=>!Ne||Ne<=Be)}async function _(fe){return bBt(fe,r.emojiVersion||await RQ())}async function j(fe){const Be=fe===-1?r.customEmoji:await r.database.getEmojiByGroup(fe);return _(await U(Be))}async function D(fe){return _(await U(await r.database.getEmojiBySearchQuery(fe)))}a(()=>{}),a(()=>{function fe(){const{searchMode:Ne,currentEmojis:qe}=r;if(Ne)return[{category:"",emojis:qe}];const ot=new Map;for(const It of qe){const Zt=It.category||"";let Rn=ot.get(Zt);Rn||(Rn=[],ot.set(Zt,Rn)),Rn.push(It)}return[...ot.entries()].map(([It,Zt])=>({category:It,emojis:Zt})).sort((It,Zt)=>r.customCategorySorting(It.category,Zt.category))}const Be=fe();f(Be)}),a(()=>{r.activeSearchItemId=r.activeSearchItem!==-1&&r.currentEmojis[r.activeSearchItem].id}),a(()=>{const{rawSearchText:fe}=r;qWe(()=>{r.searchText=(fe||"").trim(),r.activeSearchItem=-1})});function P(fe){if(!r.searchMode||!r.currentEmojis.length)return;const Be=Ne=>{Hb(fe),r.activeSearchItem=FQ(Ne,r.activeSearchItem,r.currentEmojis)};switch(fe.key){case"ArrowDown":return Be(!1);case"ArrowUp":return Be(!0);case"Enter":if(r.activeSearchItem===-1)r.activeSearchItem=0;else return Hb(fe),ie(r.currentEmojis[r.activeSearchItem].id)}}function te(fe){const{target:Be}=fe,Ne=Be.closest(".nav-button");if(!Ne)return;const qe=parseInt(Ne.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(ot=>ot.id===qe)}function ne(fe){const{target:Be,key:Ne}=fe,qe=ot=>{ot&&(Hb(fe),ot.focus())};switch(Ne){case"ArrowLeft":return qe(Be.previousElementSibling);case"ArrowRight":return qe(Be.nextElementSibling);case"Home":return qe(Be.parentElement.firstElementChild);case"End":return qe(Be.parentElement.lastElementChild)}}async function z(fe){const Be=await r.database.getEmojiByUnicodeOrName(fe),Ne=[...r.currentEmojis,...r.currentFavorites].find(ot=>ot.id===fe),qe=Ne.unicode&&y(Ne,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(fe),{emoji:Be,skinTone:r.currentSkinTone,...qe&&{unicode:qe},...Ne.name&&{name:Ne.name}}}async function ie(fe){const Be=z(fe);u("emoji-click-sync",Be),u("emoji-click",await Be)}function ue(fe){const{target:Be}=fe;if(!Be.classList.contains("emoji"))return;Hb(fe);const Ne=Be.id.substring(4);ie(Ne)}function be(fe){r.currentSkinTone=fe,r.skinTonePickerExpanded=!1,l("skintone-button"),u("skin-tone-change",{skinTone:fe}),r.database.setPreferredSkinTone(fe)}function ce(fe){const{target:{id:Be}}=fe,Ne=Be&&Be.match(/^skintone-(\d)/);if(!Ne)return;Hb(fe);const qe=parseInt(Ne[1],10);be(qe)}function ke(fe){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&(Hb(fe),$B(()=>l("skintone-list")))}a(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function J(fe){if(!r.skinTonePickerExpanded)return;const Be=async Ne=>{Hb(fe),r.activeSkinTone=Ne};switch(fe.key){case"ArrowUp":return Be(FQ(!0,r.activeSkinTone,r.skinTones));case"ArrowDown":return Be(FQ(!1,r.activeSkinTone,r.skinTones));case"Home":return Be(0);case"End":return Be(r.skinTones.length-1);case"Enter":return Hb(fe),be(r.activeSkinTone);case"Escape":return Hb(fe),r.skinTonePickerExpanded=!1,l("skintone-button")}}function Ee(fe){if(r.skinTonePickerExpanded)switch(fe.key){case" ":return Hb(fe),be(r.activeSkinTone)}}async function ge(fe){const{relatedTarget:Be}=fe;(!Be||Be.id!=="skintone-list")&&(r.skinTonePickerExpanded=!1)}function Ye(fe){r.rawSearchText=fe.target.value}return{$set(fe){Mv(r,fe)},$destroy(){i.abort()}}}const LBt="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",DBt="en";var QBt={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}},JBt=':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}';const nVe=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],zBt=`:host{--emoji-font-family:${eVe}}`;class jT extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=JBt+zBt,this.shadowRoot.appendChild(n),this._ctx={locale:DBt,dataSource:LBt,skinToneEmoji:sBt,customCategorySorting:oBt,customEmoji:null,i18n:QBt,emojiVersion:null,...e};for(const i of nVe)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){wle(this),this._cmp||(this._cmp=UBt(this.shadowRoot,this._ctx))}disconnectedCallback(){wle(this),x9(()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e.close().catch(n=>console.error(n))}})}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(e,n,i){this._set(e.replace(/-([a-z])/g,(s,r)=>r.toUpperCase()),e==="emoji-version"?parseFloat(i):i)}_set(e,n){this._ctx[e]=n,this._cmp&&this._cmp.$set({[e]:n}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:n,database:i}=this._ctx;(!i||i.locale!==e||i.dataSource!==n)&&this._set("database",new $We({locale:e,dataSource:n}))}_dbFlush(){x9(()=>this._dbCreate())}}const iVe={};for(const t of nVe)iVe[t]={get(){return t==="database"&&this._dbCreate(),this._ctx[t]},set(e){if(t==="database")throw new Error("database is read-only");this._set(t,e)}};Object.defineProperties(jT.prototype,iVe);function wle(t){t instanceof jT||Object.setPrototypeOf(t,customElements.get(t.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",jT);const KBt=Object.freeze(Object.defineProperty({__proto__:null,Database:$We,Picker:jT},Symbol.toStringTag,{value:"Module"}));function HBt(){return typeof navigator>"u"?!1:/Mac/i.test(navigator.platform||"")}async function jBt(){if(!Do||!HBt())return;let t;try{({invoke:t}=await Promise.resolve().then(()=>iy))}catch{return}try{await t("self_heal_flush_launch_services")}catch(e){console.warn("[self-heal] lsregister flush failed:",e)}}const OBt=Object.freeze(Object.defineProperty({__proto__:null,runMacOSSelfHeal:jBt},Symbol.toStringTag,{value:"Module"})),PBt={BASE_URL:"/",DEV:!1,MODE:"app",PROD:!0,SSR:!1,VAPID_PUBLIC_KEY:"",VITE_APP_VERSION:"0.14.24",VITE_BUILD_HASH:"cli",VITE_PKG_VERSION:"0.14.24",VITE_WEBMAIL_API_BASE:globalThis.__FORWARDEMAIL_API_URL__},_Bt="https://api.github.com/repos/forwardemail/mail.forwardemail.net/releases/latest",$Bt=10*60*1e3,qBt=5*60*1e3,C6="webmail_update_attempt",eXt=10*60*1e3,tXt="webmail_current_version";let LV=null,qB=null,eX=null,W9=null,tX=null,Aw=null,DQ=0;function Yle(t){if(!t||typeof t!="string")return null;const e=t.replace(/^v/,""),n=e.match(/^(\d+)\.(\d+)\.(\d+)/);return n?{major:Number(n[1]),minor:Number(n[2]),patch:Number(n[3]),raw:e}:null}function jY(t,e){const n=Yle(t),i=Yle(e);return!n||!i?0:n.major!==i.major?n.major>i.major?1:-1:n.minor!==i.minor?n.minor>i.minor?1:-1:n.patch!==i.patch?n.patch>i.patch?1:-1:0}function OT(){if(LV)return LV;try{const t=document.querySelector('meta[name="app-version"]');if(t?.content)return LV=t.content,LV}catch{}try{const t=PBt||{},e=t.VITE_PKG_VERSION||t.VITE_APP_VERSION;if(e)return LV=e,LV}catch{}return null}function sVe(){try{const t=localStorage.getItem(C6);return t?JSON.parse(t):null}catch{return null}}function nXt(t){try{localStorage.setItem(C6,JSON.stringify({version:t,at:Date.now()}))}catch{}}function iXt(t){try{localStorage.removeItem(tXt);const e=sVe();e?.version&&jY(t,e.version)>=0&&localStorage.removeItem(C6)}catch{}}async function gw(){try{const t=await fetch(_Bt,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(1e4)});if(!t.ok)return null;const e=await t.json();return e?.tag_name?{version:e.tag_name.replace(/^v/,""),url:e.html_url,name:e.name||e.tag_name,body:e.body||"",publishedAt:e.published_at}:null}catch{return null}}function bw(t,{force:e=!1}={}){if(!t?.version)return;const n=OT();if(!n||jY(t.version,n)<=0||!e&&qB&&jY(t.version,qB)<=0)return;const i=sVe();!e&&i?.version===t.version&&Date.now()-Number(i.at||0)<eXt||(qB=t.version,nXt(t.version),W9&&W9({currentVersion:n,newVersion:t.version,releaseUrl:t.url,releaseName:t.name,releaseNotes:t.body,publishedAt:t.publishedAt}))}function rVe(t){if(!t)return;let e,n,i,s,r;if(t.release&&typeof t.release=="object"){const a=t.release;e=a.tagName||a.tag_name||a.version,n=a.htmlUrl||a.html_url||a.url||"",i=a.name||e||"",s=a.body||a.notes||"",r=a.publishedAt||a.published_at||new Date().toISOString()}else e=t.version||t.tag_name||t.tag||t.tagName,n=t.url||t.html_url||t.htmlUrl||"",i=t.name||e||"",s=t.body||t.notes||"",r=t.published_at||t.publishedAt||new Date().toISOString();e&&bw({version:e.replace(/^v/,""),url:n,name:i,body:s,publishedAt:r})}function sXt(t={}){if(globalThis.__FORWARDEMAIL_TERMINAL__===!0)return;W9=t.onUpdateAvailable||null;const e=OT();e&&iXt(e),t.wsClient&&typeof t.wsClient.on=="function"&&(tX=t.wsClient.on("newRelease",rVe)),gw().then(n=>{n&&bw(n)}),eX=setInterval(async()=>{const n=await gw();n&&bw(n)},$Bt),DQ=Date.now(),Aw=()=>{if(document.visibilityState!=="visible")return;const n=Date.now();n-DQ<qBt||(DQ=n,gw().then(i=>{i&&bw(i)}))},document.addEventListener("visibilitychange",Aw)}async function rXt(){const t=await gw(),e=OT();return t?(bw(t,{force:!0}),{upToDate:jY(t.version,e)<=0,currentVersion:e,latestVersion:t.version}):{upToDate:!0,currentVersion:e,latestVersion:e}}async function aXt(t,e=2e4){const n=t||(typeof navigator<"u"&&navigator.serviceWorker?await navigator.serviceWorker.getRegistration().catch(()=>null):null);if(!n)return!1;await n.update().catch(()=>{});const i=n.installing||n.waiting;return i?new Promise(s=>{let r=!1;const a=c=>{r||(r=!0,clearTimeout(l),i.removeEventListener("statechange",o),s(c))},o=()=>{i.state==="installed"?i.postMessage({type:"SKIP_WAITING"}):i.state==="activated"?a(!0):i.state==="redundant"&&a(!1)},l=setTimeout(()=>a(!1),e);i.addEventListener("statechange",o),o()}):!1}function oXt(){eX&&(clearInterval(eX),eX=null),tX&&(tX(),tX=null),Aw&&(document.removeEventListener("visibilitychange",Aw),Aw=null),W9=null}function lXt(){return qB}const Ele=Object.freeze(Object.defineProperty({__proto__:null,checkGitHubReleases:gw,checkNow:rXt,compareSemver:jY,getCurrentVersion:OT,getLatestVersion:lXt,handleWsNewRelease:rVe,start:sXt,stop:oXt,waitForServiceWorkerUpdate:aXt},Symbol.toStringTag,{value:"Module"}));var nX,iX;function aVe(t){var e;if("items"in t)t.items=(e=t.items)===null||e===void 0?void 0:e.map(n=>"rid"in n?n:aVe(n));else if("action"in t&&t.action){const n=new KZe;return n.onmessage=t.action,delete t.action,{...t,handler:n}}return t}async function RG(t,e){const n=new KZe;if(e&&typeof e=="object"&&("action"in e&&e.action&&(n.onmessage=e.action,delete e.action),"item"in e&&e.item&&typeof e.item=="object"&&"About"in e.item&&e.item.About&&typeof e.item.About=="object"&&"icon"in e.item.About&&e.item.About.icon&&(e.item.About.icon=wf(e.item.About.icon)),"icon"in e&&e.icon&&(e.icon=wf(e.icon)),"items"in e&&e.items)){let i=function(s){var r;return"rid"in s?[s.rid,s.kind]:("item"in s&&typeof s.item=="object"&&(!((r=s.item.About)===null||r===void 0)&&r.icon)&&(s.item.About.icon=wf(s.item.About.icon)),"icon"in s&&s.icon&&(s.icon=wf(s.icon)),"items"in s&&s.items&&(s.items=s.items.map(i)),aVe(s))};e.items=e.items.map(i)}return ln("plugin:menu|new",{kind:t,options:e,handler:n})}class FG extends HZe{get id(){return Jh(this,nX,"f")}get kind(){return Jh(this,iX,"f")}constructor(e,n,i){super(e),nX.set(this,void 0),iX.set(this,void 0),J1(this,nX,n),J1(this,iX,i)}}nX=new WeakMap,iX=new WeakMap;class PT extends FG{constructor(e,n){super(e,n,"MenuItem")}static async new(e){return RG("MenuItem",e).then(([n,i])=>new PT(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async setAccelerator(e){return ln("plugin:menu|set_accelerator",{rid:this.rid,kind:this.kind,accelerator:e})}}class _T extends FG{constructor(e,n){super(e,n,"Check")}static async new(e){return RG("Check",e).then(([n,i])=>new _T(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async setAccelerator(e){return ln("plugin:menu|set_accelerator",{rid:this.rid,kind:this.kind,accelerator:e})}async isChecked(){return ln("plugin:menu|is_checked",{rid:this.rid})}async setChecked(e){return ln("plugin:menu|set_checked",{rid:this.rid,checked:e})}}var x4;(function(t){t.Add="Add",t.Advanced="Advanced",t.Bluetooth="Bluetooth",t.Bookmarks="Bookmarks",t.Caution="Caution",t.ColorPanel="ColorPanel",t.ColumnView="ColumnView",t.Computer="Computer",t.EnterFullScreen="EnterFullScreen",t.Everyone="Everyone",t.ExitFullScreen="ExitFullScreen",t.FlowView="FlowView",t.Folder="Folder",t.FolderBurnable="FolderBurnable",t.FolderSmart="FolderSmart",t.FollowLinkFreestanding="FollowLinkFreestanding",t.FontPanel="FontPanel",t.GoLeft="GoLeft",t.GoRight="GoRight",t.Home="Home",t.IChatTheater="IChatTheater",t.IconView="IconView",t.Info="Info",t.InvalidDataFreestanding="InvalidDataFreestanding",t.LeftFacingTriangle="LeftFacingTriangle",t.ListView="ListView",t.LockLocked="LockLocked",t.LockUnlocked="LockUnlocked",t.MenuMixedState="MenuMixedState",t.MenuOnState="MenuOnState",t.MobileMe="MobileMe",t.MultipleDocuments="MultipleDocuments",t.Network="Network",t.Path="Path",t.PreferencesGeneral="PreferencesGeneral",t.QuickLook="QuickLook",t.RefreshFreestanding="RefreshFreestanding",t.Refresh="Refresh",t.Remove="Remove",t.RevealFreestanding="RevealFreestanding",t.RightFacingTriangle="RightFacingTriangle",t.Share="Share",t.Slideshow="Slideshow",t.SmartBadge="SmartBadge",t.StatusAvailable="StatusAvailable",t.StatusNone="StatusNone",t.StatusPartiallyAvailable="StatusPartiallyAvailable",t.StatusUnavailable="StatusUnavailable",t.StopProgressFreestanding="StopProgressFreestanding",t.StopProgress="StopProgress",t.TrashEmpty="TrashEmpty",t.TrashFull="TrashFull",t.User="User",t.UserAccounts="UserAccounts",t.UserGroup="UserGroup",t.UserGuest="UserGuest"})(x4||(x4={}));class $T extends FG{constructor(e,n){super(e,n,"Icon")}static async new(e){return RG("Icon",e).then(([n,i])=>new $T(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async setAccelerator(e){return ln("plugin:menu|set_accelerator",{rid:this.rid,kind:this.kind,accelerator:e})}async setIcon(e){return ln("plugin:menu|set_icon",{rid:this.rid,kind:this.kind,icon:wf(e)})}}class qT extends FG{constructor(e,n){super(e,n,"Predefined")}static async new(e){return RG("Predefined",e).then(([n,i])=>new qT(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}}function B2([t,e,n]){switch(n){case"Submenu":return new eU(t,e);case"Predefined":return new qT(t,e);case"Check":return new _T(t,e);case"Icon":return new $T(t,e);case"MenuItem":default:return new PT(t,e)}}class eU extends FG{constructor(e,n){super(e,n,"Submenu")}static async new(e){return RG("Submenu",e).then(([n,i])=>new eU(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async append(e){return ln("plugin:menu|append",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async prepend(e){return ln("plugin:menu|prepend",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async insert(e,n){return ln("plugin:menu|insert",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(i=>"rid"in i?[i.rid,i.kind]:i),position:n})}async remove(e){return ln("plugin:menu|remove",{rid:this.rid,kind:this.kind,item:[e.rid,e.kind]})}async removeAt(e){return ln("plugin:menu|remove_at",{rid:this.rid,kind:this.kind,position:e}).then(B2)}async items(){return ln("plugin:menu|items",{rid:this.rid,kind:this.kind}).then(e=>e.map(B2))}async get(e){return ln("plugin:menu|get",{rid:this.rid,kind:this.kind,id:e}).then(n=>n?B2(n):null)}async popup(e,n){var i;return ln("plugin:menu|popup",{rid:this.rid,kind:this.kind,window:(i=n?.label)!==null&&i!==void 0?i:null,at:e instanceof Nf?e:e?new Nf(e):null})}async setAsWindowsMenuForNSApp(){return ln("plugin:menu|set_as_windows_menu_for_nsapp",{rid:this.rid})}async setAsHelpMenuForNSApp(){return ln("plugin:menu|set_as_help_menu_for_nsapp",{rid:this.rid})}async setIcon(e){return ln("plugin:menu|set_icon",{rid:this.rid,kind:this.kind,icon:wf(e)})}}class xS extends FG{constructor(e,n){super(e,n,"Menu")}static async new(e){return RG("Menu",e).then(([n,i])=>new xS(n,i))}static async default(){return ln("plugin:menu|create_default").then(([e,n])=>new xS(e,n))}async append(e){return ln("plugin:menu|append",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async prepend(e){return ln("plugin:menu|prepend",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async insert(e,n){return ln("plugin:menu|insert",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(i=>"rid"in i?[i.rid,i.kind]:i),position:n})}async remove(e){return ln("plugin:menu|remove",{rid:this.rid,kind:this.kind,item:[e.rid,e.kind]})}async removeAt(e){return ln("plugin:menu|remove_at",{rid:this.rid,kind:this.kind,position:e}).then(B2)}async items(){return ln("plugin:menu|items",{rid:this.rid,kind:this.kind}).then(e=>e.map(B2))}async get(e){return ln("plugin:menu|get",{rid:this.rid,kind:this.kind,id:e}).then(n=>n?B2(n):null)}async popup(e,n){var i;return ln("plugin:menu|popup",{rid:this.rid,kind:this.kind,window:(i=n?.label)!==null&&i!==void 0?i:null,at:e instanceof Nf?e:e?new Nf(e):null})}async setAsAppMenu(){return ln("plugin:menu|set_as_app_menu",{rid:this.rid}).then(e=>e?new xS(e[0],e[1]):null)}async setAsWindowMenu(e){var n;return ln("plugin:menu|set_as_window_menu",{rid:this.rid,window:(n=e?.label)!==null&&n!==void 0?n:null}).then(i=>i?new xS(i[0],i[1]):null)}}const cXt=Object.freeze(Object.defineProperty({__proto__:null,CheckMenuItem:_T,IconMenuItem:$T,Menu:xS,MenuItem:PT,get NativeIcon(){return x4},PredefinedMenuItem:qT,Submenu:eU,itemFromKind:B2},Symbol.toStringTag,{value:"Module"}));
5553
+ --num-skintones: ${Zle};`}),a(()=>{r.customEmoji&&r.database&&C()}),a(()=>{r.customEmoji&&r.customEmoji.length?r.groups!==I4&&(r.groups=I4):r.groups!==BQ&&(r.currentGroupIndex&&r.currentGroupIndex--,r.groups=BQ)}),a(()=>{async function fe(){r.databaseLoaded&&(r.currentSkinTone=await r.database.getPreferredSkinTone())}fe()}),a(()=>{r.skinTones=Array(Zle).fill().map((fe,Be)=>gBt(r.skinToneEmoji,Be))}),a(()=>{r.skinToneButtonText=r.skinTones[r.currentSkinTone]}),a(()=>{r.skinToneButtonLabel=r.i18n.skinToneLabel.replace("{skinTone}",r.i18n.skinTones[r.currentSkinTone])}),a(()=>{async function fe(){const{database:Be}=r,Ne=(await Promise.all(aBt.map(qe=>Be.getEmojiByUnicodeOrName(qe)))).filter(Boolean);r.defaultFavoriteEmojis=Ne}r.databaseLoaded&&fe()});function C(){const{customEmoji:fe,database:Be}=r,Ne=fe||LQ;Be.customEmoji!==Ne&&(Be.customEmoji=Ne)}a(()=>{async function fe(){C();const{database:Be,defaultFavoriteEmojis:Ne,numColumns:qe}=r,ot=await Be.getTopFavoriteEmoji(qe),It=await _(tVe([...ot,...Ne],Zt=>Zt.unicode||Zt.name).slice(0,qe));r.currentFavorites=It}r.databaseLoaded&&r.defaultFavoriteEmojis&&fe()});function G(fe){yBt(fe,s,()=>{{const Be=getComputedStyle(n.rootElement),Ne=parseInt(Be.getPropertyValue("--num-columns"),10),qe=Be.getPropertyValue("direction")==="rtl";r.numColumns=Ne,r.isRtl=qe}})}function N(fe){TBt(fe,s,Be=>{for(const{target:Ne,isIntersecting:qe}of Be)Ne.classList.toggle("onscreen",qe)})}a(()=>{async function fe(){const{searchText:Be,currentGroup:Ne,databaseLoaded:qe,customEmoji:ot}=r;if(!qe)r.currentEmojis=[],r.searchMode=!1;else if(Be.length>=tBt){const It=await D(Be);r.searchText===Be&&(p(It),A(!0))}else{const{id:It}=Ne;if(It!==-1||ot&&ot.length){const Zt=await j(It);r.currentGroup.id===It&&(p(Zt),A(!1))}}}fe()});const B=()=>{$B(()=>WBt(n.tabpanelElement))};a(()=>{const{currentEmojis:fe,emojiVersion:Be}=r,Ne=fe.filter(qe=>qe.unicode).filter(qe=>xle(qe)&&!Z4.has(qe.unicode));if(!Be&&Ne.length)p(fe),$B(()=>F(Ne));else{const qe=Be?fe:fe.filter(H);p(qe),B()}});function F(fe){ZBt(fe,n.baselineEmoji,c)?B():r.currentEmojis=[...r.currentEmojis]}function H(fe){return!fe.unicode||!xle(fe)||Z4.get(fe.unicode)}async function U(fe){const Be=r.emojiVersion||await RQ();return fe.filter(({version:Ne})=>!Ne||Ne<=Be)}async function _(fe){return bBt(fe,r.emojiVersion||await RQ())}async function j(fe){const Be=fe===-1?r.customEmoji:await r.database.getEmojiByGroup(fe);return _(await U(Be))}async function D(fe){return _(await U(await r.database.getEmojiBySearchQuery(fe)))}a(()=>{}),a(()=>{function fe(){const{searchMode:Ne,currentEmojis:qe}=r;if(Ne)return[{category:"",emojis:qe}];const ot=new Map;for(const It of qe){const Zt=It.category||"";let Rn=ot.get(Zt);Rn||(Rn=[],ot.set(Zt,Rn)),Rn.push(It)}return[...ot.entries()].map(([It,Zt])=>({category:It,emojis:Zt})).sort((It,Zt)=>r.customCategorySorting(It.category,Zt.category))}const Be=fe();f(Be)}),a(()=>{r.activeSearchItemId=r.activeSearchItem!==-1&&r.currentEmojis[r.activeSearchItem].id}),a(()=>{const{rawSearchText:fe}=r;qWe(()=>{r.searchText=(fe||"").trim(),r.activeSearchItem=-1})});function P(fe){if(!r.searchMode||!r.currentEmojis.length)return;const Be=Ne=>{Hb(fe),r.activeSearchItem=FQ(Ne,r.activeSearchItem,r.currentEmojis)};switch(fe.key){case"ArrowDown":return Be(!1);case"ArrowUp":return Be(!0);case"Enter":if(r.activeSearchItem===-1)r.activeSearchItem=0;else return Hb(fe),ie(r.currentEmojis[r.activeSearchItem].id)}}function te(fe){const{target:Be}=fe,Ne=Be.closest(".nav-button");if(!Ne)return;const qe=parseInt(Ne.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(ot=>ot.id===qe)}function ne(fe){const{target:Be,key:Ne}=fe,qe=ot=>{ot&&(Hb(fe),ot.focus())};switch(Ne){case"ArrowLeft":return qe(Be.previousElementSibling);case"ArrowRight":return qe(Be.nextElementSibling);case"Home":return qe(Be.parentElement.firstElementChild);case"End":return qe(Be.parentElement.lastElementChild)}}async function z(fe){const Be=await r.database.getEmojiByUnicodeOrName(fe),Ne=[...r.currentEmojis,...r.currentFavorites].find(ot=>ot.id===fe),qe=Ne.unicode&&y(Ne,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(fe),{emoji:Be,skinTone:r.currentSkinTone,...qe&&{unicode:qe},...Ne.name&&{name:Ne.name}}}async function ie(fe){const Be=z(fe);u("emoji-click-sync",Be),u("emoji-click",await Be)}function ue(fe){const{target:Be}=fe;if(!Be.classList.contains("emoji"))return;Hb(fe);const Ne=Be.id.substring(4);ie(Ne)}function be(fe){r.currentSkinTone=fe,r.skinTonePickerExpanded=!1,l("skintone-button"),u("skin-tone-change",{skinTone:fe}),r.database.setPreferredSkinTone(fe)}function ce(fe){const{target:{id:Be}}=fe,Ne=Be&&Be.match(/^skintone-(\d)/);if(!Ne)return;Hb(fe);const qe=parseInt(Ne[1],10);be(qe)}function ke(fe){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&(Hb(fe),$B(()=>l("skintone-list")))}a(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function J(fe){if(!r.skinTonePickerExpanded)return;const Be=async Ne=>{Hb(fe),r.activeSkinTone=Ne};switch(fe.key){case"ArrowUp":return Be(FQ(!0,r.activeSkinTone,r.skinTones));case"ArrowDown":return Be(FQ(!1,r.activeSkinTone,r.skinTones));case"Home":return Be(0);case"End":return Be(r.skinTones.length-1);case"Enter":return Hb(fe),be(r.activeSkinTone);case"Escape":return Hb(fe),r.skinTonePickerExpanded=!1,l("skintone-button")}}function Ee(fe){if(r.skinTonePickerExpanded)switch(fe.key){case" ":return Hb(fe),be(r.activeSkinTone)}}async function ge(fe){const{relatedTarget:Be}=fe;(!Be||Be.id!=="skintone-list")&&(r.skinTonePickerExpanded=!1)}function Ye(fe){r.rawSearchText=fe.target.value}return{$set(fe){Mv(r,fe)},$destroy(){i.abort()}}}const LBt="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",DBt="en";var QBt={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}},JBt=':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}';const nVe=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],zBt=`:host{--emoji-font-family:${eVe}}`;class jT extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=JBt+zBt,this.shadowRoot.appendChild(n),this._ctx={locale:DBt,dataSource:LBt,skinToneEmoji:sBt,customCategorySorting:oBt,customEmoji:null,i18n:QBt,emojiVersion:null,...e};for(const i of nVe)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){wle(this),this._cmp||(this._cmp=UBt(this.shadowRoot,this._ctx))}disconnectedCallback(){wle(this),x9(()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e.close().catch(n=>console.error(n))}})}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(e,n,i){this._set(e.replace(/-([a-z])/g,(s,r)=>r.toUpperCase()),e==="emoji-version"?parseFloat(i):i)}_set(e,n){this._ctx[e]=n,this._cmp&&this._cmp.$set({[e]:n}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:n,database:i}=this._ctx;(!i||i.locale!==e||i.dataSource!==n)&&this._set("database",new $We({locale:e,dataSource:n}))}_dbFlush(){x9(()=>this._dbCreate())}}const iVe={};for(const t of nVe)iVe[t]={get(){return t==="database"&&this._dbCreate(),this._ctx[t]},set(e){if(t==="database")throw new Error("database is read-only");this._set(t,e)}};Object.defineProperties(jT.prototype,iVe);function wle(t){t instanceof jT||Object.setPrototypeOf(t,customElements.get(t.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",jT);const KBt=Object.freeze(Object.defineProperty({__proto__:null,Database:$We,Picker:jT},Symbol.toStringTag,{value:"Module"}));function HBt(){return typeof navigator>"u"?!1:/Mac/i.test(navigator.platform||"")}async function jBt(){if(!Do||!HBt())return;let t;try{({invoke:t}=await Promise.resolve().then(()=>iy))}catch{return}try{await t("self_heal_flush_launch_services")}catch(e){console.warn("[self-heal] lsregister flush failed:",e)}}const OBt=Object.freeze(Object.defineProperty({__proto__:null,runMacOSSelfHeal:jBt},Symbol.toStringTag,{value:"Module"})),PBt={BASE_URL:"/",DEV:!1,MODE:"app",PROD:!0,SSR:!1,VAPID_PUBLIC_KEY:"",VITE_APP_VERSION:"0.14.25",VITE_BUILD_HASH:"cli",VITE_PKG_VERSION:"0.14.25",VITE_WEBMAIL_API_BASE:globalThis.__FORWARDEMAIL_API_URL__},_Bt="https://api.github.com/repos/forwardemail/mail.forwardemail.net/releases/latest",$Bt=10*60*1e3,qBt=5*60*1e3,C6="webmail_update_attempt",eXt=10*60*1e3,tXt="webmail_current_version";let LV=null,qB=null,eX=null,W9=null,tX=null,Aw=null,DQ=0;function Yle(t){if(!t||typeof t!="string")return null;const e=t.replace(/^v/,""),n=e.match(/^(\d+)\.(\d+)\.(\d+)/);return n?{major:Number(n[1]),minor:Number(n[2]),patch:Number(n[3]),raw:e}:null}function jY(t,e){const n=Yle(t),i=Yle(e);return!n||!i?0:n.major!==i.major?n.major>i.major?1:-1:n.minor!==i.minor?n.minor>i.minor?1:-1:n.patch!==i.patch?n.patch>i.patch?1:-1:0}function OT(){if(LV)return LV;try{const t=document.querySelector('meta[name="app-version"]');if(t?.content)return LV=t.content,LV}catch{}try{const t=PBt||{},e=t.VITE_PKG_VERSION||t.VITE_APP_VERSION;if(e)return LV=e,LV}catch{}return null}function sVe(){try{const t=localStorage.getItem(C6);return t?JSON.parse(t):null}catch{return null}}function nXt(t){try{localStorage.setItem(C6,JSON.stringify({version:t,at:Date.now()}))}catch{}}function iXt(t){try{localStorage.removeItem(tXt);const e=sVe();e?.version&&jY(t,e.version)>=0&&localStorage.removeItem(C6)}catch{}}async function gw(){try{const t=await fetch(_Bt,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(1e4)});if(!t.ok)return null;const e=await t.json();return e?.tag_name?{version:e.tag_name.replace(/^v/,""),url:e.html_url,name:e.name||e.tag_name,body:e.body||"",publishedAt:e.published_at}:null}catch{return null}}function bw(t,{force:e=!1}={}){if(!t?.version)return;const n=OT();if(!n||jY(t.version,n)<=0||!e&&qB&&jY(t.version,qB)<=0)return;const i=sVe();!e&&i?.version===t.version&&Date.now()-Number(i.at||0)<eXt||(qB=t.version,nXt(t.version),W9&&W9({currentVersion:n,newVersion:t.version,releaseUrl:t.url,releaseName:t.name,releaseNotes:t.body,publishedAt:t.publishedAt}))}function rVe(t){if(!t)return;let e,n,i,s,r;if(t.release&&typeof t.release=="object"){const a=t.release;e=a.tagName||a.tag_name||a.version,n=a.htmlUrl||a.html_url||a.url||"",i=a.name||e||"",s=a.body||a.notes||"",r=a.publishedAt||a.published_at||new Date().toISOString()}else e=t.version||t.tag_name||t.tag||t.tagName,n=t.url||t.html_url||t.htmlUrl||"",i=t.name||e||"",s=t.body||t.notes||"",r=t.published_at||t.publishedAt||new Date().toISOString();e&&bw({version:e.replace(/^v/,""),url:n,name:i,body:s,publishedAt:r})}function sXt(t={}){if(globalThis.__FORWARDEMAIL_TERMINAL__===!0)return;W9=t.onUpdateAvailable||null;const e=OT();e&&iXt(e),t.wsClient&&typeof t.wsClient.on=="function"&&(tX=t.wsClient.on("newRelease",rVe)),gw().then(n=>{n&&bw(n)}),eX=setInterval(async()=>{const n=await gw();n&&bw(n)},$Bt),DQ=Date.now(),Aw=()=>{if(document.visibilityState!=="visible")return;const n=Date.now();n-DQ<qBt||(DQ=n,gw().then(i=>{i&&bw(i)}))},document.addEventListener("visibilitychange",Aw)}async function rXt(){const t=await gw(),e=OT();return t?(bw(t,{force:!0}),{upToDate:jY(t.version,e)<=0,currentVersion:e,latestVersion:t.version}):{upToDate:!0,currentVersion:e,latestVersion:e}}async function aXt(t,e=2e4){const n=t||(typeof navigator<"u"&&navigator.serviceWorker?await navigator.serviceWorker.getRegistration().catch(()=>null):null);if(!n)return!1;await n.update().catch(()=>{});const i=n.installing||n.waiting;return i?new Promise(s=>{let r=!1;const a=c=>{r||(r=!0,clearTimeout(l),i.removeEventListener("statechange",o),s(c))},o=()=>{i.state==="installed"?i.postMessage({type:"SKIP_WAITING"}):i.state==="activated"?a(!0):i.state==="redundant"&&a(!1)},l=setTimeout(()=>a(!1),e);i.addEventListener("statechange",o),o()}):!1}function oXt(){eX&&(clearInterval(eX),eX=null),tX&&(tX(),tX=null),Aw&&(document.removeEventListener("visibilitychange",Aw),Aw=null),W9=null}function lXt(){return qB}const Ele=Object.freeze(Object.defineProperty({__proto__:null,checkGitHubReleases:gw,checkNow:rXt,compareSemver:jY,getCurrentVersion:OT,getLatestVersion:lXt,handleWsNewRelease:rVe,start:sXt,stop:oXt,waitForServiceWorkerUpdate:aXt},Symbol.toStringTag,{value:"Module"}));var nX,iX;function aVe(t){var e;if("items"in t)t.items=(e=t.items)===null||e===void 0?void 0:e.map(n=>"rid"in n?n:aVe(n));else if("action"in t&&t.action){const n=new KZe;return n.onmessage=t.action,delete t.action,{...t,handler:n}}return t}async function RG(t,e){const n=new KZe;if(e&&typeof e=="object"&&("action"in e&&e.action&&(n.onmessage=e.action,delete e.action),"item"in e&&e.item&&typeof e.item=="object"&&"About"in e.item&&e.item.About&&typeof e.item.About=="object"&&"icon"in e.item.About&&e.item.About.icon&&(e.item.About.icon=wf(e.item.About.icon)),"icon"in e&&e.icon&&(e.icon=wf(e.icon)),"items"in e&&e.items)){let i=function(s){var r;return"rid"in s?[s.rid,s.kind]:("item"in s&&typeof s.item=="object"&&(!((r=s.item.About)===null||r===void 0)&&r.icon)&&(s.item.About.icon=wf(s.item.About.icon)),"icon"in s&&s.icon&&(s.icon=wf(s.icon)),"items"in s&&s.items&&(s.items=s.items.map(i)),aVe(s))};e.items=e.items.map(i)}return ln("plugin:menu|new",{kind:t,options:e,handler:n})}class FG extends HZe{get id(){return Jh(this,nX,"f")}get kind(){return Jh(this,iX,"f")}constructor(e,n,i){super(e),nX.set(this,void 0),iX.set(this,void 0),J1(this,nX,n),J1(this,iX,i)}}nX=new WeakMap,iX=new WeakMap;class PT extends FG{constructor(e,n){super(e,n,"MenuItem")}static async new(e){return RG("MenuItem",e).then(([n,i])=>new PT(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async setAccelerator(e){return ln("plugin:menu|set_accelerator",{rid:this.rid,kind:this.kind,accelerator:e})}}class _T extends FG{constructor(e,n){super(e,n,"Check")}static async new(e){return RG("Check",e).then(([n,i])=>new _T(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async setAccelerator(e){return ln("plugin:menu|set_accelerator",{rid:this.rid,kind:this.kind,accelerator:e})}async isChecked(){return ln("plugin:menu|is_checked",{rid:this.rid})}async setChecked(e){return ln("plugin:menu|set_checked",{rid:this.rid,checked:e})}}var x4;(function(t){t.Add="Add",t.Advanced="Advanced",t.Bluetooth="Bluetooth",t.Bookmarks="Bookmarks",t.Caution="Caution",t.ColorPanel="ColorPanel",t.ColumnView="ColumnView",t.Computer="Computer",t.EnterFullScreen="EnterFullScreen",t.Everyone="Everyone",t.ExitFullScreen="ExitFullScreen",t.FlowView="FlowView",t.Folder="Folder",t.FolderBurnable="FolderBurnable",t.FolderSmart="FolderSmart",t.FollowLinkFreestanding="FollowLinkFreestanding",t.FontPanel="FontPanel",t.GoLeft="GoLeft",t.GoRight="GoRight",t.Home="Home",t.IChatTheater="IChatTheater",t.IconView="IconView",t.Info="Info",t.InvalidDataFreestanding="InvalidDataFreestanding",t.LeftFacingTriangle="LeftFacingTriangle",t.ListView="ListView",t.LockLocked="LockLocked",t.LockUnlocked="LockUnlocked",t.MenuMixedState="MenuMixedState",t.MenuOnState="MenuOnState",t.MobileMe="MobileMe",t.MultipleDocuments="MultipleDocuments",t.Network="Network",t.Path="Path",t.PreferencesGeneral="PreferencesGeneral",t.QuickLook="QuickLook",t.RefreshFreestanding="RefreshFreestanding",t.Refresh="Refresh",t.Remove="Remove",t.RevealFreestanding="RevealFreestanding",t.RightFacingTriangle="RightFacingTriangle",t.Share="Share",t.Slideshow="Slideshow",t.SmartBadge="SmartBadge",t.StatusAvailable="StatusAvailable",t.StatusNone="StatusNone",t.StatusPartiallyAvailable="StatusPartiallyAvailable",t.StatusUnavailable="StatusUnavailable",t.StopProgressFreestanding="StopProgressFreestanding",t.StopProgress="StopProgress",t.TrashEmpty="TrashEmpty",t.TrashFull="TrashFull",t.User="User",t.UserAccounts="UserAccounts",t.UserGroup="UserGroup",t.UserGuest="UserGuest"})(x4||(x4={}));class $T extends FG{constructor(e,n){super(e,n,"Icon")}static async new(e){return RG("Icon",e).then(([n,i])=>new $T(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async setAccelerator(e){return ln("plugin:menu|set_accelerator",{rid:this.rid,kind:this.kind,accelerator:e})}async setIcon(e){return ln("plugin:menu|set_icon",{rid:this.rid,kind:this.kind,icon:wf(e)})}}class qT extends FG{constructor(e,n){super(e,n,"Predefined")}static async new(e){return RG("Predefined",e).then(([n,i])=>new qT(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}}function B2([t,e,n]){switch(n){case"Submenu":return new eU(t,e);case"Predefined":return new qT(t,e);case"Check":return new _T(t,e);case"Icon":return new $T(t,e);case"MenuItem":default:return new PT(t,e)}}class eU extends FG{constructor(e,n){super(e,n,"Submenu")}static async new(e){return RG("Submenu",e).then(([n,i])=>new eU(n,i))}async text(){return ln("plugin:menu|text",{rid:this.rid,kind:this.kind})}async setText(e){return ln("plugin:menu|set_text",{rid:this.rid,kind:this.kind,text:e})}async isEnabled(){return ln("plugin:menu|is_enabled",{rid:this.rid,kind:this.kind})}async setEnabled(e){return ln("plugin:menu|set_enabled",{rid:this.rid,kind:this.kind,enabled:e})}async append(e){return ln("plugin:menu|append",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async prepend(e){return ln("plugin:menu|prepend",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async insert(e,n){return ln("plugin:menu|insert",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(i=>"rid"in i?[i.rid,i.kind]:i),position:n})}async remove(e){return ln("plugin:menu|remove",{rid:this.rid,kind:this.kind,item:[e.rid,e.kind]})}async removeAt(e){return ln("plugin:menu|remove_at",{rid:this.rid,kind:this.kind,position:e}).then(B2)}async items(){return ln("plugin:menu|items",{rid:this.rid,kind:this.kind}).then(e=>e.map(B2))}async get(e){return ln("plugin:menu|get",{rid:this.rid,kind:this.kind,id:e}).then(n=>n?B2(n):null)}async popup(e,n){var i;return ln("plugin:menu|popup",{rid:this.rid,kind:this.kind,window:(i=n?.label)!==null&&i!==void 0?i:null,at:e instanceof Nf?e:e?new Nf(e):null})}async setAsWindowsMenuForNSApp(){return ln("plugin:menu|set_as_windows_menu_for_nsapp",{rid:this.rid})}async setAsHelpMenuForNSApp(){return ln("plugin:menu|set_as_help_menu_for_nsapp",{rid:this.rid})}async setIcon(e){return ln("plugin:menu|set_icon",{rid:this.rid,kind:this.kind,icon:wf(e)})}}class xS extends FG{constructor(e,n){super(e,n,"Menu")}static async new(e){return RG("Menu",e).then(([n,i])=>new xS(n,i))}static async default(){return ln("plugin:menu|create_default").then(([e,n])=>new xS(e,n))}async append(e){return ln("plugin:menu|append",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async prepend(e){return ln("plugin:menu|prepend",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(n=>"rid"in n?[n.rid,n.kind]:n)})}async insert(e,n){return ln("plugin:menu|insert",{rid:this.rid,kind:this.kind,items:(Array.isArray(e)?e:[e]).map(i=>"rid"in i?[i.rid,i.kind]:i),position:n})}async remove(e){return ln("plugin:menu|remove",{rid:this.rid,kind:this.kind,item:[e.rid,e.kind]})}async removeAt(e){return ln("plugin:menu|remove_at",{rid:this.rid,kind:this.kind,position:e}).then(B2)}async items(){return ln("plugin:menu|items",{rid:this.rid,kind:this.kind}).then(e=>e.map(B2))}async get(e){return ln("plugin:menu|get",{rid:this.rid,kind:this.kind,id:e}).then(n=>n?B2(n):null)}async popup(e,n){var i;return ln("plugin:menu|popup",{rid:this.rid,kind:this.kind,window:(i=n?.label)!==null&&i!==void 0?i:null,at:e instanceof Nf?e:e?new Nf(e):null})}async setAsAppMenu(){return ln("plugin:menu|set_as_app_menu",{rid:this.rid}).then(e=>e?new xS(e[0],e[1]):null)}async setAsWindowMenu(e){var n;return ln("plugin:menu|set_as_window_menu",{rid:this.rid,window:(n=e?.label)!==null&&n!==void 0?n:null}).then(i=>i?new xS(i[0],i[1]):null)}}const cXt=Object.freeze(Object.defineProperty({__proto__:null,CheckMenuItem:_T,IconMenuItem:$T,Menu:xS,MenuItem:PT,get NativeIcon(){return x4},PredefinedMenuItem:qT,Submenu:eU,itemFromKind:B2},Symbol.toStringTag,{value:"Module"}));
5554
5554
 
5555
5555
  })(module, module.exports, require, __filename, __dirname);
5556
5556
  return module.exports;
@@ -5558,7 +5558,7 @@ Minimum version required to store current data is: `+r+`.
5558
5558
  (function () {
5559
5559
  "use strict";const Ae=require("node:fs"),Te=require("node:path"),g8=require("node:util"),ep=require("node:os"),Zc=require("node:child_process"),hL=require("node:buffer"),rQ=require("node:string_decoder"),iQ=require("node:net"),oQ=require("child_process"),mS=require("os"),Rp=require("fs"),QA=require("path"),sQ=require("url"),dL=require("net"),m8=require("crypto"),Op=require("util"),XA=require("events"),aQ=require("node:crypto"),lQ=require("node:zlib"),cQ=require("node:worker_threads");function bS(e=process.env){if(e.FORWARDEMAIL_HOME)return b8(e.FORWARDEMAIL_HOME);const t=ep.homedir();return process.platform==="win32"?Te.join(e.APPDATA||Te.join(t,"AppData","Roaming"),"forwardemail"):process.platform==="darwin"?Te.join(t,"Library","Application Support","forwardemail"):Te.join(e.XDG_CONFIG_HOME||Te.join(t,".config"),"forwardemail")}function b8(e){return Te.resolve(e.replace(/^~(?=$|[\\/])/,ep.homedir()))}const uQ="forwardemail/mail.forwardemail.net",dc="forwardemail",fQ=24*60*60*1e3,A8="forwardemail-cli";function pL(){try{return!!require("node:sea").isSea()}catch{return!1}}function cv(e){try{return Ae.realpathSync(e)}catch{return e}}const y8=e=>e.toLowerCase().split(/[\\/]+/);function gL(e=process.argv[1]??""){return pL()?"binary":y8(cv(e)).includes("node_modules")?"npm":"source"}function E8(e=process.argv[1]??""){const t=y8(cv(e));return t.includes(".bun")?"bun":t.includes(".pnpm")?"pnpm":t.includes("yarn")&&t.includes("global")?"yarn":"npm"}const w8={npm:["install","--global",`${dc}@latest`],pnpm:["add","--global",`${dc}@latest`],yarn:["global","add",`${dc}@latest`],bun:["add","--global",`${dc}@latest`]},hQ={npm:"npm prefix --global",pnpm:"pnpm root --global",yarn:"yarn global dir",bun:"bun pm bin --global"};function v8(e){return[e,...w8[e]].join(" ")}function dQ(e=dc,t=process.env){const n=process.platform==="win32",r=Zc.spawnSync(n?`"${e}" --version`:e,n?[]:["--version"],{encoding:"utf8",env:t,shell:n,timeout:3e4});if(r.status!==0)return null;const i=String(r.stdout??"").trim().split(/\r?\n/).pop();return i&&/^\d+\.\d+\.\d+/.test(i)?i:null}function pQ(e=dc,t=process.env){const n=process.platform==="win32",r=n?(t.PATHEXT||".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean):[""];for(const i of(t.PATH||t.Path||"").split(Te.delimiter))if(i)for(const o of r){const s=Te.join(i,`${e}${o}`);try{const a=Ae.statSync(s);if(a.isFile()&&(n||a.mode&73))return s}catch{}}return null}function gQ(e=process.platform,t=process.arch){return`forwardemail-${e==="win32"?"win":e}-${t}${e==="win32"?".exe":""}`}function VM(e){const[t,n=""]=e.replace(/^v/,"").split("-",2),r=t.split(".").map(i=>Number.parseInt(i,10)||0);return{parts:[r[0]??0,r[1]??0,r[2]??0],pre:n}}function Db(e,t){const n=VM(e),r=VM(t);for(let i=0;i<3;i++)if(n.parts[i]!==r.parts[i])return n.parts[i]>r.parts[i]?1:-1;return n.pre===r.pre?0:n.pre?r.pre&&n.pre>r.pre?1:-1:1}async function mL(e=fetch,t){const n=await e(`https://api.github.com/repos/${uQ}/releases/latest`,{headers:{accept:"application/vnd.github+json","user-agent":A8},signal:t});if(!n.ok)throw new Error(`Could not check for updates (GitHub responded ${n.status})`);const r=await n.json();return{tag:r.tag_name,version:r.tag_name.replace(/^v/,""),url:r.html_url,assets:(r.assets??[]).map(i=>({name:i.name,url:i.browser_download_url}))}}function mQ(e){const t=new Map;for(const n of e.split(/\r?\n/)){const r=n.trim().match(/^([a-f0-9]{64})\s+\*?(.+)$/i);r&&t.set(r[2].trim(),r[1].toLowerCase())}return t}async function QM(e,t,n){const r=await t(e,{headers:{"user-agent":A8},redirect:"follow",signal:n});if(!r.ok)throw new Error(`Download failed (${r.status}): ${e}`);return Buffer.from(await r.arrayBuffer())}async function bL(e,t={}){const n=t.fetchImpl??fetch,r=t.target??process.execPath,i=`${gQ()}.gz`,o=e.assets.find(d=>d.name===i),s=e.assets.find(d=>d.name==="SHA256SUMS.txt");if(!o)throw new Error(`Release ${e.tag} has no ${i} yet`);if(!s)throw new Error(`Release ${e.tag} has no SHA256SUMS.txt yet`);const a=mQ((await QM(s.url,n,t.signal)).toString("utf8")).get(i);if(!a)throw new Error(`SHA256SUMS.txt in ${e.tag} does not list ${i}`);const l=await QM(o.url,n,t.signal),c=aQ.createHash("sha256").update(l).digest("hex");if(c!==a)throw new Error(`Checksum mismatch for ${i}: expected ${a}, got ${c}`);const u=lQ.gunzipSync(l),f=Te.dirname(r),h=Te.join(f,`.${Te.basename(r)}.${process.pid}.new`);try{if(Ae.writeFileSync(h,u,{mode:493}),process.platform==="win32"){let d=`${r}.old`;try{Ae.rmSync(d,{force:!0})}catch{d=`${r}.${process.pid}.old`}Ae.renameSync(r,d);try{Ae.renameSync(h,r)}catch(g){throw Ae.renameSync(d,r),g}}else Ae.renameSync(h,r)}catch(d){Ae.rmSync(h,{force:!0});const g=d.code;throw g==="EACCES"||g==="EPERM"?new Error(`No permission to replace ${r}. Run the installer again (with sudo if it was installed system-wide).`):d}return e.version}function bQ(e=process.execPath){if(process.platform!=="win32")return;const t=Te.basename(e);let n;try{n=Ae.readdirSync(Te.dirname(e))}catch{return}for(const r of n)if(!(r!==`${t}.old`&&!(r.startsWith(`${t}.`)&&/\.\d+\.old$/.test(r))))try{Ae.rmSync(Te.join(Te.dirname(e),r),{force:!0})}catch{}}async function AQ(e){const t=e.manager??E8(e.script),n=e.env??process.env,r=e.print??(c=>process.stdout.write(`${c}
5560
5560
  `)),i=e.printError??(c=>process.stderr.write(`${c}
5561
- `)),o=v8(t);r(`Updating with ${t}: ${o}`);const s=await yQ(t,n);if(s!==0)return i(`forwardemail: ${o} failed (exit code ${s}).`),s;const a=dQ(dc,n);if(a&&Db(a,e.version)>0)return r(`Updated Forward Email ${e.version} → ${a}.`),0;if(a===e.version)return r(`Forward Email ${e.version} is up to date.`),0;const l=pQ(dc,n);return l?a?cv(l)===cv(e.script??process.argv[1]??"")?(i(`forwardemail: the forwardemail on your PATH (${l}) is still ${a}; ${t} installed the update into another folder. See where with: ${hQ[t]}`),1):(i(`forwardemail: the forwardemail on your PATH (${l}) is ${a}, another copy that comes before the one ${t} updated. Update or remove it.`),1):(i(`forwardemail: the forwardemail on your PATH (${l}) could not be run.`),1):(i(`forwardemail: ${t} installed the update, but no forwardemail is on your PATH to check it. Add ${t}'s global bin folder to PATH.`),0)}function yQ(e=E8(),t=process.env){const n=process.platform==="win32";return new Promise(r=>{const i=Zc.spawn(n?v8(e):e,n?[]:w8[e],{stdio:"inherit",env:t,shell:n});i.on("error",()=>r(1)),i.on("exit",o=>r(o??1))})}function gI(e){try{return JSON.parse(Ae.readFileSync(e,"utf8"))}catch{return{}}}function uv(e,t){try{Ae.mkdirSync(Te.dirname(e),{recursive:!0,mode:448}),Ae.writeFileSync(e,JSON.stringify(t),{mode:384})}catch{}}async function EQ(e){const t=e.now??Date.now(),n=e.install??gL(),r=gI(e.stateFile);if(r.checkedAt&&t-r.checkedAt<fQ)return n!=="source"&&r.latest&&Db(r.latest,e.version)>0?u1(e.version,r.latest):null;const i=new AbortController,o=setTimeout(()=>i.abort(),12e4);o.unref?.();try{let s;try{s=await mL(e.fetchImpl,i.signal)}catch{return null}if(uv(e.stateFile,{...r,checkedAt:t,latest:s.version}),Db(s.version,e.version)<=0)return null;if(n==="binary"){try{await bL(s,{fetchImpl:e.fetchImpl,signal:i.signal})}catch(a){return`${u1(e.version,s.version)} (installing it failed: ${a.message})`}return uv(e.stateFile,{checkedAt:t,latest:s.version,applied:s.version}),`Forward Email was updated to ${s.version}; it takes effect the next time you start it.`}return n==="npm"?u1(e.version,s.version):null}finally{clearTimeout(o)}}function u1(e,t){return`Forward Email ${t} is available (you have ${e}). Update with: forwardemail update`}async function wQ(e){const t=e.install??gL(),n=e.version;let r;try{r=await mL(e.fetchImpl,AbortSignal.timeout(3e4))}catch{return{upToDate:!1,currentVersion:n,latestVersion:null,message:"Could not check for updates"}}const i=e.stateFile?gI(e.stateFile).applied:void 0;e.stateFile&&uv(e.stateFile,{...gI(e.stateFile),checkedAt:Date.now(),latest:r.version});const o=r.version;if(Db(o,n)<=0)return{upToDate:!0,currentVersion:n,latestVersion:o,message:`You're on the latest version (v${n})`};const s={upToDate:!1,currentVersion:n,latestVersion:o};if(t==="binary"&&i===o)return{...s,message:`v${o} is installed; it takes effect the next time you start forwardemail`};if(t==="binary"){try{await bL(r,{fetchImpl:e.fetchImpl,target:e.target,signal:AbortSignal.timeout(5*6e4)})}catch(a){return{...s,message:`v${o} is available but could not be installed: ${a.message}`}}return e.stateFile&&uv(e.stateFile,{checkedAt:Date.now(),latest:o,applied:o}),{...s,message:`v${o} is installed; it takes effect the next time you start forwardemail`}}return t==="npm"?{...s,message:`v${o} is available (you have v${n}). Quit and run: forwardemail update`}:{...s,message:`v${o} is available (you have v${n}). This copy runs from a source checkout; update it with git pull and pnpm build:cli`}}const Ba="0.14.24",wg=()=>`Forward Email in your terminal: the webmail, calendar and contacts.
5561
+ `)),o=v8(t);r(`Updating with ${t}: ${o}`);const s=await yQ(t,n);if(s!==0)return i(`forwardemail: ${o} failed (exit code ${s}).`),s;const a=dQ(dc,n);if(a&&Db(a,e.version)>0)return r(`Updated Forward Email ${e.version} → ${a}.`),0;if(a===e.version)return r(`Forward Email ${e.version} is up to date.`),0;const l=pQ(dc,n);return l?a?cv(l)===cv(e.script??process.argv[1]??"")?(i(`forwardemail: the forwardemail on your PATH (${l}) is still ${a}; ${t} installed the update into another folder. See where with: ${hQ[t]}`),1):(i(`forwardemail: the forwardemail on your PATH (${l}) is ${a}, another copy that comes before the one ${t} updated. Update or remove it.`),1):(i(`forwardemail: the forwardemail on your PATH (${l}) could not be run.`),1):(i(`forwardemail: ${t} installed the update, but no forwardemail is on your PATH to check it. Add ${t}'s global bin folder to PATH.`),0)}function yQ(e=E8(),t=process.env){const n=process.platform==="win32";return new Promise(r=>{const i=Zc.spawn(n?v8(e):e,n?[]:w8[e],{stdio:"inherit",env:t,shell:n});i.on("error",()=>r(1)),i.on("exit",o=>r(o??1))})}function gI(e){try{return JSON.parse(Ae.readFileSync(e,"utf8"))}catch{return{}}}function uv(e,t){try{Ae.mkdirSync(Te.dirname(e),{recursive:!0,mode:448}),Ae.writeFileSync(e,JSON.stringify(t),{mode:384})}catch{}}async function EQ(e){const t=e.now??Date.now(),n=e.install??gL(),r=gI(e.stateFile);if(r.checkedAt&&t-r.checkedAt<fQ)return n!=="source"&&r.latest&&Db(r.latest,e.version)>0?u1(e.version,r.latest):null;const i=new AbortController,o=setTimeout(()=>i.abort(),12e4);o.unref?.();try{let s;try{s=await mL(e.fetchImpl,i.signal)}catch{return null}if(uv(e.stateFile,{...r,checkedAt:t,latest:s.version}),Db(s.version,e.version)<=0)return null;if(n==="binary"){try{await bL(s,{fetchImpl:e.fetchImpl,signal:i.signal})}catch(a){return`${u1(e.version,s.version)} (installing it failed: ${a.message})`}return uv(e.stateFile,{checkedAt:t,latest:s.version,applied:s.version}),`Forward Email was updated to ${s.version}; it takes effect the next time you start it.`}return n==="npm"?u1(e.version,s.version):null}finally{clearTimeout(o)}}function u1(e,t){return`Forward Email ${t} is available (you have ${e}). Update with: forwardemail update`}async function wQ(e){const t=e.install??gL(),n=e.version;let r;try{r=await mL(e.fetchImpl,AbortSignal.timeout(3e4))}catch{return{upToDate:!1,currentVersion:n,latestVersion:null,message:"Could not check for updates"}}const i=e.stateFile?gI(e.stateFile).applied:void 0;e.stateFile&&uv(e.stateFile,{...gI(e.stateFile),checkedAt:Date.now(),latest:r.version});const o=r.version;if(Db(o,n)<=0)return{upToDate:!0,currentVersion:n,latestVersion:o,message:`You're on the latest version (v${n})`};const s={upToDate:!1,currentVersion:n,latestVersion:o};if(t==="binary"&&i===o)return{...s,message:`v${o} is installed; it takes effect the next time you start forwardemail`};if(t==="binary"){try{await bL(r,{fetchImpl:e.fetchImpl,target:e.target,signal:AbortSignal.timeout(5*6e4)})}catch(a){return{...s,message:`v${o} is available but could not be installed: ${a.message}`}}return e.stateFile&&uv(e.stateFile,{checkedAt:Date.now(),latest:o,applied:o}),{...s,message:`v${o} is installed; it takes effect the next time you start forwardemail`}}return t==="npm"?{...s,message:`v${o} is available (you have v${n}). Quit and run: forwardemail update`}:{...s,message:`v${o} is available (you have v${n}). This copy runs from a source checkout; update it with git pull and pnpm build:cli`}}const Ba="0.14.25",wg=()=>`Forward Email in your terminal: the webmail, calendar and contacts.
5562
5562
 
5563
5563
  Usage
5564
5564
  forwardemail [options] Open Forward Email