From 7491c0a1b478b873767cc707e8cb5b409fb5f98c Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Wed, 10 Jun 2026 04:10:02 +0200 Subject: [PATCH] first wokring prototype --- .env | 1 + .env.example | 1 + Dockerfile | 11 + README.md | 125 +- index.html | 12 + multi-seal-mail-webui.tar.gz | Bin 0 -> 106372 bytes multisealmail-webui-reload-preview-patch.zip | Bin 0 -> 11872 bytes ...sealmail-webui-reload-streamline-patch.zip | Bin 0 -> 43252 bytes nginx.conf | 7 + package-lock.json | 1779 +++++++++++++++++ package.json | 24 + src/App.tsx | 113 ++ src/api/auth.ts | 20 + src/api/campaigns.ts | 289 +++ src/api/client.ts | 62 + src/api/mail.ts | 75 + src/components/Button.tsx | 5 + src/components/Card.tsx | 19 + src/components/FormField.tsx | 12 + src/components/LoadingIndicator.tsx | 12 + src/components/MetricCard.tsx | 9 + src/components/PageTitle.tsx | 15 + src/components/StatusBadge.tsx | 3 + src/components/Stepper.tsx | 19 + src/components/ToggleSwitch.tsx | 29 + src/components/email/EmailAddressInput.tsx | 246 +++ src/components/help/FieldLabel.tsx | 17 + src/components/help/InlineHelp.tsx | 186 ++ src/features/PlaceholderPage.tsx | 15 + src/features/admin/AdminPage.tsx | 131 ++ src/features/auth/LoginModal.tsx | 60 + src/features/auth/PublicLandingPage.tsx | 46 + .../campaigns/AttachmentsDataPage.tsx | 253 +++ src/features/campaigns/CampaignAuditPage.tsx | 14 + src/features/campaigns/CampaignDataPage.tsx | 204 ++ src/features/campaigns/CampaignFieldsPage.tsx | 308 +++ src/features/campaigns/CampaignJsonView.tsx | 32 + src/features/campaigns/CampaignListPage.tsx | 150 ++ .../campaigns/CampaignOverviewPage.tsx | 340 ++++ src/features/campaigns/CampaignReportPage.tsx | 38 + src/features/campaigns/CampaignWorkspace.tsx | 112 ++ src/features/campaigns/GlobalSettingsPage.tsx | 178 ++ src/features/campaigns/MailSettingsPage.tsx | 291 +++ src/features/campaigns/RecipientDataPage.tsx | 305 +++ src/features/campaigns/ReviewDataPage.tsx | 96 + src/features/campaigns/SendDataPage.tsx | 66 + src/features/campaigns/TemplateDataPage.tsx | 558 ++++++ .../components/AttachmentRuleCard.tsx | 20 + .../components/FieldMappingTable.tsx | 24 + .../context/UnsavedChangesContext.tsx | 177 ++ .../hooks/useCampaignWorkspaceData.ts | 61 + src/features/campaigns/utils/campaignView.ts | 155 ++ src/features/campaigns/utils/draftEditor.ts | 107 + .../campaigns/wizard/CreateWizard.tsx | 405 ++++ .../campaigns/wizard/ReviewWizard.tsx | 23 + src/features/campaigns/wizard/SendWizard.tsx | 22 + .../wizard/steps/AttachmentsStep.tsx | 22 + .../campaigns/wizard/steps/BasicsStep.tsx | 24 + .../campaigns/wizard/steps/FieldsStep.tsx | 18 + .../campaigns/wizard/steps/RecipientsStep.tsx | 29 + .../campaigns/wizard/steps/ReviewStep.tsx | 19 + .../campaigns/wizard/steps/SendStep.tsx | 22 + .../campaigns/wizard/steps/SenderStep.tsx | 18 + .../campaigns/wizard/steps/TemplateStep.tsx | 21 + src/features/dashboard/DashboardPage.tsx | 22 + src/features/files/FilesPage.tsx | 282 +++ src/features/settings/SettingsPage.tsx | 190 ++ src/features/templates/TemplatesPage.tsx | 285 +++ src/layout/AppShell.tsx | 48 + src/layout/BreadcrumbBar.tsx | 69 + src/layout/HelpMenu.tsx | 122 ++ src/layout/IconRail.tsx | 35 + src/layout/SectionSidebar.tsx | 49 + src/layout/Titlebar.tsx | 138 ++ src/main.tsx | 20 + src/styles/auth-gate.css | 162 ++ src/styles/badges.css | 5 + src/styles/campaign-workspace.css | 741 +++++++ src/styles/components.css | 454 +++++ src/styles/forms.css | 12 + src/styles/layout.css | 142 ++ src/styles/tables.css | 128 ++ src/styles/tokens.css | 50 + src/types.ts | 101 + src/utils/emailAddresses.ts | 101 + src/utils/fieldHelp.ts | 86 + src/utils/helpContext.ts | 64 + src/vite-env.d.ts | 1 + tsconfig.json | 20 + vite.config.ts | 18 + 90 files changed, 10799 insertions(+), 1 deletion(-) create mode 100644 .env create mode 100644 .env.example create mode 100644 Dockerfile create mode 100644 index.html create mode 100644 multi-seal-mail-webui.tar.gz create mode 100644 multisealmail-webui-reload-preview-patch.zip create mode 100644 multisealmail-webui-reload-streamline-patch.zip create mode 100644 nginx.conf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/App.tsx create mode 100644 src/api/auth.ts create mode 100644 src/api/campaigns.ts create mode 100644 src/api/client.ts create mode 100644 src/api/mail.ts create mode 100644 src/components/Button.tsx create mode 100644 src/components/Card.tsx create mode 100644 src/components/FormField.tsx create mode 100644 src/components/LoadingIndicator.tsx create mode 100644 src/components/MetricCard.tsx create mode 100644 src/components/PageTitle.tsx create mode 100644 src/components/StatusBadge.tsx create mode 100644 src/components/Stepper.tsx create mode 100644 src/components/ToggleSwitch.tsx create mode 100644 src/components/email/EmailAddressInput.tsx create mode 100644 src/components/help/FieldLabel.tsx create mode 100644 src/components/help/InlineHelp.tsx create mode 100644 src/features/PlaceholderPage.tsx create mode 100644 src/features/admin/AdminPage.tsx create mode 100644 src/features/auth/LoginModal.tsx create mode 100644 src/features/auth/PublicLandingPage.tsx create mode 100644 src/features/campaigns/AttachmentsDataPage.tsx create mode 100644 src/features/campaigns/CampaignAuditPage.tsx create mode 100644 src/features/campaigns/CampaignDataPage.tsx create mode 100644 src/features/campaigns/CampaignFieldsPage.tsx create mode 100644 src/features/campaigns/CampaignJsonView.tsx create mode 100644 src/features/campaigns/CampaignListPage.tsx create mode 100644 src/features/campaigns/CampaignOverviewPage.tsx create mode 100644 src/features/campaigns/CampaignReportPage.tsx create mode 100644 src/features/campaigns/CampaignWorkspace.tsx create mode 100644 src/features/campaigns/GlobalSettingsPage.tsx create mode 100644 src/features/campaigns/MailSettingsPage.tsx create mode 100644 src/features/campaigns/RecipientDataPage.tsx create mode 100644 src/features/campaigns/ReviewDataPage.tsx create mode 100644 src/features/campaigns/SendDataPage.tsx create mode 100644 src/features/campaigns/TemplateDataPage.tsx create mode 100644 src/features/campaigns/components/AttachmentRuleCard.tsx create mode 100644 src/features/campaigns/components/FieldMappingTable.tsx create mode 100644 src/features/campaigns/context/UnsavedChangesContext.tsx create mode 100644 src/features/campaigns/hooks/useCampaignWorkspaceData.ts create mode 100644 src/features/campaigns/utils/campaignView.ts create mode 100644 src/features/campaigns/utils/draftEditor.ts create mode 100644 src/features/campaigns/wizard/CreateWizard.tsx create mode 100644 src/features/campaigns/wizard/ReviewWizard.tsx create mode 100644 src/features/campaigns/wizard/SendWizard.tsx create mode 100644 src/features/campaigns/wizard/steps/AttachmentsStep.tsx create mode 100644 src/features/campaigns/wizard/steps/BasicsStep.tsx create mode 100644 src/features/campaigns/wizard/steps/FieldsStep.tsx create mode 100644 src/features/campaigns/wizard/steps/RecipientsStep.tsx create mode 100644 src/features/campaigns/wizard/steps/ReviewStep.tsx create mode 100644 src/features/campaigns/wizard/steps/SendStep.tsx create mode 100644 src/features/campaigns/wizard/steps/SenderStep.tsx create mode 100644 src/features/campaigns/wizard/steps/TemplateStep.tsx create mode 100644 src/features/dashboard/DashboardPage.tsx create mode 100644 src/features/files/FilesPage.tsx create mode 100644 src/features/settings/SettingsPage.tsx create mode 100644 src/features/templates/TemplatesPage.tsx create mode 100644 src/layout/AppShell.tsx create mode 100644 src/layout/BreadcrumbBar.tsx create mode 100644 src/layout/HelpMenu.tsx create mode 100644 src/layout/IconRail.tsx create mode 100644 src/layout/SectionSidebar.tsx create mode 100644 src/layout/Titlebar.tsx create mode 100644 src/main.tsx create mode 100644 src/styles/auth-gate.css create mode 100644 src/styles/badges.css create mode 100644 src/styles/campaign-workspace.css create mode 100644 src/styles/components.css create mode 100644 src/styles/forms.css create mode 100644 src/styles/layout.css create mode 100644 src/styles/tables.css create mode 100644 src/styles/tokens.css create mode 100644 src/types.ts create mode 100644 src/utils/emailAddresses.ts create mode 100644 src/utils/fieldHelp.ts create mode 100644 src/utils/helpContext.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.env b/.env new file mode 100644 index 0000000..6c9bbfd --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_API_BASE_URL=http://127.0.0.1:8000 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..6c9bbfd --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +VITE_API_BASE_URL=http://127.0.0.1:8000 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8e53362 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:22-alpine AS build +WORKDIR /app +COPY package.json package-lock.json* ./ +RUN npm install +COPY . . +RUN npm run build + +FROM nginx:1.27-alpine +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=build /app/dist /usr/share/nginx/html +EXPOSE 80 diff --git a/README.md b/README.md index de2e0c9..b9d9813 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,125 @@ -# multi-seal-mail-webui +# MultiMailer WebUI +Standalone React/Vite WebUI for MultiMailer. + +## Layout + +This shell implements the requested layout: + +```text ++--------+----------------------------------------------------------------------------------------+ +| MSM | Titlebar with tenant selector ? Help Account selector | +| +----------------------------------------------------------------------------------------+ +| Icon | Breadcrumb | +| +---------------+-----------------------------------------------------------------------+ +| Icon | Submenu | Content | +| | | | +``` + +## Run locally + +Start the backend first: + +```bash +cd multimailer-server/server +source .venv/bin/activate +python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000 +``` + +Start the WebUI: + +```bash +cd multimailer-webui +npm install +npm run dev +``` + +Open: + +```text +http://127.0.0.1:5173 +``` + +Use the development API key: + +```text +dev-multimailer-api-key +``` + +## Current UI scope + +Included now: + +- screenshot-inspired app shell +- dark left icon rail +- top titlebar with tenant selector, help and account area +- breadcrumb/action bar +- module submenu +- dashboard cards +- campaign workspace +- Create / Review / Send wizard skeletons +- structured editor placeholders +- settings/admin placeholders +- local API key storage + +Next steps: + +1. Wire campaign list and version detail to backend. +2. Wire version autosave endpoints. +3. Implement Create Wizard data model. +4. Implement fields editor. +5. Implement recipient mapping table. +6. Implement attachment rule editor. +7. Implement review wizard around missing/ambiguous attachments. + + +## Troubleshooting: campaigns response does not render + +The server returns campaign lists as: + +```json +{ + "campaigns": [] +} +``` + +The WebUI client normalizes this to an array internally. If the page still shows +"No campaigns loaded yet", check: + +```bash +curl -H "X-API-Key: dev-multimailer-api-key" \ + http://127.0.0.1:8000/api/v1/campaigns +``` + +During Vite development, either: + +1. leave the WebUI API base URL empty and use the Vite `/api` proxy, or +2. configure FastAPI CORS and use `http://127.0.0.1:8000` as API base URL. + +To reset the saved API base URL: + +```js +localStorage.removeItem("multimailer.apiSettings.baseUrl") +``` + + +## Login and help shell update + +The top line no longer contains the API URL, API key field or Blog link. The URL/API key remain under Settings for development and automation access. + +The Help menu includes: + +- context-sensitive Help, opened by the Help menu or `F1` +- User docs placeholder +- Admin docs placeholder +- GitLab link +- About modal + +The account selector now opens a login flow. Development login requires the backend auth-session update: + +```text +Email: admin@example.local +Password: dev-admin +``` + +The tenant selector is currently informational. It becomes actionable once users can have memberships in multiple tenants. diff --git a/index.html b/index.html new file mode 100644 index 0000000..815e778 --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + MultiMailer + + +
+ + + diff --git a/multi-seal-mail-webui.tar.gz b/multi-seal-mail-webui.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..df7878b836dcd4c671492c668eae2d1f9f1abeb0 GIT binary patch literal 106372 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

Mrtii{w|!K4(bvM{o-bYU#51EEnIHL0qKKacNx zcKi`qq_Q>6Qn|H#et!3S`RWmRzRA<6H?;oGur^YKe5PAlh8LBf3|l*eJX`rpqS1ftr=djAQorID`aV1kmjnOYi082VGhocQlCMZJ+Z!BZ)KyH zTxTG^nHFfKZy`#}+D5jezH4hzTZ2&sEJz{tL^?qDbJyqifPeAOVIBDi-K|#9zUO7! z0&F#ztcD9>Ob3Q&xNpMm!yTojU0a=VjF}}~R_c^C7O~ziy>8I%6H*XIuKcK7+0G01 zGa{}bID<-NY6BFBx+>;w!Td&+#t57rtyw>BhVxW{pSOun;*us&MGt&mYv}d@Nt{e- zQc8VR2vH>zidW@EU=~Zr-GQcPw;^H?9YJ$9=~YG@v8JSL{%jondC~*G4pVK8flL}q z(bl>XwUzY95>s){j_tRKGlg93S_a7tRRj~GH&JmpZX1i-QS2=ZSuX<6U%nA!_X6 zc_R+RR`Ij-mI@7n%PIN+8wp!&cOY>j_;vJwA0cjjyJi#G(&3e`PKIsoj(Y}+VM^=2RX0yK00{Ws zzW95i_-{ue{ByLqnUSlTvzg2PBL?fgVoZ$e9F43j?ElX|^uHzv{r6S&>@mvBK0;7c%+E6hAAUTG%YP7fw9i5o+N6S8l=Yj)*ARrfm4+lwRQctCRs>|let?zx-uBrAyG;xd@B3Or;F zE*fjxw1S8l3tzQ>sdsiVPOU#}KWJrhU*Y=p-GmJr^xm^#JJL*l#H1Cp{|0Bor~;SC z+(yaf(xHkMx2f2>Atvcnt>>N6c$nqU8uV!?^Z*E6w+SKF>XxW(&P9mY;F5u?)k23* zhec+v?EJ}a$D0!Kw2y{kh63hMC#DwFF2W;Toz`cd-x~5DUyUY6#r6SYM*rdaW3;Ko zaSB~EZJBX?2#T{zpU4{=pf;^;$p`Gu-a%)pZZl?a$53^H5hsk+iU&MvC$C1|U4ceJ z>hy7bVs=%!6V>eEj7jAsw0eG5mr5mKBXZ|7rai!AG84TA?@{SNuGk1{zxJT|u})qR zQDzGwjK(`SLpE#gtSFN)G=Obscun$0N}3Xrrbo_5X~UN4WJNjASIzQeFHmiwY*e=D z26wJ6c`c#h;*|n1-8_+vq=PweFECK_IlY7{&d6~pV7v=&kh$I>+SI@p$jAEZ&Qi~>ckpUL3$nkWhqQ8!f)1FB&j}1B^MaxaDC*N6}Pg>w{yoV(q!X;9%ZdX4rdGv zvXjcic}CvM>y`l`Axu^{r}%Q&G`q?|_TBP_RIFHa%%NcxLIohn0E6ZfF`A49lYbEu z0;;^NWGOh8CwP}+8q0i#^a7Pu@b*)j>v4luF7>URA`FKursi2ygVeORt70x+oFsFW zgUk+x(M~5SjI3tNaxf~Mlv0CS2L+NzO#4^9m>Z;GaV!$ktOfiix6KGgm$}7d>Sp*j zJ-OIyF5x@r?I3}8m%Z7c_!gl>-KG< zyr=iNa&pE_SVWyGK)>YyY%SsP95-9Sdh*J!30u@_4YbKb37v}8QcIl(g{FhL>Vl(! z;AKG65VD&_tZQXPe$+rs9%YI4OxoBWPpV0n5C)V(o}LL3E~ZdQLeLW}R=3YnM{sDU zX=*CO9!d++k!*-MoamO7il0S!>2!!fdZpyr*}2ZRM&Fp?v6Ae-IE8gRW6!_N-Puqh z({6cVt@kmhne>3{TAZ9e<*<5JNHllI?M9H11RcP9WzmD~bUD2*Az7lNbnF%jLe_b( zoTUeO)`g7xz5ip8)s}^eom9eI{kPU+3d>4MBe{dFN(Vm^t8oIX=K4W?%&VW~(Y7~C z3zs)h!s)Op2Le(_`sXe`HNn(>6@9S3F+_RWiQgRL^la!uIrdcV;b|>sMW@P#}ww1WcDtM9{ zA?Lx1opXnL)JUjo$WtGGMVIdymr`6kFJmpui<2fG?kUABl!G_N<1l*-TW(){z`WD8 zPz!u_GOT1BJ5#)$R_wic7jySeY-|9hh%mxoeFyWYm%g11*S0J_eR$WtNTAipvOo?0 zSGVM%F9o*`jr>;WWzor#N6t6E$5_eDrj}RBZ0gLWV>~gNgYyvdjVlJ@>Ws+c<}E8= z`urHWwce~pirT62`6jm8)iyXOfFEG8A;7ET%V+hghP&k;@;w2}Z*pk4yv502oM0*v zqTys-P#qL=$ZU>XGF;~Xjh}vXpsx3wrJnp)Yb9X5|D|HHjW<%hhh@Zrw<7%KL^m6= zN>vQ1<%V5+So=%EL=zQ$<*0iy-n}^lBr_Y%b!;#LCSz?RK8-+Yz^|_N2+{IaK)z z$|IOkN5w0-39BORUHek6?bsZZz7LL6e3$5>GfNBBUA!P-G@i#9A=(J=Rk}Xm(RLW8 ziIx(wjXFDlvkc(nQj8JgPs}qxy8Ff2`}hfXCtA^k;7RL0CFK$)LAR5Yj;6yH(aKp@ zA(WWodmi#>SCcFDZxRwTC>slN701$Cf$ z<03)D0YhkGnqU#-T7qj|5ts`$7@k|Pv@3h~dCJ9ED6sR^dFYUu9M@J4wSMT@5s`qq z_({0U1-?daeV%oE{#*hgm=RXif4oi#1ciOP8C)7p>`k8)J3i-nMz@vJ$EO91n)R4` zgL`h|KV}9~3mk3gl%8sG;ne$)jX(B+(+q=X#OsdvC6Aa>`8Lc?{nRDvsUD0tVLCYJ zXLyE~8OyWGqDF0h{M^fv)Moxr(1Uo32)uk-Z@mBW zyG;vSo5dfc%F)WU!s$4}$Hjd}2Yr-nfoD6Vi->tt^~K{AEDt(9!K6FH+tPI|0RUNH zFA$sTw}l!ijP`cC?+Qv7tXOwb{K*KdKf@3IM;?ENFzj_*321VkDwVMNM+{g@7)FQ_ z`bhxt-L+0o;X;f6_y&!iyj(`Cv*OXX`eYHYwg->^)9(L1RdQz5-?X;J5MzUGtg_@| zCLt3jweM!1qo@Zh4693aK^KvEC59lc`LsSfH-U|NwqInhAv>kz=_mz{sMIt_r$uX; zaBu<@xxC4aRPFvF({xyU+1vukXW`08UcERz0eH)bc@#ZU#Q{yNr*o}CWE0`zhkUI% zFe-~E&c zNka536Z73};Y8_72<~QxdN)i;PC9kHMqklpSR29i*6WJhTuYFi;fcH_F8&Lc6|m3} zr8EUCDo4Hr7P|$UA)AL%v(?V6pD`{fFTc7Q6cA2$SvvBIVA~FFL(C9u%G#h=e=qWd z`fwDg(3a&y!Jg%8MXifGZp8mmx<)tZf1@|eTN{6mwVgYV18k&06yRdpUd5ANH6{8A zSU&DH+C1YCBbi6x^>B1sBz)~~75aE*p0=VUV21}&UwX^E)PAHFJ^U;`S%Ewl$Owurm)p^?hoE)5g?WT?7Wj_?_Do3eAyZV)PcThq+4xH&nxp4-Ax- zR6yy!jSWujUW70eA-s|;uY_$g!pCwVJvck)KYdSSfzUI~U{jjLKoH-W7w)MR&RZDU z$iTr(yl~d9%CIo&Mj8*xCFH^|KOrY5I!~gH@sl6DwjtL^8RoPPqhI zLnEFx&2>o6Xf&HYQDMyltD{nX(k(;BUKKozAP{x)kJF<%#Z%YsrOq$%U_Lnc80kw@ zCp+d6zTWg2K7)!wR^(?io@rUwB6My!BbTRh@=rnI+JM`xBmBD{c7+ZCiJ zLibfTTmk)sEe6&??yp+PdPIZB`W*JnX*Y@v9@_L#_J!=$dNDAuh3iH4N$EC+@`&&T zw65WSGg+=%cEI4SDkY+0<8^)~b@R{?8Rks#{ZM&(e#4m?hQyJ=N4-2vP4v?Jn76x^^#Qb;ItVqOYYAc=T3Z+Y<$h}`F z7gy^V_ltJ8YbWeTs{ShvAklYqRgk^4|&k<--L1hZz~^?yMt>O4EN$*Eux3>Aiy z3S-Lo4b@=2dTG;z8#YV}|Ikps05WGF1>pjs?#R1SflcITe-orR>8=~eZr&t$WfyXp zdRPLJl{1EtpY@A!?#+tGEm4RpbxdD1)%?G+T)!I>%US=4Q#X5Q;K%u!1kF=Z^X3Q& zZ*x{spG;^Eaw34x?0pul!tMcs9wC*Z(eUoK|za%$rz z7T56?=3B>a*Wpi3WVbtQX`R#SdzU0dF&|o)qkGF2s=_>9e#32*|hY)k7MAVt+h7E*Y)aHX>vM!w)?U|7sHymL-C zF7-$FAcq=L%V02rxcMa^ta^5(x+Dhy`+)ufGgJ4eB^JWGgzBG)XA zeQTX~yi9q;N~PufobnVDY#2J5onT+tP`ixI*5eAWQYeb`kZ%wuLlMFd$7N+r9DHMTCkUAIYrbQR-7HWjyoe7lKwf7jiS9|qB&+_fl4&+rJdL? zMnqG$z4IkF=q0GBw!TisNZh}Pvz98BZI2zZ`& zzh~mhmMNhNDNq~5t^C0ir^TadyDHd-I}R&`p3B9+OI^DVN@+*!1qOLK8bcc~hx_L9 zWlA*!6gm{>NWUKt`3R0`U8cSzmbtslWc0t?@p^|+vo>sT(Z(?g5?Zpb4p-l24k^7v z253hM^nUFvKMk92bWI)MwAOvs&7LJ7);_YxUw_&ytni_%6;gkLBPx=X$K0p{b!2n* zkapAnEuW*updsG&T>VL;r^@eS>^_*TFUu-QTpD=AD3~a#JzXT)OBIX8ly$L{T9GUJ zjXI-xQLfrYR(#@HwoerNx>ygC)(L?gxu~nLcWE0?67+c(T(0u@Jwu3M4K+`Q2hET; z{Dbi`)sD}7c4_m|>uYVWuXXIxgk~o&A$9WEl{v$elK{r^i6nCKu&Arb#6L)Zd~*XGV!R_GOn$MP2a7(-Dp%l_R1(@XRg;ZalokMtat-gRBd5fOo<+w>J{tp2d=4CN= z>$Tu<>Kc5XbW+*HhO9*pe|P$Qd=NNRG;ki}-WCB|(}UuZ zV|fvK`ULBwUDMcCce?yTYUVS!%Om#5GzZ>vO|Gn3Wn7<&UPRaX*kv&8plPgUm1Ze~ zN2|s1!L#zZ`;VFALV_i&X30) zg`?wF!6A~#B8u{^y}X1G5vQvx;c~!R2^nIXzWA|R*~=JjZ}lvVB;St=Z)n4UZMLOh z+as>NqnDBY*eaej#u)6S!S~6{jRW`MR>40Zn-N@XdcfMIwWv+Tt zIWK9Ok!x{FT@!cXPPBP@@AYsmZZF8UIX~i?itvo^7UX?il)S*aT#2qJBbqZ(Uuv|* zyZFWv8KZx0dT7RZoh5lhe5yKKB6St;yWw{fLl3e&IyJ%UX7WrVWR|xgy;}uwcE(wm zNdJhLcyJj3?UQ367!}sfLFSJUT-6sP<5ky&4ZgJuY@4$8BD*!6`MI9~jop4|W0$1# z(g;9g%^0Am@*o=B8jm%|xJx;;-3@uECgi-qz?)A3oTr^0H&!d;mtx^3YOvIssf5aW zSbjjLsKQXZVVtai^>dq61FZu^3OKODJ{MyxlXnqFovty92*cA}<=jwXBG#92-#Ijd zt#G8#Wxj0~$|Eq%!zbpz#DdN8DLJn+v=IPXGFjr}WLac9OL6(!&V832Y~on08W2OD zdLRptEcIi;TGj_UZyPRP@K0S--tn$39Z;XqfRc!yUrKME)`BS0zAvg*u1iKhwq1t% z@W%FObM%Knq!znfsj4E#$eC(OJk6;KE3+KWUGZIY>qf#Nq=4QdJ}+NRA{K+O_uNAC>eJ()zMU;@?csIn1s)z!?_4)wBl-u@cQXO14occ`)6?MLKwbsjdZklmFLRc_>IR59Knj^xOW z7(dwDLxZV~GjFuyJ9L3s!Y3?|D32vL*y{O{nI#VSx;v0-%-XAZhWl73xJ=K@=Dm5d zu@>Te2bw@g>o$1ace_-J#r4NGUXyQJ*I#2y(m4Brb?CpG zPc3w`O89k;j;@xb)O+!}CZ|<7398j!)5QydgjHtffcZ|&*pm?dK$yyg#E6J;d zd_*uZlZS$@LaB4aIy@!N)}pu~R4G)s_O$ZqDQXIlMN&0_W&g_2yiB{Lae5o@xODya|y3o zPj@^qvX;7#-g^;NA$*C(q>HL7`wc85hPRYJn65&}P5ojHTBDfwgGu6X9YS%CGBAE6#rmW}V zU+3&5^xE8svzqU_)YvW2@JJ~6rC`6gP0%F$OwYJB;~tB;3f#`(eGvIr zpBG|2*YJ>D)ZMq@s1%2|5O$;^vGK68m^DDkHw*+bb;JuMZQQSnJ_c%N*~#zhqVOF# zX&ri?HC$l$rQ;=@$#{&sQQc!~y!=tG92{V-(MThsym-dp)gYlZk#b_|zBh%ZRP07t zE7JL)Z@4w7%c6penw!iRLx4>&lL-ql;fr}Y?$`hk5!U=#l zg-0?4L$J)KHRs7r43a|=g{dCbtjULA zLe@q0bYxmnSB5V`usC%6b>||lOXvzpKs!x^k1uMcVd`Pe6iVfO$`ERADU^H1N<(Sj z>g&4Jl-8S|laua^+=gca-oA{`N2d-Af48=lbMN0@aZej3QdpMY9%LyN90lVE9Unvo z-%1UkrqxmZ4kqgbw|@7~3*UltQO6yM*T*C42h`a8=*Fw;6+JRMLZ}4t!Qv62C(j0p z0ZOhN^nFu`KR&Pw@R`4Iu>AcQ!s+>yUL+Vk2^d-~#6!B&L`qLul(Ut8^8Tvs3x|Kn z%G?XkgYDuiWi~xP59{EdU0Fl@v|1P*CHR$lF}OC?7w`Ud4!-#_{<|2AcVwHDn&Oyo zBAf9+c5W6LR6~fN|GZ(Wvj9nsGSF2YnFvDiql%idSf_L)q^EH#KQH_HS=_+r;l4TiNkxI{6%fIz&f#^fJ%g z1goE)6;eq*X2z$ajGJKOF+3>B3}MgEhhnO4?`OW(@rmFLwikv#q$5%VqlLX&Pe5L-ar@m%#EW@0w<~-?wjy-*?NBsB?M6c%r5T1$U0IW9w@O zW58iWbXrmZ%;=z$$+N{D_A0vX@#N~}$jv>Fvo3$?Sb$V%Hm~Ik>&*Np(|rG}C0_1EF1H?b$(Gk5Q|O&m3&C1(;J! zZg1X~tjj!zdAEy0r)ruet@+jQT$AyqiJq*0rCMjYl86+75H=vP+1+@8kF~ zsW;{hi~r2FP2n=Ct*9z>WBgW_5VPg6Qbe#bSBtm`Q}P;iCwh zpv%~-ACQ3V(?R%lh-nA(QqY%ZnlzJ+FUvrv`B3%#mgx&8a~yCh!`pnMkq%es{H;}Y zHa6@u>&1ErDTlFf`t6U8GyMHUWS%5{#H2jgWqi~J@Cfq+nnn%Y9~9V>Jp9nL0;0x< zPgr687~=O8G!y@PgL`V$f|WJrCtzkSv08{G;5ic_6%fEc2zyW~?YIXK!XzX}I_fzT)}`|Jz_K3YlkA zg161*1M;Md`Q}*f_8ukuX!AI@q zv3F?=h#yYA15-{Ly!2Kl7MI(T%AfpKNzL{w)X9)#2ua!?B3}kp_7Wtaqb(E`*Pw{( zOFsUiX=4x#|_LTTqUs9+{BLR039@|~C%clwo>cvC+SJ zodDawYr(F`S8LJEp-{U{p3WbWHs_4jKoB2@XO9RM*~9#xW_e#1McX2!iusx>FG1ZR zlg#fwrci+5SYXdgQ~iIUw6h)a7m$<@;T0hj;HMY`dFdBxN!Dv<_q&C>*7?2%cULS3 z=o^sF#}OZ585h+({IAeq|))dL+Ivn~%7JzSnJ0FmNvEF-$6rk5{=E+>mJU_)2sW>`k!V`D9?yimT0xJi$q* z_b0m&TW{m*`&Rk~TL6FDmQ9WoST$CJx3}x#p{<9yKX%^dLax7CV&8$554dRTu3H^Q z7G-HCH4Tc-(%i1)KxZmP8UlsW97Ow%7puG5B;7d-tOpc0HyO*6z=uc^(BZc`S#x5L z%u;fxMEP-!b`yXkbeTb(g5j=>j)m;<88is-u{_3>!wAd#Q1aO8(|2~OVIwp?@KPrC zs&~GH7TbEKVoS~yG3^WTT@MUiT7H?RB$tRuBHGBsg!V)DKzEE69{5`>?Pckav{%1{ zgjzp5U>dDNE#@ilJUAdVQ}xC@^62>#i$9h-3om9VJhe1oL$(f5hs$ncnmY9NXs-N| zu}f2bE2^H%H~;lH1SYl!n2dMAy8W?WS7L1_8~PE0V5jBsNB!(D$t7FG)iae}dGU55 zvYjQx1=aVJNFC4f?YN$c`i4Co4;>qY0{&*Cu`Q4gNd#TG2w#U3y)r*6_^p?JH4`GX z8HvuJNOv)0e#Bwn^-9=4zbWFks!=EV`FrQi^~Og0POP=AWJsY*I?-yA{=Ly<#LMWY z=MvgHudYP6UhRkm?)!{^jB&j->99(%h6p%aL$sDnld(S3nCdres?orM;eVJ0w7n&< zK7SADKb6Xuo97c!U$9YfIX>s};DqM7>k%K=e_}}kxfeLx_pcf$M9G>_lL!^7d(e}B zs{tN#7dWItyV3oT0Mb2`)5mOJ@Q0=-N@$$4FPsl@pNlXyO!lm47=kQUtB7>X?a&cv zYaeW8tvv15)4!&*5Dt{F7)1K8I3{3v<8XRhDqy$)FVm2Y7p}EeaT$=xu%V>HRtdP4 z@T$uQzITKfnh=tKo+cUdj@DDb8$?2y9rBZbk~!g10$a135t{MbbLbEz$;Y(x=~aT< z_zs)Yd%i1gOnf&ezttsl_VujsB^lmKN)l$@@#T}u0f=2=XudB9mI(aVO{XK@pY>Gu zhE2(vlM~V@HIXiRU@}axuKfur_cW6}I&r8SLs6iBP;R43?*rz{Zh9(7#p++wJ&L*q zR9t1~+e;He-u0`9_O@k{bqaiq(@`y|4LD!f+QR5tk9q@ni@%n=7uen(!7F-e4d{c? zow_AEo{TrgAGcbG!stMRX^ofEKC!0+jTDIY7jPE%J+9Ww3#+{VocQ^1J$#d9o@gHq zmM{%mGaKar7JcEDZa)~qb`4}$_%CPd`=@x2dot-CW7b5|#H?$&;8LfIhi4rXvs;M0 z5mN93l0jL-%YWDr_3z9(T9^e$j0$oFFZL{c#q|y0n~x!C{+d@IXraH}EUIa%vl_fj zf%|jQ1?G+mSJoReXVAgOS++@4eab-{*fg|sY+94){gvh+(39&pySAKT^<<|cAj91* z68BCL6hBmT)yOg%i?k3`KbG@N*vMe8e;%sa^Rfc(8=IzCppMhKsRZ5C`@k?`!1JJ| zFagZ#(bP`p_!%rmo)5~;iX|+vwdK~6gGfJDHK-<}SGc(70Sn7k(&*f!KA*gvC8?h? z#*YHid;T+&#Y3BMN`;F^2X}RI@8Sc?fBnNW=`c@3sZCHMJu_NO5iS7bL>C$})ae74m zjXDbR@H^}w>s8gVXOymm32zulo_7iIb0i||qvBM@Pj=Y;)+A`7FMPqBWAv1kvZk+d z%=kW;`vu8Mu{HF%z0J`^ z_2Jf=kD@FV;8HS zW6cMg<5q9v&#AER1qW^eDTp~HRp|_r`|X(7#~gI)J)=1g@lB?FYk~>QB}MMBq1OCq z_FaC7Xf6vhuzWQOmsvONWS+)Kx^Yj>#4iNfn2T=?apuQ`zwwpD`dBXRKE_ag>yYHc zxJG-um3Mpa>tfMZGTxRjW|h8_KqyV{rZR)hHN}jML)Zt}EFVo1ruu!VG*8z_{WN}S zvY2Zv@QB5Hi+(g@T9cA=jzI1mP z$x}S8+|MA%5GwlS`T4eZu`ziAi>AF5|%=FxkDUoLZcaTN5o z!(eFpSiK#SlCB$_bjbyD7wu^quc$(uXd=lgmt4u)=P#W>4wZ#n_>1@M3pdvi-TI@4 z+TwDG-j%d(v~`g1UJD+s$F;l3*t9AvOUmY_lK1$0Vm1~))hx;oNEyh zyHZw*7@2J%;*>r72XY-!z&A3+7M?CLrv7(PtpAbmPHHpVa0tM-YWV>&8V|O4vI1$pafw5&K&$# zPV?^t8E_@^x6VJT!Vv$k3jhCX!vCIx0Qk=&{(qAGlWq9_9*OlY$k6|a{LdER{|^2i zN!))m5dUMoAb(-60)PK|_`kCg|Ib4HYu@-jhg3%T$7cV3Tl636`QK-e|7QXJ^(6R@ ifW?7-C;Hs7{w_q1)>wr$(CZF}zTe{yb4&P@(-KU8IZ*tN3r zBx}`L_0*P^0s}__007VcEaY+Rfnfn(PH+I=5(WT(1KY`v-4I3UdQg+ziwMv}yPu1gMT5>Pw1fKf^oRAhG^smzPPCz}#SKvh6v6+I}g$*oemFG`2olRq4|~NIz`PTf=!z z^Oc`mu#Pb_?+k>g;s~8n#V|6qMObX26t^f(SGK{Bw^`2Jw4$$&O^Nevd(%u3v3C$W z(Q3vStZs^vM`JGcS9@r(yX*{X+b=fms?+awzUG_kAUqi;&^oyhnvmQEQ^OK^`aNbS z3){6HMfkaw`WmAtjTb%EiczFR%ZBec7{yYxM=>(o6A`!6+y}F_n%LN1G+26dT#E0* zW;3*t$T)rWAp0ph@!cv>G-~Ln9$wYsY`HSeMG!N#dQo$E@zyp%-FEeNj4~{}MJpPu zh0Ca0=?X+JmNXFpdFs@JdhnvDl)~9Z zK+j1=T4i|>^G<-PrrX$yYz+G#6i>lEqT53@!pw){FVu#T8=rBAyQg6YBwY+jlpxR_7ctC;hv{__*& zPrVBTwK)ivE5Adon&BFM$nRJ52ct#})zXW(8`q@m%^!w|RF>CUQSGR5euAY7Azl_^S*Tt69jpkflpI zu-kEQ1M#M_9eSTj=0D}xGfc5Q%|)?Z61)=mTo)wL3pmwXb%4qNPaU~t=D?TvpRH>t zuswejsG41sK3#2h$WfrM_3mDLcH8xw7&+@m!LXyas zyn*Y$4Cd5YH8vXj5j~kW!lI?Otv<#~xv8!_%ce7x=*$Z8bWp6{3%G~}%<0sdCH)S+ zC+zkGwUe@Iqu}ESJy#Sx-3=zHvJ zFN~qSwVl4Xsm=c{Al`osXl83``9H({hgAP06~i(F0{{yCsUOGx1ncZ*EcEZ6u4e0C z>1d~KXe_Mnq)+GM_}>*cN_EF_g8|8BMmO&$Z&h!em)ml{>_eWyil)*NI zZ|q7iW)o%YJ{Ai(+=Yxy6r``s>?wbzs>2Zd7EmGlIdYQUbz{_&knbj|s~8 zcVo!w&(8(@(p@446H8gF3XXhMjPaRYjAa9@6e5v9P483mOw&T0ZGA9FE0 zTC-Rxu;#N>gG)-P`#t4PWnHzf+?Lu0r9j>lV?IySiMC_XEcr`v?5 zAjiMp4keZ&b4OivgR)pjt6l_@6Y$sH+GN#i0-xZHhu zc~@|N+s$fXij}Mh1=^L^f?Z`l<#UujGtH+af?%Z&?!dnZ{VY!Zs9VyGV~CLJl^GSO zqIRsy=P0JV%7NvNoUBE&Yd-?oC&yv`p59yFL5nS(mWuDw-*eif=N+DKxFxfD#GtY&eUgCA|RB~ zBNXAQ8n*p6aqi}-Zrm)Z-1lVd_Fv4bJC_CLxQ|`kX9_{rxE0NYex((d)d{V-PxrvN zS5T$bVJa^K|EWjYSCx5()-qKvr9ovPi06Dwwor$%t?EUC!4 zp>Z|EkLTv@U1JtisSIWgRNLn@eYsn%RJO#DeHEN0sUz3 zl5>gHrr%Q*yiPrhq~)j;r~hk9md^8AXCB213uaunOus-PV|Q`de-?~TKHZIWJ3RBN ziK&ji_>hV5mv}JgoSopOS{;*IwQr0!OUc+;W;Go2qH`J%4h(hxH3R27tpeRuhBaTMEXnvf-y*#!$s%A`DPfNU$b?UWTMBQa6$*A zksY<~r<&ngvN{9a!8l2)II0Eo#VnMA%Y3QPgDRMUdQ$LF>1qHub3`G0e<9-}tOlQd zk~-VlO#T$A)g>GmF@hWE``V=QOrCeZ!zv$R%h1n-&(0~ANn_Q_y?=(L=GT-bpp6Gu zky2|`o5%52zV7YDb_S##gyU`X7WJ8}Ikd4pmB->tJ1wH3*AiD>)?Sap9lLw0eCY8 zQGnK6-tcTgJMvU+!uiI4~d3A(tB9-DhuP2ewi5hlnh(yy;WEXxUva;0mBQ zy^DlhlA5M2wwemr7(5+WHrATUKT#eb`}yX-Cu#87LTpkJxv4m5Svdsm(UUR?<2G=( z?^I{3TmmopwTU5(F0g`kzqe_rTM=KHSew|3*Q>3~`fmMv-H8&?iYjOwuhKH&pO8_o z_YoLN#cH5|(;`eA>JI3zz@L)P3vm5r~sS2htgNLU}t z??UTvIMb7;6x9M24q%#A1 zV%aOwH!uKX8Iq!0_R7#^@2~s-e2!LglT;>)c4yn2MO)|^$yL)?S;$AzD0^!=bkK~g zH;*Y*|CBzyFm%9DZXT8;m3~AW?Yafi*=(-)6OSmb7nRPbjLkZP z*U|)>So~$ldNUB^Bj6WIt2-h5IpWRbkB}lDz|h%{Mrn1enKuL4J?F&7Td^`^51tV2 zs+)-l)qa*J0%@#8fFqfmu8*tnJ0v&}cp`wf03TtmZM8~VOp(`@5>c#yt%vRr!uWGT zD8^d5G)Hfd{|Ycd?-JbyEzHST^r4Ia) z;JPjaNo{Y%4Cbr1?QNm^HT!i#u(l6FJFDuj*9Y%i#46CvEtE* zbiCDO6nZu4y2_E&&y3Z>`a9Xm!yDr%%RcO8st0&D$-We4JBLIhmo9qnST_aIl>F)h zD;=y+iu7IrP-Tqo32U8`G^n~seF{_!9T~Gl!JG#seE%UvxHlD`O}C^l7qkt4W?HKo z<0gR%U5Ep+cfWIHu(h8MN;fdsx2=htb4R!Sd3! zf(NIe(4#IY;a#Qslfqz#`Pl;WWijaB2E1kyLZ;a{Ue$z?0Hw|`4N0Sk7QP0POn1rQ zoBn|(De7e(726mY%(X^DC8AY`TeLEzR~OhE_#|72%1_Dqb;E?_rkt|G zFgFOrQ353N00*c{shaWL^kwd#u~xPiFuR~DJHv<)L~6tWUNsX}BOk6nBO$eVIleJE z%UuYocCkk#a^jlZh*Tw#30VnUI1FeGa2Sn+AHlnox{=B@{93PFDSg(-i$Y7RKm<{F z2ByhoY#ijJ(gypn%=E5F?j$5BFsQp_^c6O&C{I=t?;tnv?nnoJw8X%gPvYFlL6KEBnGLNZ9 zCxh$F7gvWRM;ewGHI)qFuBtvWPPndReofX}r%wxg-pomkd&o7`9?iq5@l*xEMLv^+ zkoFgS-^co^)hZ%G(E-!x-QVMdK|*ULOJdIU#VtR37ph(>R@J~Ek+o`zs{vk~jYn2YqqX5lR`qVB6~>w~UyTUEZAsCZPsPN3;kF4RSaGXpo&`PL4D3 zMjq!h5HUfr{8{<8%Z8a%W-=l(ABkv@%BVxV4EQoYf-XAsDMBO}H3r`TCTRV(`q zY(yA2Q#wn4;gTFo#JlnS$D651eX+lSMzrr?2!7pJ6y#G2{tGi+U#mAtC010h(L)oe zbzxvBr!km$zM3phdVc?1k3{)E3*%H~oJqP~-78&idyPhzlRTYZw0Zl!Ue?WHT`@6j zCpfgm2>@(*0$Yo_JjcltvzWNjYrqnAUjuD0R6wJoG1E{bM5b<|s<>b;!++}+)`RS# z7U^7>mL1VmkwsplIg>Qd&5>vjB!B^Bm!)Hbgp10T5aa(x$+dgkwD<=H8zv_MZJ;zD z?Z^hHLJ03!DEXKb7f%O&Nv;%KJ2=!BQ~?csJ(rUm7$mW*r|tczadFU7OSfLySnGLC zXe2!#yA~zqOFFFF6%fuIbiUH*%RSgOIf!EM@3Go^>K2 z5%qm7uvjs3vXP3ps4iPvlajMD8YXpLGR{bdx7uU1Fd@;!u&%^hR{S8z5^xx}*g3b& zMG1q-ggo{9BkxG0b}7Nx{WjXvxG-S|;*wO@L@{uCJO;B@x8?k|_a^7GCCC)dg$y%M z%i0Jx+?=gP=VJB|ij@^$9~w+B1hh4oeCyrWaB9i$2L5pB4ZATvS^8bY_qR)Y!Rr^7 zC$;QW@nylui)+?Tz}INe?WTr%(@gU8rd=#CtF6Nz^sN&*!|Jrq<>oyLVCwuBy1CZ4 zTY}2I{Pi}v%gHJr!IuwUxbd4u!Hd_tql&BPAnY>^%zI*RskF&ncMN|r45IF2j$aiN zW6*e(O*};F0F{q!wZEq4lew1sSYyR^uJ5gEvxO&2wwrm_m8UEue7uX5NvR?V#cabm zHn{bzZoGjKuYANM5%3Xdl zzZrV)QVE7o@)xFQf9?H3&3(K$+!Kw+eDH+zaB-RV3DE6Cg`=rp2GmlPRR{&9*zTuX zn$^Uz{oA-WHHtd9gG2o0tIl!;geg$>yx64?h?t_eiSZ}KWt}`rTK_f_4;)0On43VF zs0LUBnWlj1cX+0}4f@w+OwICcKJHRc=3iJj>)f=64R&j*hZ;WG)`TSBj^1L4c=<~Q>{FOz>D*qVbqk8F-c2f;N7&jW2@YXv+NRQ@T zVpgHDIezWoPG~WC%IikBM*!a{p@qqY?JO4%qX^*aV-2iCOn~xqz6FQHXq72e`b|LE zOajPV9zN5TQ5pZBBwM3GJifV!AK#SaZvf~1J>B3$fK||-7E#=|Rr}DnTCkIGS#%IE zPUUe>oi?vMw+)sGTjjtL(HmiWq9sz77OnWx*lcBZk$eG6wU~>Wr?39;Zn;GRO_TW# za)q6_Rhj*9nx~`7pcdK)>pb^%QYRtPi1M53J6H~MY@A_Npof{$Y#acx%;tA=qW2a` zkRa;E@xBu%L4bVCZQ(b=KjDq<$DJ(R4ngqyy26d&W3oit?w!a@Awe(!cF;FI2$53_ zzubig{>=w8UgA;-vDS)f{pyQp=-M7Y3{10+XtLXL~ml;`}Fy{u|sY~0N~3&v68bOk#!m5$c67NKRRr#I5Ia{q`lf+#D! zJ}SZGQ~QpDsW3{ zZ#Z}22IcaL6X#UaE2ilI1g2JPpV2niGMQkJE768(zLR!)uDoHd#UC|3f)fO2TZSgP zU4rqF=@49v5Vg)26dbgwI`v+{jj)#dt5-)7Id^_H)= z#E2#lxZUhsrg49FIP*O{(odUF;;=#js4hKZ-m1S+3!cLBP85831}8kWBI*x6D9R3P zOM&F4%(qKVVZ2Baj5-6$w&2`1!iyCk?GDN}pH9JuM&v3d4oSZ2go#6Fkq`a7@cRf>F7O$>%lH!0dINIl=Bq!JPTgjWleW_zMSM zMVhH`7vflOHUTHP$q6}r!Fd8*l(+22wI#V$(r`DbF-HAJm(b11Uj`jxa3_KVwlz2vzCZj2{;Pko?7Wujd+!TW8G z-YcjmWLa)n{Rvd3OtbGwu5Uep*j$Wze9-H&+oEtK*-emq$_cIh&inD=pT2KlYLuM# z^5T?KNtiuDNReW2EeOK8DZ&7C5@m%0$LAnOg&4qTrt8CJu6(){`05r}nO@#;pGsjj zOfd{!4zkEIL)S1BRl*IEHsjN8d)*RXYb}KSEsJVyhLz2m+T?IGo?W z`7L^ue6GLM6txJtVYOLon^Vre+PG;_N7&{wn`=eDMCPv-TqY!2Y)eB!>QFm}`p={} z@7VwYyUG*@cJy%A9Jr=$&-YUop(e7bp3K|0Ur_%!dlDy^l+gT>J>gja z0Gj_gdny_mn%kKh+c^Di+Z0XMS2i1>_dPiV0~ioNl8GB1j`Cz!%^90TDTN}L7hg!= zo-);>*_4WeYA)bG`~>^id%(T#oq|UR8PbQ7GM@!oyF zYE_y;p-!)f=Csz?8l!3&-QMU8h3K0A z^-SHf|3&E%Vq|p>D>|ZGgi4FN~ zS=Y~<@L5E=ui%?1R9g>~xiOdNHm)qdlAij`PysxZq&XcP1a#rO{D391$v;MKLUjd1 zA8`&AcOw}zo)p8@zUaX437(P=BJEC7{bVtrdQdzC1Yg1@TAcXS)=e?SKM6sIG>V-F z5`B)f4Q|e_WTr8Up4jnXZGm<-ShSm%*f;K(XvfYz5N;_j$rvA-x9^6sYP)2X!!`9Z zSn+sMaL=f-AH94Iu(G>W(J_57F35Ht(dd~XzcNI{ugN<3lUE8~v#SjG$DW4&$SF|I zJp~tA9=joxvLDsHw8Gla=5PtmK<6o*RJuX5_RJg21mChu#)E6?+7|veFzJD0!ZlJQ zjJ4Zu(PMvE6N9iP!G{gqeCKd&~XU!J5n{{vibl@EUIbJQ~`XbJMqq zIH^$n)-x-|O5kczScaXCT`&2#fCML!EYa12c&}8SdqSjWEwpXii3T5d^4%EHSoh$s zUAKm1!V~s7*4I9(`cR`s00XjEa(uFQgA&$WaXcq9&Y4g;Z;|7DSm6h0+Q(~)AocW{ zzKc7^AKlDi$=9~$S5r6ZEYPZpqH6d0!*Aj!P1nx@#6lXo z)hnejJDbh>wf7zfwDr9qr0-g3%@xPq)nYZQA`c#NK;X%>71$mnhc_SjtzgpI&?m1K zxW~-cFR#D(8wY|A%2yHAl2xPzCBcXTi2OIGnU8_1dnRZO<)Fz&NJQ__Sx^7%C2UOvu>7vF5RzgfCC$%)XB%;WNmeN0{L>rAM<=55*m;^^5wo6F|o)pOedN)(I z#1!(Q?0gc-Sb#kO5^Z4tw_!;^O-vF1jg&^`0sbx7OKlq-9TvA?UrZilT&7VEHrX=Ij;-JgbT>V@^5 zM5ye+chV#@LJc!rEQ|vnmxzf6dfv<+hPymz;lM~#W8=C!Ow9@U5HG5cNgt#{MSUl{ zMSj`$&6e zriQmLcDg~yJ|djJA9rL95dIMx=^ybHgyTnk$o#DSJ6*DScn6~}#D^srIXiwYvAEOd zKc8o#7^Y=*r;9YU%cjK1UJ_>%Q&f~$eaheicQb;rgx(%k(V`!@+1{O4<16>Uh5Y|) zV2T4z`S zG|TLajPK4+=b8|JY6(2ZO;SQ<`+a2UD>pq~8x1fW@fBK%9D|UfKI@{&V>GaMq0(|J z$JSdV!vRU==irRmS}O}kEq}pLb4IbpJ+e?fuV4`xQAw&6oGEl&P^~P_HzPx^psryM ze8j;30_1?P-5+2yT!i-a5nU~Td+kWYE)ItCS*%4!Q@Nm?ib~7Mj;2ELqo|%S$eQF@xT~|!>VoZf^n5-o1mW9=Dh3!$#=YjfTaVcL3~YmVwg_lyH{%o zfha2G8g+=V%j__nnL#_DE-7b{vGCo4z&MpbP-0+|?P~HS^DHjOZcPla6i6KfouHLN zgmb#+DF?sR4Cs(ZGBIDG7;*g~aZnf(_OqD8w69tfY>*haFe}bN ztvc6(@C~w;p%}>?Qa&m%4+MTy8oQci`N7^kv`Bz=szHixk%rULCZUv*C)7(bZOuDt zLqR*m$@5l8Gq-Nvc3Y)Y0}BqiRyygn_Dg#V7kR(?Wkt=CPVRS4QW$@Bi_hOHU7*DG z2Y~|%ZL$N`HfLuH_2defJ^e5i$)x{JYP(=TkwN-S*cl6o_@WgFT)xTZc}6J~1P?@f z1!MqFcB!y1Y@B4uFx_ER2;bJ+=ay#62FKyWlc;N?5I#;?xR&Aq8v`vYP|D+4cGYv4O2wz0Vb zbmZ15WxyF+YS*I)6UYFtJ4sGN&7hVHbZ+uPs*1U)Uvfzlds8W>D-N7M02+b7f}>Yb z$QGFG-%Djoq%v^2W1ck<7XoiqyLd_I8&Tg~MQCX1kS{=+H)Kr0qnG)k2D>kmrrdO7 z_bVX8%b+t(EQ3t2-tW(O) zaRU+&NY8}S>V2YtBF)b(WhDnM8>tyNt>84bI33l8|rV{zR;8r|1c-pms-i#5;yu`ca6sl=9X13-m8F z&DYwULTY{KbfUQy&+&M4Eos1H7Gt&CnWoWZTh zy~7X35PocbEx3Yv@BqVi?|>tADjj(-?t%Cx|5i*!Sm@D9di*5Er=HwpY)t!=6&cyJ zF$kNWr%Ul*#~a0znJe+yc?#h{Gvv?29n-ly6|!m=b&&uKL*t$Jd?ZE-?r<--&PH|L z{)u>;Q2B-ft#Nk3@0jlwA=6SbF{nS-jfsl>^NtggpJnmoU3&dHm>4pza70{3zYo0X z!Ai4vvJAzblFJG#c6^<3R}Cb0<>Tv15-L%h6hnP6#u_(*rMauBHoVpmz{V`ym>A)i()lA)xz`|U=Et-*~-I{8G{@g8lA zepxIYzl2D_bwo)P?aWa~+`1sIJB>)jMh6i|B0IlomCSJK+|r3qQ|V0PoUOhpOO zU=vjGU+*08#BRL%c3?-T58q`6CES)#-6cG0jwSTH@b*CDd+hoVlw{!V91DJ;xhG_iXFEqns zY6w!&rZwd)M9ISOyAhjb+!15Ww)S{5IASqkVx(P=TqD}3a?c3Q0M9tj1kd=3m^W}p zw4g~ySdLnOZ2#b(u6}Jg(^mEx2}}0Pq(a`kxt2*vvKV30oW@62o>Dl zuj1;6&45(Q*~E#?YJ}D$!5;B(5dxZKjnNg6Hjk|FO3Z)dQ`fPk&)DU(%K=6}wO+i8 zj`CQQS6t{z5ZCIWxoR57SNu44N|ZY!=!aC0uo2K&a^UqJ*z&NDn+Rg1NiV@5 zZF=9lmiqFe{DmpdIv_}Z$XfiSr+XHtWZBu@%mZl}AWg!jCRaLCLh8!woFC$?{|@Nf zufmoc%!m(yh#)j2#$3odjUUNRRAA7cdgOehWDL>#OUL)@NW^^*$c?2tOZk;pf=+^ zg_)u8$TBK1)G{(3XPx{tqlz)CMT#;<<;`?HKpqW=ttJMaSVIs}@iWZ~4A7Kw1)D%b zq=Jd5;~`l5{gaIq5cGe(nuHqZ?%~X4nb%m05;gA&EsUM{KjHR@AIzj-xUZ71O_G=( zu>9^Bi|Fuz1f5{lV2ilbjZxKHevyXD(bk+(iC3A25WOlU7vz}h;VJCH`B|p@Lz`!Q zK#c~L-^#Ivk9rg}N{!NaKyz5r}?{2{$GKF^EB%tc|92u*ju~D z6U5)$Z$!Gb=W1!%eO!wn5&ma{`JUbgZ0`WN_sWrdY@;T50Mq)iTQ{W?K&_%3?)#vBm60KpfKHqBAV^nk`!_3#Dm|$fe-8Uf?BruD!Q!}N56Z(_;QQ<`6{Yv z?`1PMYk}QtyjP!QwDzz;Iu$=59sD+Vlm#Hzo-pvt9TbDAg)?>s1kos+xA6)u?e`YD zLmt16>jfr>>_uULn2JI(0_`y8=DzcwQ^1b06G~Sn-rBX*fE>cQdL*T zTurel5^JR)405O(G=|q){^WSJABO02a~nB6y_++aefb~AW!K-_euTx9vDHtklGjps zBa87XgnF+DzC1S`AP!FyI(+KmGRutE%6fnlH-hY_G+*6! zT4jB=F&&qGIS-q-M=3UYUd(^U(gw+d#IV#{6 zv;>V>?KddB7S7Da1D3}sy6Lx*vn;a)4UK>gWWzX?zDxjl=S73Zitxl3U4aNHzt4Qiy8q)f9f91f%#WU`(57oFbz?p9(d$h1ujQq!j* z-yuEuy4{w5RlU`wGc{uf3Qj_wKiZ}UQgpU@LlC{Ya+{M*IneMX03{p?c#w}+~LJgyX8}I=V8q9gp}7q$}zkVhknCu z{|?O@u*9)zt3?;KMY&4(8JS_Kg(8CL4~k(x8_G9?pWeNAdo%B)uo)! z{N2DuRQwcW1z5M7(EemtCHkZqC0dQ{z0F2X-%ztH6mKQMzV&ftm1DpzdPN5pn_Ff( zaW1%UJFOEQ#;*y}uvd`E{iTu_KY@&+<4I=Ir!-1ov(u7?T2Snlo;SE+n@adJ1gS7i zqXS@hcbZ!*F0`p)U43Xd6Ka{>2meY=*S38O)iXrol`jAAvS~sF6P*%kq>|r&`YEo6Oh985kb$oB z06n(K9V?(YM$%No0LR6HC$4o;@|0{%i}V*^7n$bq&)I zRgF-h3Fba6S{F(+EiIC9VmvyqC99Ogc)@IrJHkxYin>E}6o9UmRO;l~k zNSkFv@MD1?!SCb(k>bsnU5V88l==>Z0K?8A9Wtb0;;Q3T9oZ`w;lNg?^kW=O zRbGKqm{-(3kdzbf$TG{(6zNI8heg0Vi2a5)2w7ifZ4Aa4Z6%L{${q?Y-Yn1x7_&U) z&ywALj%)^$1g^r|xm|k>=YOKD`%F<;sy&#}z;lppm+mj~6sa9VZ!xeN2OHPUOFtWmLrG^V1 z#4${ycqsBftpG#pJWv?AWK@?w(1&@ezKbyu`y!YTCrFH81N_+IzRE@SJWY8 zySbfRFY!vm@HTA{jJS{7NX(BFxqJuu3py|HdR&HK+$ z0{{zGj6RH|hYGR*aiWpQ)9^Ml?!I)i;iGQVWm+{AJN`_{b@+nv5nbcWjd{sHKTdgK z0yNUu2|lhuAt|n~Gacx`1&Ma54*yni23WAo{%015lQTLU#?_inr%|5eeZ+h}4hZYV>JiC?&CCs-pC?(dX z7A8}-GNKlcGU0x^{=ESSW8Lu%99JArvMpLY$Acqw(M0}aX^Q%P zW*b#pF0wTkOkvxV@^G+cPiQ0@%Q5lrv|T=rFdZu3lw$UinIi!$?I5i~UmrevS``W3 z^c0da4;-Xi80HYd%-EUIy+Xd=Ui!5vSf%CTK~DsF;oP;^wttIix^{e)@bwY5eU3kB zL2j;%bw9|cJaKGiy$Bd~0eQJT*HxgU&VL>bD~PXde!p43z25M=b$G71-iM9<_PBQy zF1unNMytYR$|_B|PZTsdGlpR_qS#*i0rjc4dxV_z%qpOt>N(($M7Nv6mA2!w`XoqD zEeaXjxYZPKlf81voT!)RmXgR>L{qFzvOK-ryk?ICC;oiGx=i89JkMonWSM7jv9(+{ z+=Fh8?-%S>9_^VN5bJrGDJEYaW-D-DTO^6I>&f7$wJPm$mCZgYg!+=ZlgbZ~ST7|n zf6qD&7bwaM9EVll;J_`Pv6HXr5&60 ziyR>Fr|VUEteRFX`_f;+@6npDKs`M<^I(kWBbV`xW3FqwKLzET!vn0Umyj&h+$l}JQM)2SH9j? zuI`KQqjvaE6}8udu1_lcTa^5j#FR51dWOEL+2dD#fph%CBxHxxG0Bj?#OfTpVCHgO z-%Ur}@qG-j4$ovk6r{|k@YSx&-_^Xba(F!a<5DY~mW2k!)yeOZp8g@w(?rn)51d3D zh8u3pnNIH?>i1OkEF)4xT3qT2ipW1?@62Qzo%s1X3;Ai-Ap zfK=5_u($f~xDRFWvNjzjydP5SZ0a>;6GJdF?ku>FGH4q=f8Ke*{&>8o(-q&2m{{gq z>PGt5iGUx6mMj1H4Zh7pb$_8z0>;(nMGl-!3 z+~q^X00FJ@qKN9CA`C=KMe4bsQnLMO6RXnQeb!q}v3-ucz@IjgpdXGxMfowNzhV-( zF%_U7@Di&~V#qECJ$-h`IoWfMN#qiZpx(@V0C`g4aC@xd^-q7+^JF|5Q(_^`%8)?l z3ygp(q%@}#8k4|j_8px5mG{nu(?ymtT`Tta$Em(=_mI;z6NU4|cFN+G++e}9SpVP_ z#u?~gzvq%0wEu0_;wr8;H1{F=4xkvG9C^06;t67>O>}c0R zuj$+uP4-M+lOJT1M}2rQxkNd#tlCfu-uyzWvjpeak^O$) zIQbeisbCMx*zlE~5}ogK=o98d^c8b~@O@+2ZBm8?Qa!n7|;;pP8Oc8)Q+MB$ch+qO^JwrzZE+uf&a+crYlki5Wq{%4v2<9AV>d=ie~kPdu}mPcb=pPNg$) zDlc-%ZXO6TtbBqrDIO%-Jlg$cA+dG*UqQ{~O9I=wc;YspRR``a9{JQG6)OSoQ#|8K z*UIj7PR^>%VUYJOzva|H;vRyS?ymA%LpqGCGJNex-P!@sdyEX~#BXMJQ|u4P7Cg`&Kau}?P0^%U8PWu64cts8qF=FAhk&X~&s zp74|u5NC38Y-cNK3m5gX9_(X{-FdAM{KtU1u2~IGj{xdoR3vdY+<0;tc}LSG(_(mV zz%}|lTD|XNC(grSK1RY@C|V`EJ_X@|cdk51*fRd)^Ft1s-1qQ%SU@NPXRRm3Sg#Yg zEG3I)P{7p3k&$+U2e}qDv19Kq#DAs6Em8TvhOpX8Klv6?s_GreEI3!haB#_Y)e(7V zw`HRCoyI1K=pqvTv>n0(AfUg|K;MIVE-QUW>C^Q)I-C-z*Y9InJLZCic%x)eN?Kc6Gmr3~hS zI%UF_lP~T}UqXyVN}X-lO*DD(p-Y>pQcjKKUw*2kQ+WNfvJCM`tqmH5|5H3n`sMP7 z<1)z`63E#bl8rnHob8_G*r010ATtAo=)=)>)f4Y2fI64OM}^7lO*9_KLnm!kv*i@l z9j|huOQ0+`E-d~$`EE#@lR5I+8F*J)_LrpD!IF*4Zz|ZUWY4}@M7CJHL3xp3IpYE*q!sW$|8NE2> zGh{P`hc?C4+Akm&%SiQxD_lmHhgC**i$bjO|32l^2qPeF57aTn`~`BFXv8~OO9i(R z>RLV~Vg_cmAF8r45#cXrR_ z-(JcX($!P2ujf*cxz$^%iA25Y1y@U4&6$Bwt$^(qWfz~Rg7$n8j{8Yg9QTjCoY_ky=6714u=vy$7Af}^ zC-)D;*3Ccm(#6%oRYKmQN7j82k#NN2?!hw#GnWRt`OD_#1o?BhW@XY@oxyxwY`FY* zJX63}SV4y=vPwNt+d2muL0V5pKfC`u=to^YXq|Bw!Y`+v+xf3Ie-L_o=^MxvobRmR z+%q$QKwMtn-O3K$&%4cr=-tU;<3nSkQzqi>AQW04C+cm|Y$eDDf3)ch^+TDh?^vmFyfSJxX$Nrk!Pft2`Ee z-&~3`*>bYZ6m(@YxjjOVF`Vy8VX9mjM>u+;m+8rhY^y~jo`E&~ff zw=nr59uoFzAEL!JP^BPc4%-hK8_Bx-WLDky!ViYt2@ApwQa5X`9g~)hSzmp@vVvH0 z0rR{WHFUv`^Frnb5B55nSIFRXYL+eBg30EWw7gUerr|Lquaodw-;ZK&7(> zZaP5XMC2kN(Dn}DqzN%KyBxD zHiQwfeC3}A@Yy?tMA?SGy%$h)&0F9x3l7g3G+lc)0})JctfN4z{+Sq^fVE5d1H?6y z-L<&PjC5Oz1nLH=2DX~Zg!nQC*4p9{i-_MGgBH=>Fk!s8CX4vJV&u!Ne$`PWX=&HcvG=M|9k3(Dc7QkRmdp)o=b5 zW3yy53(na4Kk!-+ie4hHz1~`Tp(TlLePz~s#mMwqwGhg;5S*qCy9WUymhThcAV@m^ zfvog!6=F?HU?4QhCi-BYE6tk<%hL5Tpo&>&5t*S4*lKv-`0S)Gt)i0zj*Gp`5^ph; zCO*sOsCE)K36pv@xT@P@P%9E#RPdAS)Qo$bR4O^P*OB3A zAG+4q*i>8r{ooimxLBK z6q-kgKcTibLPIfy`mxt-YJUf64=MrA;+iG!AYtlZB#NK&jK?U7(fMFjgGhlWLeR{DdIIg{1X)$02(^~3Wwso7Gz)2jIUW6#e3 z93*jskLMa;hFYHf5VuE38A~sZ`IBPiR^sWoY}5S0GYP9)wrlkcD;dq;6(-*k%9S<9 z1lgafV-}f{HaRH54>YX2fW5wbyI@f5)~Itk$lRZ zE-1W#?Eu%P;@k-@)>T%z>_$r04G2AsY1S%ULtxe-VD3j*Q68_!?VlTVhIeN2f_AQ) z^?4U}7(u5sOJ@zEZK>E4@?y1AfmlD$S_ORhKo7UJp9(8uVyhMtZYFBGhS0&JNJP3@ z{?fq(6fqp3bD$ZRTdFCmgNd<*?h*RRVl+|9%?l9f3+QG|rXDNN{gXTvy?T96m1t5{ zf1((b=ptSGnR>k{+#1-oMpjzy3b}^2!l%D~ha}tmofp~|D54q^0e7ZEriItBjF$=1d1;HwR|I{D z7vhJIB3lcEoP603Rl{fYhN-)Po?Y+(tZDeP0G{}kwd|OZ3Jk03QWZqxs_BLRcItRt z-i|bhZHAISRfxY_XtiJWA_k7N@+G-!k<4I7uE;`e*MOUSx#Ln!f;udgt6^@744Cx@ zY?@xQZFJX3&~U_&z_q~c8jg5!Tx1iDv-{>>tZR}@Tdh7gt!~oOq5f@ygK;2q2B0N) zIBQqGO3Z)rOJI^VjNNTk7QE3HYmV$2qA;enER`b0#+5CZve99jO0?gKID{;~1%fXD z{nh!!^6OY6u_Qi{i2AHawC9hch3DImiCFWM^*a|BF!}8zI^dxk{H4Zo?psWw=J%-%cF6k>1#m-m}Z?rHUc5#Nj_l@Sa**W>$jm zBFr%{nU$|PEiLP@KIqNR9gqIo@`g`fbpN`<5>Bt%kh?25QE5-4QZXm8qiGSo;7!qg z*Xc%Oj!!Vh4Jy-{9xSTYc1|ENj8PPUs+iS{3mv%2@)mA5Pr^BO2mid?LZ;8i<( zi7+s7>>S2kVM0E@YdjnCvk}V3wuJ7Xl5EB~GS?89c~9yFvS82Jpk(^(@AEts!Ewu1$=)eK6_GvHMEr7` zgq>^W<5;4z;P8vf$3DNT#9zGkE>J8^f)skF*eMTt-&C7@Rt5$QaD;y^<_4VK5l~A) zeoXXWXQO_h;@G}H#Q5-s)RGG78-54C=LB{(HE=91E~R9Y&e2~QUQ@NLs7XElenES^ z<(+zj0cU~$<5H*j7Xur|hp+=Wzo=-rTLOgK@ocaY5p2ulapRE!NS_)a=t;%a00vV$Wjo{qHY6DAyv?j&>v6CgL5|Myjb_QvGA^Y6dx zk9BUigQ-B_AKgK~-VGWC^|#VG?6%ggv}wGdA$(A?pUmBDIjDHtCu1ZNt`YhlV0>gyvkF0@a+OU8b787;(HW{_Klo&@9^FnBR8@qclvgw7E3k&Io$)9Dcxx}z%IZlQO0bv8z-q04zyXtjnok{~w_)L3I}Lof zDuNhWSAtIhz-2XYYBqAPmh!rC+HpRhxz1?EPy=1Kq^v1;{wfHKkr#`oHyRxsT<2;^ z6x8HC4ZcM>+-kIE%=UGHIP`H4QKTxVoc(gsxQV3T!)Max4lZcIKGlQw4p`b#h`>)D z%LX1SI-79Wu*+Y67|*qMp=Bi zC~#eFkF5zB$y+L^aW!x*k;n9=pDjM0D|hB<<5^W-oHjjh3rn+tjPF$vH?Us^!i@9$ z?lfn~v*TKlxn33PpK_~Cz)`3b1kUCVe+q{9ftnPCvh`{oNwGgfX4})Ku75ed1mtfs z@@re6pF*dWKB<(n0&Gcv-{Nlul#1F^r_=nf#ZY)dL-cn^L7h--v;KUCPWdmvk0_Rc z?jW=&)ev5g!nv0^@~SrBG_5nsCtpBx*)q@-9XDwkzlNlU@!U0?uQpP*-rlxn{XrH} zGDY~)c$DB9zQSw|Vpy_t10lYi_yhZ&X*9v~6rint(s7mhzopUS3@vR`Or4!A?acp2 z%^b_PSFsx-cmLv1(-06L=YtVSP4j1`P z;e0~AZwe2kxEu91izTH_DC=Oc_#NHMTwVWN{AKPr^<6}`%8u{e_4$VLqoWTbl$7OT zB<9xpN32k=H-|#B0a2aNAR~*k{H0>Zr80IzVS~t@B0zeBe(D(DGWg-~{Q&93z_>#j zcpscYB~03x<#+~-9$)0eBGgTwB~J7HM7<#~;m+T1f-z40sguFEJ0oIk=faJKR#WiM z6M=WTp}7zjwBc!IajYjyP=n|i@xz6RLcekOB0TOK@l6;sP=L+y&;SS))8;W53%#FK^mn*InuAjd*9)&{mxurXg8GYk9?Z;Q;4QR=i^B?&0@ zd7ER9cs??qb~4@o42OZ3F2Crr>TXs!j|^OdyrcdCq)OjW4HAOwYA=Y&*a$%6!0HIWlqNh}Pp;OisnXmYQKcc0TM7qisk^vdT;Iyoc!170wNIpP7 zT|_!(=Qr3^*-2C$C#F(JrFwbpVgq-G41ryJColfu0x)JI9Z(ZRL{ZG>Ed^){)zEQ4 zy};}1ZB46s18Sp1x!4=uyF(zjsCtKtk`)ANyhNhRoy0_q`3fi)qKs=4th3lqY^9tF z5)HEsU_*>otaQCG)!Px8hq`3VkOsnWH^1oiHpv(I$P>8~jXZN2Hk`$M$t^R;SO|aI zEQUQCC@lAqX+zQNWu`I$F#Xjw=rW=dc<$0N*UQR|k$hPZqk@ndThXSmt9=(7 z8M?zz&FfOhznMoc9CN>+^+y^C`%zzi=ncH(XaK`jtEFVl&{xe_H*ad&l-3ue}KKIznw#Og- zJwq<3>~^9C?Yn6 zB?(I7LO@(ec7iJ0MaqkMpe)nCZLETfX#ST}L{7w*OK=6jC{2A+dl$?o1cWbv*~{sB zEHf#ch~9|3N4w>AAu%eVx#b;&^@o&6G`DbSd5(pPqAq;vCpFaiLuhKxhQ4+0)iVq* z-Jc?Rl+g#a8x`~&!dC(MFJzhwSEVU{+^%Pm&?njfV}EpPC4(QM&~=k&VALd_!*9gF zV)KtFkBQByjrjeukVv07>CP0ZAsirf<086Zt#-_K(;>Xbsjwwq81tR`BF|3;Pt$7} z_pbxH1F-emJ@Hou^4L~Oe-Dsjqy-`hcooeYV=6UQ4Kc6 zA3sN#+?z~dIN^wLm)bDHc*)iT-g;h|oz47x4~q!Y46d zH+C7VAL9&`HSWrDL#Kh-zS4|D)fYmf5WI)OVZ;IH)t35@o9P{JXDumm!kru__`Nj- z1Q*7a_Gexf)dXCkgUs~1NbuaTB5CAvhx;6O7g>zd%;3D@OpMccT}P2<_=lPO+GIx} zEZ;tr6VbnkrR|0SJu=RN{|XQ}+LF2T$etn~{%yH8 z*B6JL7S2L1=Ry!3Wxf&`WPgG;T%ooKpSd zB4c}WmdoCuj8{ybahD2V311fCb-R?_EtBg7H2DzDb`-d*HjD!^9+cQjoxxuESjJL? zC8cKi3nyZ*<;KHh8-VB2bqNPaqK7)0bn4NQXlTbAI$gH#Z#J&Kx>JMk?>ANgsy-fF z0;VqZDmsBn7R!5BuX9+P>r8_yYy9-1~}kIJPX2eF@k8rMa5|%$3SUU z`sWfoS%zg%5h);Ps4JF&&7n1%VroX<8$@e&cDwC3%avc83kfPTNuSb}rYXWi%^n)f zsBnLWH=^2?WJ%%buBIm;`n^i`!Y}Vk0(ANsA|Edpe(tI7cYfkysFc)`l+0`m4lnbm zVrk~9aStz34Mqrqhl!9druo9mmmiGJEK$N%7Gq@VX=GD^`LvYXX-dc|kXOZz$j1(d z=mfFjBft!Z*tTY(C-lz$$YRK?NuULZ))!^k9&Tojf$^BO5==+|u)3_WXe9X0#ky@p z5kZ|6N|pkHjS9h?#y7L1+N4R;aoXv>2nGK@*bxWuT#_M|!X8i4t1)q?TDuR;IrJ?Y z+F3-G+vQ}SScu7Mx`tWSl=GfBYb*z6u01O{m98ZXbMDU6{`&XlYw{CA5O|s^v^%~VF(BA4k}3!2rH zR7sbvmzDCNaepY~F2g?-G&wJ$7Qyg@M#a}BDI`{ti8t%Z*Ge?G2k+}%uyx0)OGg!;u_4p zns}OTdD0BZsh)WMck?TlSNrMbfa=N#j9>REyzuJ$hxmRzr8nVPv9x2gb#z2Ki$MY{ zN9E%~H0$-t4&f;Sn_)2CF?Q8W*|j2iGJw0^s=}pqH7_N@s_3oll4zbvEB5yK&L>Fx z=V~Qo{l{0vGFA8EFrQp6ja9VWCXdK%eSI%wOM$6_fu-wjb&;;JZA{^?!zE0^5l1<` zPzw~v3&dKOUEekFmKSP=(^50ygVYsXuZ_tH7I9j}cFZ~I-UWpTtX+54Q0=`~zju5C zNCA`--eE8i#$X83pvV^RS80*~C%pAS>v&fcRrk$3TLZ?${j!|Ct&Jic{-`GY9 z9BLkgwHwvvS~HDhds|l4OagHRZ%$$UIJZwM3BQP9 zUp!(h8EL^+|`Wg0~-y#1AElZsTV3i>1O)2Y16vq)S1v64P@T(MByg8%?W z6=!6{k)lsolPqghhfC!MW4!yLq-e9v{2_)y&->$?H7hV9NqRyln|HK+lbsGopLY5p z6l5US3}szLf13ds0*9+AX>A}2W!crzAEmwLGiK>aT;uaja|`WG9>3(@MyFHLrD+uO zVqe2M@IlUBK*n{)g8MOu`OmCzIPXb;OoTg^mj%+&>-@5~wARF#nvLRiCoW|?vgJSoUq`Z8@LC5~Ha=MK#5$*XFr!;~LYZP!LLIi3j zu})QK_B8ddm^5s~zx@IJ&kE9-y|@Sm76?d;`oC>=l(4ZkGW`G2kpH|#yN!vvE&X~! zL~G!f$8`~^F6`lnt3N8VEA&m+IY z-Y_8PkcPMY^i8FCf5@}7qk!?TF zLDz1YtaNU5a1dTx+&`Bw9OC;#dV<$lh}KbKLW6v`Ue7k4!2+8waJU)b-bJsZmP-a9 zkjEe5gip7gh91=wY8052Q~k{Y8(xw2VCp1rnCv!vhT0FUj3c< zhj>4VZCY*0Nt4l-+_3O~y)Wb&Ml=pcP?Fi)x?|7dEloHO1uP@+!XVe5K9Cr?Own(j znc6JiBqtrJA1e8b?h8yOkH~GgI{J5a$kq|x`T#WDF-RdZbz%Apcsjn8tTNFAWB-Sr z?(eB;<4RZSsppRQUX5M-po~Z5T0aFLoz8+NBO#V<@!HiwPjh@=Yd$RoBtHQsoSdGe zEy%w1%le2YUYN-~0?-`wftYG)ytAwZdlM>pHPA9<_rFEDYxn~V8F+i=lY2W%XRwZj zOud*LgBxF_$VkAQl1TrTs-%}d)_!>~LUSM>p{M#X5mGmhdiy?k5~D2u_rNN7w;^u8 zB&-8;6dh67zktR;bzvC3ax+LOgD=6@%Wj9I22|Of-HTY+RT}amt zr(jgg#we-3Z?WY03$z1HZio{0wKPKaUzyf^jdkN>Zi$JeN2Jxh+9gEW07o zX@W-Za_Lm}i3)l}pyZt`;I=9VBT@GW)!>0`do3~!HzHI{zqzqG{hv~(!NgO=5P!pl zF{0FWg16!KxfAJ#YIKpqt)vW0E8DUjiz$?H!lj%;@ayYt2!7gB9u_u&`D$d^I_G62rBAV(O;x-7pC|D$9)}?LhO!Mg(Ufu zXa<|g5J4X?bNj$)DlF&#!F8hy{txMaK5nN%xk$s-CE!M%K+R&|lkes%w>{j}eh#e| zBNq6U)Ju2Vn+hkdKLa*rx)uGvJbO(;hTZkGtW9ET(84|p*|wEU26CKMrp)XA9W5xm zS{8}Gitbe3XQxoTNK4*gLy)y~4|hi)nwKL-;J7vt*u9jDXR?u}$YTJd!c4#g9}4rq zdW>tKScY_CF;P&Z_pO=zI-XP4CunI52}r1QQWc!n)+&MouJ{ca;#w4t|5U z{q}CRrJUR{-&RJL=U=5~%f*rwNi==|%iJT?aid3t4!FW^`^usoFhFudYH6pSu++L>sUKEJ0c zNt<=D4^EVbBCg;gLGc z{sKsG?@a8J!Y#b0Ttj=1W^RRn16l=mfLHu#h8PNQ}!le;ClvWtdU8~CMph#(HOuz18 z%FgWd@hlrshm$s_l2QHF1XZ?RAc}L)Zh95(*HBj-(Tw~&O|5dqLAQ&fy$`^P?$ls8 zR2`27UFFYc7mh|VGC{gYTAAzC-{;>aY8l=^y#{Onw*@s(bmno~S%sDw3G}+nAlOhX z)f>v7OWqd%`8>emwh!|$3zoG9or)&pV7w3kXU_SqI&j*X9dq>*KK3p3v%B&du-(kV zze5ELpf6}Fptxh>mS$aXlioN;M=>tdl(BOz&mM+u$-BK{*G&zc)%&Ky?<&D=7WN${ z9uu$IF5I_Xw2tS@*6a~1{IqgkPokelftd2l63M#jG$VZV6wS}mkVwGaCnbuh|Iy8K zI|>gn(q%qn+MDFAJuDPO@yEg*Dx1#4Df8*{hjeSxo|8v3<8RsMgQ=Yc5OPj9j@K2L zgE``@FQe_PdSO=KrP%bt#+ENudQMOq2JWKa^9FVuLq9(Wiqw_7g~?8`{H=JA&?aC> z3v^&cPI{|$JIi;aTMKQxYFpN@>UYlFL4E4S2Qq=W&G57iN4T2n(_(Blg&mKL#Cg8i^QF!$9 znl*$H6-EUlbyHAp=_Kny9$&Mz+2>K<{}5_S%t=X&w2W8tCuCz>qqMVzBNvFmPc)8s zgugCQXR|HYRz@D6)6J+Y?RDu6X4szCxs8uEg2~@O-KD(n6|!{}^(ttB{*tmAg!a@0 zwgEx{&}pQf1{C!8kx(U}NxZ+RP~siMj&t?TbdouRdsd;QP$D5?OP#?t#xiG~yv2}2 zr}3cN3zOfCs{h)iPPz1e!M1mMHF%c(~zsuQ9ipvb7&edG?gJ$*~49p9;uj z?R@GVSMqT_v`hI4kZoH;usOyT8T~uQwLTXsIOcqlrg5GoAL-w1CQzSt`Miw6n}y`W z;Il8OAh{Z-w!VJI%U|!6%eM0J?52E0Q*=Gvt>S0J@n!!~cpg{l_2Ilr)I#Vbzaq3% zw#^!XXiZGV;O3lseLi4M%VXZgeD3%E4B%tf3!?mpKtPe~KtK%tHU0O04&qU8HFb2g zGWNNW0`RzeX!BgRirkQ)D^G=6acoH)^Jzh`iFEd(%Z%&%RpgqE(}%_Q(dz4`(nU zF^GM03bw7>C28RKBTN?5xO2%yr3_ZISR<6p{@ssNPZ`5pAc+w-evJZJ==alBS51IK zk^qK}br(dMk*mR1obytl%#OezAtzmxv?nhA(?MAE#q^|&7R=8jLc1*5U zZCpPFX`?&KOq^!6$H!1iY0#}#3bd|aXF;hK#~(oQ=9K(Lmh{RR50E>i`uyhW#Wy zY~)5?o+R-&EJw!qYuc?feDv&-y^QClZZvEPo_yVqiIj&%OR{~BC7H*SaV~ALV0GBN zi>puNkeR9@O`iwKi9e@UDtuC@VKNIxi^O@57cM+;;*g_iqjw?|GQtSb1Du3lbV&E`AYovLSG{sAJjYol9py4 z4SmX86XVD~1y3Eq{r05|1Vn*5r*LKD704orcl^AQV*$Xl=W1f(Ed2Sr3Kc=K2196w~EU+*da1%JkCny-TnTan?pp2 zoKBsmgCL?VwgK+U7VJE43yY(DpM}$lT@#pc3@h(hcpJfd1t@jX3SSr)4Z4c`XL0Uq z6HB?W3T>;$J}>r_IoUbYN)S>`O0 z((l8&$O~ICiSM~5H@6`c5cm7Z>ws7BjKEf( z=0dWKl%_eaRn&faLFpz#tlh=5NT|v&wJTJknaHHAa`!b;qdD(>=Ho{-3e*KkEp*4# zkj3?`H<$VRD3M+TY zaAaNW!w#urJe4kjJ>%x9|oi(72!~&0Vw_O5y#|L=tmUBK&!??V_Wv%N-=n8<1 zF_J{3t?;WD7Y`)TIF^*3rB-$KXfiJ<{@G$hbFES_AS5u_mm22ZIS{lg=4Wlnr-CiV~im&)5oC!x9>Z{b#gezXfYyfM|xO3h5Gjq#H>KKiubJbbdA3C#wo`2Q@RP*X3z9Ceg(r}}r*2%<|zVqAg zxJ2}YkJ)NN5V{)x;*tYN#eh}iy)eC*?i#ah($!t7AZHI zKkTZ2z>;^T6DFE=)__@ZSqIg{&HLR4^q1GhF5K609q3YR$ToD>m16N2Pa1@@rI+o` zlb$h9Cqa9tVZ|QAB|izwVo{kPJyxA0YH(@Bd2|6J*49X#@fihMwl^|`XP-lt4cvT^ zhGI}gZoGm?u9zR*3-nqqKJUxM z@f0`RBGkX6JMvJDqK@o#YxIlf6FcDcWtm9jp+r%nqBuh`r+Z)D+uWL&F1olJVmw_O zTW7z1<-R*m68Xv(k^ztkEBY>=e#}L1d@wD5qL=7ebBxKhiPIBa9jm$rz~i5M7~&pX zC&nSDt(G_t3`JdrP_12tV}$|zN;6-l14iaxMf$Fl)KT6J%`6zpy&Lxd=%a+7LImgo zLO?@gG#T64N=AQnXn0s4=WYtJ9pFqSNTw3BlmD8nH8PsePJz#U5>;m|C%vI zw((M5GDV@>F_2m3GFWukYF%CR8hu~!fN6QK0G69glDuGd3;^s}Smxa7#jSS)>}OPf z(AC+4{Amq{i($@Xs5tWfIuH!k-f6%2x90pzQf0Qmegv7L!u`;Qe6M;nCnWm>`Gf_nXc3G{=CzpCBq}snupDA$CsSSIPF4+dKHD=IFCMQ)cH8`}oG9$!v zmm0wDjB(v|&a#(EK$2>+FYRhGD1aeO63@f|{{%+~f%X`%Z%4e*+7$;}(Y;QVVQy9@ zg|X{m`!$V<&Dy z({6w3E2@NU40TnGlh_iN&&?Ur0vkwi z7X`kXxXGen8y5N+1M%ci$)m~m<){ za`t8eMD`GiNv$UOp*t2!CobrRlW(n+z6e(>Jz~`{M3?wEU$g-@%`m%_<|=y~@QY zHUc@6Y$|ui@#-OCdYrHM8d&vM_GOi?+tl@P3uZ+(!kuum`Dc}!zNfK9+S9RwCooiP z+LqX8xV9eTZhU8Aeh8qXwl%r)&A&6LNYf54+`Q#((>{?uyb zXOtkXn+qvbxECNP-X`uRWk!NZMku{*!sy*BTYb5Xx5p?&J+$xs}&kysJwKtR-*zb%x6ZqAnb$e zZASiWBLBeox{Or;@`%+E+IGzmnNS-&dHRQKZw6Gj4f+!MMp?-LKX^BF!h6~&p~eDZ zGq#oSs|Q*?;;_WgZ!Emo_aX2-~JC)@%{QsZGTuv9UT_s6kJa zcJ@1tmo4zgZJ(86;)9qOY-@Ooep*5(Wq`c&8t*8=u=C#XONSIsdp7zcWzEG)RZU&^2^-cXvpGFf@#Gx0JMWBXCfs z@x14}NAEqJ>w9OO+0Sq0kM)_of3csv*4p1Cm!sM^Lp=#uZ^Z|GbD|RQ{q(^11oQqn*O&DT?_DFS*ov~$6*$y zGY^+7x(`}8JD)i&Pj}RZqw(f3rJsdAgtV<(O}~AgT_op4_HL!1ZOlG>84LZg2}=-n zX&pXk5eZeMnl`3A;P#4mO;|P!I-XsnW#P_E;!LD^b9z#G%aOGyc4O`P85%5?NQ=4*CIpx$wLb@?ocn=ChkSlepgvT91s(Xsr< z9)?PAd>H__BR)TB2W)zXLKO>%;Ii%#qNQ zBW10iWxO&^aYG}N#E(HMtnPP~QW}+bw?@NdH)$>yT!^w^HLkw{_l0MAdcD|Z<79?x zSDi8okA~CHEzmjv=VstEoY=%c#KqAe&YG#Nuo_BjU13LVDRd#Ej?1keY$`}P(|G$Y z8TZoH$y%y#06-`j06_Qic|a55Xz{DFz;8NpDpb6yPmYEu1l^kv>IFoXdOfruTVbcLXy~BwhM$eD(DQsV7bIJ?bQQL23$o zGYn6Sptmj~ql?}ju|vr(jLkh%u0VY%4Yu6OQd67}_-!lgR;bib~AG*kb9nc`u3=Q^A~ue{;ND3UvD{hLqhWpMzG z^0K%PoUfRLmRZq~V&<<2gT(_RCUZ#orWb$fMT=B_rKCe*rLE3ZD*$7~Ks`RH!&T7q z=<)eTak<%s4d0$vi#&Mg97hPLLJxwL{FRtU(JCR(481Kvg3oz=!lsHwsnw08mERc) zo{{y_^O2kUINm|MszGL(uE%3`rKzDUq499P#U-n=<;4N4422|U)9ZN4+T|sLV)u_S!OXW)Ja~5%72G|3ufk)2nv}TOfWmk>B~Q90fKT{Tdpwtv#iwvdfeLI- zHW7VI=rL-ifY@IHB9Iu4gJ~)(a1k+@JQ&TJOS2g!-=N9xig9#t+BHa5_0SPh-Bc*` zX0|HTm8wBMBR#e|Cuypt&z`fonBigmeBz7hg>gpHOX`~AQ6|Xh**qS8=!0GOoPs)P zIw}Y5S;Wk0oTP#)`O5fm=^W2Tl{3GMIA>;lqF1?DcY4<*T91l-2%E?BDK$g(_Y|wc zNZTmPb2}bf$WhhMhLMSqn3qwVZ)sJiVI|hMXV}o73I*s2ys`(bxU9Z>XY=A-4{

K+;{Pzp)a9;zym*WrXkK8vanLZqJ$djNp!ZxL0qeK~`tSJ?4 z8)qi=>jfXAnH!-GtM4SnbOrj=gzyl$Sp4S0v8#@&B1cT)aGl-G8LE6}1?oO(N7-6b zd-Wb!;nI1K_tc-&M?cshN-zYqpALN-R$wrHAq0X^57$9^X*EFEn`-DN8-P$j15BKA4o8Q#N!1Sx)n^WL?TEHYVYlA zp~r}XkeQ`4#*dHQZ-Ly~BObP8ly=rnRlZ=jf1I>RiD0h8m7Xs}(-U4NoyoQL_oI3# z<>wj}X>f_pE|$>N6BTn>oi|R7^|EmXUoh%J;Wm0}(KDWj&s>{T7@}Veu~SHb%ZS^j z@yi>dMDryiD-)g_#k+7hOnMQ_D12p$OR>42AZ|<<3tw?@Y0+-`rZj z<8eeZGz(f2fHbpmszk%m63FisGx!^x;A?b{205t+)G1)jVj1w2H(GL{D5l8j->Ws0 z(vyu&EADz1a%(Ez!hT!6p#Z+U2(dmH{(kUBL;CY++r!4&%-MofTMHQgWbdZ8{q}M5 zLNTs6jTXHDi;!OJb_=t^#9oVfmNe0GpvdYeJ^?;5>@Zz zV_-(8lQqGYIU|MvG7Hckuj!R3`j-v()GepyN%WX=5^^lRI#-fQj*Tc)7e<9DsA-1 zGs+O8*6ymgf!9V5);XA87FdbZyiu$q_HNKqPcf%nZ#h&bf?H=T5pI-i%)h^vRr{U! zQS9U_9sA%3>$o_XMZ2k+Val}=9GOTYA8R63GyK^SHz1gY$u!~MsnKGaPET`LY^Kx% z+3{tR+-@{OT7Wwplx$GJiS+~UHCGfoD_LFHJ|6jFKWq}DFKCP~X!pM3f+!TXTYZ3QEf)bO=nT_bq%t8 zY%w(Ws=BNKt76mmPtMzw77Ki%$BC{Lq*=$r2-_tOo1zt4<%bR>^g5^c%68X`tZPdasUT{nK>D zE>?=|UY{TtP6?v!bH{ANbvD4NQ8;53I$c)U9{cNnG#uajOO-oup)m6 zxgmOt$R{uq$frV4CLTdIHn>xMgG=ohSvjQWZwot-)zY2vE{~{YD_R>Ty=u$#Qx=oZ zDh(m+W>LmaL^7;saAwvyLXCK8jwhEJISh)N4>m6ZS?1MBJWvrV1f!+fNMubZhL35# z%>QsGORe)^VuSr*ND#1Vr-=Hv&$d60icRm6Bx02Qk_{{>H58MUR#&dVtAD;~K@Hgy zcI>^J$y9EN*^~YEpbCF;(<2n&5vpYiv?}9jyCnLrN3zUQ42a&q>#|i8vS{mO%y7w8 zC8pOc1L|BjjF$o2u-RJVx{X&u7B|xGD1u1Z?_A6eQgxFUxR;00mWC2zv7O@V5i(#h zV#xNC5q(a=n03<_$6SOJ6s_H+JULtttduOq*Y7lQCPP@4hm~GHVQp(t0XFNK^vB!m zQ6QtFvWziGRX7=HOb@tQdi}$)B^x+>M-g<4DMAbK8f;nKcv9pX_^Yzh&5MQfVf$;6 z3Mwk)J+(0;kt^e3E9Hl!y|Sew0v{=85a^EDA#LZvap| zCFp~Xb2v)`c9n`A)3Jd}%wl__m4|xv!UU+b{6SA#R4FjlQ+gO=l(xIG!>0t4P9yGBXu_4& z3|YFSnxbcDN ze#@m3&}KGo;t^=P6Bgc4Q|ZR+y%GgXX2fj4PoWkG|l zuZw~>R531GDXnG0F1yMH=omjtW0~8)yTVq01q{&w8QrVKGYsk*QrFz3vTFrux3XEz z!p8^PKhu;v;Awm<9jc95J6`3g4Tpw5x1O38&Kgt$oG8>4Db{g%k(a}h0crR zt5>3ohPDQQZ&c+DC0&-#mM@N5e2L=l8;|iQ&5bxnZ%@vUKrOPdBwK{a$w-xExg=>? zmgFMU8*tq?NN!x5jNq(2aln>V-Zr9Ebb1x7xSk5JL93+v8r``mQEtq3t>h;VtE4O? zL1tlFHwuyEd0Sb+FFoVJ0a9t5DV__K8t#!4E$CFv$u8u$g*ErgOu_p=LTtrDb-wP# z*!SSegWZ#&UNU++qy7{IAHU8q9=4Fr5zKoiyRg_*aS4)Rv+I1U{!-Q#^{Fy&<~76?;}GE~AG3rF;=q5xJ=)1+(h;2uKQ7FLvX9)*7L^g^IWq>tvnXkBejyDY+z?Rz9!jT7t$ z6)mIwUbxuVtxNP;zq^4xynM!iD*Pj%L`>{-CDVtPg#2S^+dy-*}vXC_EJH`(Zd}dj?<}g_3vl$PUr;_$BA*Zw`wE zz&d;%<_$rQ#`Q|ua@9=2)${n*x38zG+ULK_8u#w3>{Sx`RdmyEH8+u_D!tB*+c_C< z*fgC5x{2ZJ9+NYA1OYMYjgQqrye~a${5waZNM!Bih>p6;Pw*$?TksfT4epcp_N;k9 zp1D#9BKz&ukxwRJn(^$fOasRBea82JEZZH3ngAU8^E~VX2^0;HdgKh!JEbS@qRc<% zK;!`xFm#{&`it+HB#iu19-gX@v97?TuN}u!y7}~+AWowR;-_m3s^$uL*hPBGfAsOF>bGc@PoQ9;tvSa1|7X!3ExV82^CHu_+k$0Xv4o_+oV)7m_u5>&@Xu zF%=_G$}6s`w3!tT_=x9C$sWq!=klvdp8j1GT}#vO#l5BNU*UMUC|7YoaUb6LdP&RL z;NAx50rG7YW$TY8+}k3~DlN!!GN&{rx{!Sn?VBxRMyl+kTaOzJa@##{ak>5mKV4$`k}_aK zVaHRb*mRQa@N{onl!FJ3X)CcSw#U?JmW&uJLT}-KRwnTkT+M0f$wy~l(N;e56O!87 zeItBYu6CFpd&O7U=ugq8bS#FhPPXRs-j`QEu%KkB1<@5RWk@@>J4(#b)ns;Gwq5t$ z`r@!0mV@i3x`7L+o%8Z=x-DlyuC}_|PH4x?4jMkkk=+kAJg=Ns`F#SseetV3Sq|YM zib4sT5n1@(Kcy{@7|amkQeopx6dtMfU=E5FQee{!apV>7YbMf_H<}qYW!E$kE}W2@ zaM?Jh1BzN?LeJW@_FdA`h@X|aHXK|7do|3{$03W=>j61a3{OiQkb%T9f%KMFwhmw- zh9VobmbVUZWhLr6?`@@YHBcYk!qD1pb51`Uk7+6h$uF>mH#uB?-Gu9)rMHK9+7l0F zY&<1EAEB2XhsQA&?aUiK$y4gbffhA(hq1OvJA}RD6=N08p_okW5FZM!bCH43j(K0X zbnG@GR)uyqt=KzBZNxJkOq+p=|0rhTB0%_VMs}2uQ|ReMVHs3A9)FkBAx}*~y*SI{ z$R8=#ssNK z)eZ01ThKq5H(}_uXNZY#&i4~JlwI(zE=nFcJLkrD+X>{?LYm7lbAKuAR-A?3?3~bxN<^E{B$FT-$RWG&?W9RwYO)(7FCE2+CKTDbD8G8iwv+^ zsIGq$;ky^_@j0lhazr4sBD?#%@MD3%u)n22{_MImg^aF`MgMvcY~z8?iOi^xx|)3L ze$~{09Y%*?!)c}Yn0!q3i@39 z8zV(0Ymb+2^DbIGl}kRR?Of43kgw9wX`<4e5`KGk?zTwg^)5HE8P2VIDU8aU(CZ@E zrn8hj-$my_xqva=C)>*NQOUj)Jn!tZ&`rq!R{)OgJ7JrX-MCi*?yjRe{`0{~+jD6Y zNASL;ihGTDm8*wtHp}{Td_|jGdb!z-ZAVK?@0ul-9rwSait>O;_7lbT+z=2A#E-;T zEatr6!doZ7?xKn6%Z7(AlJCYzT_p!X%{hq-k_m8Ah6FRvNXSXmrwDigEOOjzw;y@d zxl+_3RI0j9Z0F(d5R|(24^%W)`iSl8ClXiZ)`yz6jjh4qong-E%=(NQ%){~t5r9*I3Ju9A(8NxndLh^qi?OP%-fm<&9l=VwQz8{VUM_;S*Jg< zNw3VeD^h7=F>@ef!iw=y1aF7>e?^3GpV5>B`J26(%rS7{N9b}t+d-K&*s3CpuNDU( z%xdh8K*Q{=9)v2;ym;5UxG0N@FrO(O1KwR(&GGoidSyJLQ}k?s7q(VwZ>1MY80z>w znbMv>PFRg_FWCydjN>MwB?I=x8IG2>JU71T@YY2+jxn^@801yy7=Sb#!-RG^ z-8mSON__|!duZovekQQ6?Gqpm=i{xU$vU$BRZ{WA0yvaMdH|obYb$EmoFTJs-YQ8_ z?dV8trDDkSvl&^C+y@=)$|O8a)}(FzseFIG!eDX@j+e5ES5wa;wM0!GV{eiLXyNdN zLpaZ$I}V@6ln0c+c^ciFJ%_=dH+c)U<9jy98qU})wTW_jUp^29mK6Ax+HYr ze`g%@gYo+g|ID~G6l(XM5PzMmht#r!=0E_T;C{UM{y=;?TYEvJ{|Vvd0{PRct_yXx zb9rKB{(Cvdd&l2DpOC-kXw2f2AMURc1DbF0UVmLHdqIKszy4(O{)GM*e*C8^;4k1& z{0%)GIsh=n@hw{LJ+K7lKLTZJAodpD>5Kguk}}!yCDT3f0XG1^^aGNX@~21*h`G%Z zn|mqj|E7~amhk+(lZ|XYCH{Ru&tL1}j{@J{15xFF3jC?u_pdR3REGPWDWm&S=HKhY z{TlE`A%X9K5s;q(eAS@b?i`008Iyy@3b-T;zTG_CKR2^JD-3 literal 0 HcmV?d00001 diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..c8636da --- /dev/null +++ b/nginx.conf @@ -0,0 +1,7 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + location / { try_files $uri $uri/ /index.html; } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1a6cb76 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1779 @@ +{ + "name": "multimailer-webui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "multimailer-webui", + "version": "0.1.0", + "dependencies": { + "@vitejs/plugin-react": "^4.3.4", + "lucide-react": "^0.555.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-router-dom": "^7.1.1", + "typescript": "^5.7.2", + "vite": "^6.0.6" + }, + "devDependencies": { + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", + "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", + "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", + "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", + "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", + "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", + "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", + "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", + "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", + "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", + "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", + "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", + "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", + "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", + "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", + "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", + "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", + "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", + "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", + "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", + "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", + "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", + "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", + "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", + "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", + "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.34", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz", + "integrity": "sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001797", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz", + "integrity": "sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.368", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz", + "integrity": "sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==", + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.555.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.555.0.tgz", + "integrity": "sha512-D8FvHUGbxWBRQM90NZeIyhAvkFfsh3u9ekrMvJ30Z6gnpBHS6HC6ldLg7tL45hwiIz/u66eKDtdA23gwwGsAHA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.17.0.tgz", + "integrity": "sha512-FDELK7rTMlCHO5+reyXsPlmfr7N1F91lPHsWYfMEGQm/KQ+F4JFM8jGoeQDmDvdTs93Fw9aSilH+uKRb4/jXvQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.17.0.tgz", + "integrity": "sha512-fyU2yjGups/hE6Xz0I5ZYbVL8Gx29eCjgpHaRaTaVU+OOAdfRX05KsvyRm0GO8YQwOkhpU3MurW1jyMUJn+zSw==", + "license": "MIT", + "dependencies": { + "react-router": "7.17.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/rollup": { + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e4fdfa1 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "multimailer-webui", + "version": "0.1.0", + "private": true, + "description": "Standalone MultiMailer WebUI", + "scripts": { + "dev": "vite --host 127.0.0.1 --port 5173", + "build": "tsc && vite build", + "preview": "vite preview --host 127.0.0.1 --port 4173" + }, + "dependencies": { + "@vitejs/plugin-react": "^4.3.4", + "vite": "^6.0.6", + "typescript": "^5.7.2", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-router-dom": "^7.1.1", + "lucide-react": "^0.555.0" + }, + "devDependencies": { + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2" + } +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..1d62b54 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,113 @@ +import { Navigate, Route, Routes } from "react-router-dom"; +import { useEffect, useState } from "react"; +import { loadApiSettings, saveApiSettings } from "./api/client"; +import { fetchMe } from "./api/auth"; +import type { ApiSettings, AuthInfo, LoginResponse } from "./types"; +import AppShell from "./layout/AppShell"; +import DashboardPage from "./features/dashboard/DashboardPage"; +import CampaignListPage from "./features/campaigns/CampaignListPage"; +import CampaignWorkspace from "./features/campaigns/CampaignWorkspace"; +import SettingsPage from "./features/settings/SettingsPage"; +import AdminPage from "./features/admin/AdminPage"; +import TemplatesPage from "./features/templates/TemplatesPage"; +import FilesPage from "./features/files/FilesPage"; +import PlaceholderPage from "./features/PlaceholderPage"; +import PublicLandingPage from "./features/auth/PublicLandingPage"; + +export default function App() { + const [settings, setSettings] = useState(() => loadApiSettings()); + const [auth, setAuth] = useState(null); + const [checkingSession, setCheckingSession] = useState(true); + + function updateSettings(next: ApiSettings) { + setSettings(next); + saveApiSettings(next); + } + + function updateAuth(next: AuthInfo | null, accessToken?: string) { + const nextSettings = accessToken !== undefined ? { ...settings, accessToken } : settings; + setAuth(next); + if (accessToken !== undefined) { + setSettings(nextSettings); + saveApiSettings(nextSettings); + } + } + + function handlePublicLogin(response: LoginResponse) { + const active = response.active_tenant ?? response.tenant; + updateAuth( + { + user: response.user, + tenant: active, + active_tenant: active, + tenants: response.tenants ?? [active], + scopes: response.scopes, + roles: response.roles, + groups: response.groups + }, + response.access_token + ); + } + + useEffect(() => { + if (!settings.accessToken) { + setAuth(null); + setCheckingSession(false); + return; + } + let cancelled = false; + setCheckingSession(true); + fetchMe(settings) + .then((me) => { if (!cancelled) setAuth(me); }) + .catch(() => { + if (!cancelled) { + const cleared = { ...settings, accessToken: "" }; + setSettings(cleared); + saveApiSettings(cleared); + setAuth(null); + } + }) + .finally(() => { + if (!cancelled) setCheckingSession(false); + }); + return () => { cancelled = true; }; + }, [settings.accessToken, settings.apiBaseUrl]); + + if (checkingSession) { + return ( + +

+
+
MultiMailer
+

Checking session…

+

Please wait while the local session is verified.

+
+
+ + ); + } + + if (!auth) { + return ( + + + + ); + } + + return ( + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + ); +} diff --git a/src/api/auth.ts b/src/api/auth.ts new file mode 100644 index 0000000..ecc482d --- /dev/null +++ b/src/api/auth.ts @@ -0,0 +1,20 @@ +import type { ApiSettings, AuthInfo, LoginResponse } from "../types"; +import { apiFetch } from "./client"; + +export async function login( + settings: ApiSettings, + payload: { email: string; password: string } +): Promise { + return apiFetch({ ...settings, accessToken: "", apiKey: "" }, "/api/v1/auth/login", { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function fetchMe(settings: ApiSettings): Promise { + return apiFetch(settings, "/api/v1/auth/me"); +} + +export async function logout(settings: ApiSettings): Promise { + await apiFetch(settings, "/api/v1/auth/logout", { method: "POST" }); +} diff --git a/src/api/campaigns.ts b/src/api/campaigns.ts new file mode 100644 index 0000000..5af0e52 --- /dev/null +++ b/src/api/campaigns.ts @@ -0,0 +1,289 @@ +import type { ApiSettings, CampaignListItem } from "../types"; +import { apiFetch } from "./client"; + +export type CampaignListResponse = + | CampaignListItem[] + | { + campaigns?: CampaignListItem[]; + items?: CampaignListItem[]; + results?: CampaignListItem[]; + }; + +export type CampaignCreateMinimalPayload = { + external_id?: string; + name?: string; + description?: string | null; + current_flow?: string; + current_step?: string; +}; + +export type CampaignCreateResponse = { + campaign: CampaignListItem & { + current_version_id?: string | null; + }; + version: CampaignVersionListItem; +}; + +export type CampaignVersionListItem = { + id: string; + campaign_id: string; + version_number: number; + schema_version?: string; + source_filename?: string | null; + source_base_path?: string | null; + workflow_state?: string; + current_flow?: string; + current_step?: string | null; + is_complete?: boolean; + editor_state?: Record; + autosaved_at?: string | null; + published_at?: string | null; + locked_at?: string | null; + locked_by_user_id?: string | null; + created_at?: string; + updated_at?: string; + validation_summary?: Record | null; + build_summary?: Record | null; +}; + +export type CampaignVersionDetail = CampaignVersionListItem & { + raw_json: Record; + campaign_json?: Record; +}; + +export type CampaignVersionUpdatePayload = { + campaign_json?: Record | null; + current_flow?: string | null; + current_step?: string | null; + workflow_state?: string | null; + is_complete?: boolean | null; + editor_state?: Record | null; + source_filename?: string | null; + source_base_path?: string | null; +}; + +export type CampaignPartialValidationPayload = { + campaign_json?: Record | null; + section?: string | null; +}; + +export type CampaignPartialValidationResponse = { + ok: boolean; + section?: string | null; + error_count: number; + warning_count: number; + info_count: number; + issues: Record[]; +}; + +export type CampaignSummary = { + generated_at?: string; + campaign?: CampaignListItem; + current_version?: { + id: string; + version_number?: number; + schema_version?: string; + source_filename?: string | null; + created_at?: string | null; + validation_summary?: Record | null; + build_summary?: Record | null; + } | null; + cards?: { + jobs_total?: number; + queueable?: number; + needs_attention?: number; + sent?: number; + failed?: number; + imap_appended?: number; + imap_failed?: number; + }; + status_counts?: Record>; + issues?: Record; + attachments?: Record; + attempts?: Record; + delivery?: Record; + recent_failures?: Record[]; +}; + +export type CampaignQueuePayload = { + version_id?: string | null; + include_warnings?: boolean; + enqueue_celery?: boolean; + dry_run?: boolean; +}; + +export async function listCampaigns(settings: ApiSettings): Promise { + const response = await apiFetch(settings, "/api/v1/campaigns"); + + if (Array.isArray(response)) { + return response; + } + + return response.campaigns ?? response.items ?? response.results ?? []; +} + +export async function getCampaign(settings: ApiSettings, campaignId: string): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}`); +} + +export async function createNewCampaign( + settings: ApiSettings, + overrides: CampaignCreateMinimalPayload = {} +): Promise { + const now = new Date(); + const stamp = now.toISOString().slice(0, 19).replace(/[-:T]/g, ""); + const payload = { + external_id: overrides.external_id ?? `new-campaign-${stamp}`, + name: overrides.name ?? "New Campaign", + description: overrides.description ?? "", + current_flow: overrides.current_flow ?? "create", + current_step: overrides.current_step ?? "basics" + }; + + return apiFetch(settings, "/api/v1/campaigns/new", { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function getCampaignSchema(settings: ApiSettings): Promise { + return apiFetch(settings, "/api/v1/schemas/campaign"); +} + +export async function listCampaignVersions( + settings: ApiSettings, + campaignId: string +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions`); +} + +export async function getCampaignVersion( + settings: ApiSettings, + campaignId: string, + versionId: string +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}`); +} + +export async function updateCampaignVersion( + settings: ApiSettings, + campaignId: string, + versionId: string, + payload: CampaignVersionUpdatePayload +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}`, { + method: "PUT", + body: JSON.stringify(payload) + }); +} + +export async function autosaveCampaignVersion( + settings: ApiSettings, + campaignId: string, + versionId: string, + payload: CampaignVersionUpdatePayload +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}/autosave`, { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function setCampaignVersionStep( + settings: ApiSettings, + campaignId: string, + versionId: string, + currentStep: string, + currentFlow?: string | null +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}/set-step`, { + method: "POST", + body: JSON.stringify({ current_flow: currentFlow, current_step: currentStep }) + }); +} + +export async function validatePartial( + settings: ApiSettings, + campaignId: string, + versionId: string, + payload: CampaignPartialValidationPayload = {} +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}/validate-partial`, { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function publishCampaignVersion( + settings: ApiSettings, + campaignId: string, + versionId: string +): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}/publish`, { + method: "POST" + }); +} + +export async function validateVersion( + settings: ApiSettings, + versionId: string, + checkFiles = false +): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/versions/${versionId}/validate`, { + method: "POST", + body: JSON.stringify({ check_files: checkFiles }) + }); +} + +export async function buildVersion( + settings: ApiSettings, + versionId: string, + writeEml = true +): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/versions/${versionId}/build`, { + method: "POST", + body: JSON.stringify({ write_eml: writeEml }) + }); +} + +export async function getCampaignSummary(settings: ApiSettings, campaignId: string): Promise { + return apiFetch(settings, `/api/v1/campaigns/${campaignId}/summary`); +} + +export async function getCampaignJobs(settings: ApiSettings, campaignId: string): Promise<{ jobs: Record[] }> { + return apiFetch<{ jobs: Record[] }>(settings, `/api/v1/campaigns/${campaignId}/jobs`); +} + +export async function queueCampaign( + settings: ApiSettings, + campaignId: string, + payload: CampaignQueuePayload = {} +): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/${campaignId}/queue`, { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function pauseCampaign(settings: ApiSettings, campaignId: string): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/${campaignId}/pause`, { method: "POST" }); +} + +export async function resumeCampaign(settings: ApiSettings, campaignId: string): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/${campaignId}/resume`, { method: "POST" }); +} + +export async function cancelCampaign(settings: ApiSettings, campaignId: string): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/${campaignId}/cancel`, { method: "POST" }); +} + +export async function appendSent( + settings: ApiSettings, + campaignId: string, + dryRun = false +): Promise> { + return apiFetch>(settings, `/api/v1/campaigns/${campaignId}/append-sent`, { + method: "POST", + body: JSON.stringify({ dry_run: dryRun }) + }); +} diff --git a/src/api/client.ts b/src/api/client.ts new file mode 100644 index 0000000..4a28e03 --- /dev/null +++ b/src/api/client.ts @@ -0,0 +1,62 @@ +import type { ApiSettings } from "../types"; + +const STORAGE_KEY = "multimailer.apiSettings"; + +export function loadApiSettings(): ApiSettings { + const storedBaseUrl = localStorage.getItem(`${STORAGE_KEY}.baseUrl`); + + return { + // Empty base URL means "same origin". In Vite dev, /api is proxied to FastAPI. + apiBaseUrl: + storedBaseUrl !== null + ? storedBaseUrl + : import.meta.env.VITE_API_BASE_URL ?? "", + apiKey: localStorage.getItem(`${STORAGE_KEY}.apiKey`) || "", + accessToken: localStorage.getItem(`${STORAGE_KEY}.accessToken`) || "" + }; +} + +export function saveApiSettings(settings: ApiSettings): void { + localStorage.setItem(`${STORAGE_KEY}.baseUrl`, settings.apiBaseUrl); + localStorage.setItem(`${STORAGE_KEY}.apiKey`, settings.apiKey); + localStorage.setItem(`${STORAGE_KEY}.accessToken`, settings.accessToken); +} + +export function clearAccessToken(): void { + localStorage.removeItem(`${STORAGE_KEY}.accessToken`); +} + +export async function apiFetch(settings: ApiSettings, path: string, init?: RequestInit): Promise { + const baseUrl = settings.apiBaseUrl.trim().replace(/\/$/, ""); + const url = baseUrl ? `${baseUrl}${path}` : path; + + const headers = new Headers(init?.headers || {}); + + if (!(init?.body instanceof FormData) && !headers.has("Content-Type")) { + headers.set("Content-Type", "application/json"); + } + + if (settings.accessToken) { + headers.set("Authorization", `Bearer ${settings.accessToken}`); + } else if (settings.apiKey) { + headers.set("X-API-Key", settings.apiKey); + } + + const response = await fetch(url, { ...init, headers }); + + if (!response.ok) { + const text = await response.text(); + throw new Error(`${response.status} ${response.statusText}: ${text}`); + } + + if (response.status === 204) { + return undefined as T; + } + + const contentType = response.headers.get("content-type") || ""; + if (!contentType.includes("application/json")) { + return (await response.text()) as T; + } + + return (await response.json()) as T; +} diff --git a/src/api/mail.ts b/src/api/mail.ts new file mode 100644 index 0000000..f8b0e16 --- /dev/null +++ b/src/api/mail.ts @@ -0,0 +1,75 @@ +import type { ApiSettings } from "../types"; +import { apiFetch } from "./client"; + +export type MailSecurity = "plain" | "tls" | "starttls"; + +export type MailSmtpTestPayload = { + host?: string | null; + port?: number | null; + username?: string | null; + password?: string | null; + security?: MailSecurity; + timeout_seconds?: number; +}; + +export type MailImapTestPayload = MailSmtpTestPayload & { + enabled?: boolean; + sent_folder?: string | null; +}; + +export type MailConnectionTestResponse = { + ok: boolean; + protocol: "smtp" | "imap"; + host?: string | null; + port?: number | null; + security?: MailSecurity | string | null; + message: string; + details?: Record; +}; + +export type MailImapFolderResponse = { + name: string; + flags?: string[]; +}; + +export type MailImapFolderListResponse = { + ok: boolean; + protocol: "imap"; + host?: string | null; + port?: number | null; + security?: MailSecurity | string | null; + message: string; + folders: MailImapFolderResponse[]; + detected_sent_folder?: string | null; + details?: Record; +}; + +export async function testSmtpSettings( + settings: ApiSettings, + payload: MailSmtpTestPayload +): Promise { + return apiFetch(settings, "/api/v1/mail/test-smtp", { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function testImapSettings( + settings: ApiSettings, + payload: MailImapTestPayload +): Promise { + return apiFetch(settings, "/api/v1/mail/test-imap", { + method: "POST", + body: JSON.stringify(payload) + }); +} + +export async function listImapFolders( + settings: ApiSettings, + payload: MailImapTestPayload +): Promise { + return apiFetch(settings, "/api/v1/mail/list-imap-folders", { + method: "POST", + body: JSON.stringify(payload) + }); +} diff --git a/src/components/Button.tsx b/src/components/Button.tsx new file mode 100644 index 0000000..5ea6811 --- /dev/null +++ b/src/components/Button.tsx @@ -0,0 +1,5 @@ +type Props = React.ButtonHTMLAttributes & { variant?: "primary" | "secondary" | "ghost" | "danger" }; + +export default function Button({ variant = "secondary", className = "", ...props }: Props) { + return + + ))} + + ); +} diff --git a/src/components/ToggleSwitch.tsx b/src/components/ToggleSwitch.tsx new file mode 100644 index 0000000..9809b27 --- /dev/null +++ b/src/components/ToggleSwitch.tsx @@ -0,0 +1,29 @@ +import type { ReactNode } from "react"; +import FieldLabel from "./help/FieldLabel"; +import { helpForFieldLabel } from "../utils/fieldHelp"; + +type ToggleSwitchProps = { + label: ReactNode; + checked: boolean; + onChange?: (checked: boolean) => void; + disabled?: boolean; + help?: ReactNode; +}; + +export default function ToggleSwitch({ label, checked, onChange, disabled = false, help }: ToggleSwitchProps) { + return ( + + ); +} diff --git a/src/components/email/EmailAddressInput.tsx b/src/components/email/EmailAddressInput.tsx new file mode 100644 index 0000000..c9aafb1 --- /dev/null +++ b/src/components/email/EmailAddressInput.tsx @@ -0,0 +1,246 @@ +import { useEffect, useId, useMemo, useRef, useState } from "react"; +import type { CSSProperties, KeyboardEvent } from "react"; +import { createPortal } from "react-dom"; +import Button from "../Button"; +import { + addressDisplayName, + dedupeAddresses, + isValidEmailAddress, + normalizeEmailAddress, + parseMailboxAddressText, + type MailboxAddress +} from "../../utils/emailAddresses"; + +type EmailAddressInputProps = { + value: MailboxAddress[]; + onChange?: (value: MailboxAddress[]) => void; + onAddressAdded?: (address: MailboxAddress) => void; + suggestions?: MailboxAddress[]; + allowMultiple?: boolean; + clearOnAdd?: boolean; + disabled?: boolean; + addLabel?: string; + namePlaceholder?: string; + emailPlaceholder?: string; + emptyText?: string; + compact?: boolean; + showAddButton?: boolean; +}; + +export default function EmailAddressInput({ + value, + onChange, + onAddressAdded, + suggestions = [], + allowMultiple = true, + clearOnAdd = false, + disabled = false, + addLabel = "Add", + namePlaceholder = "Name", + emailPlaceholder = "email@example.org", + emptyText = "No address added yet.", + compact = false, + showAddButton +}: EmailAddressInputProps) { + const inputId = useId(); + const normalizedValue = useMemo(() => dedupeAddresses(value), [value]); + const normalizedSuggestions = useMemo(() => dedupeAddresses(suggestions), [suggestions]); + const [entryText, setEntryText] = useState(""); + const [dialogOpen, setDialogOpen] = useState(false); + const [dialogName, setDialogName] = useState(""); + const [dialogEmail, setDialogEmail] = useState(""); + const [error, setError] = useState(""); + const [popoverStyle, setPopoverStyle] = useState({}); + const addButtonRef = useRef(null); + const canUseAddButton = showAddButton ?? allowMultiple; + + const filteredSuggestions = useMemo(() => { + const query = entryText.trim().toLowerCase(); + if (!query) return normalizedSuggestions.slice(0, 6); + return normalizedSuggestions + .filter((item) => `${item.name ?? ""} ${item.email}`.toLowerCase().includes(query)) + .slice(0, 6); + }, [entryText, normalizedSuggestions]); + + useEffect(() => { + if (!dialogOpen) return; + + function updatePopoverPosition() { + const trigger = addButtonRef.current; + if (!trigger) return; + const rect = trigger.getBoundingClientRect(); + const viewportPadding = 16; + const width = Math.min(360, Math.max(280, window.innerWidth - viewportPadding * 2)); + const estimatedHeight = 250; + const left = Math.min(Math.max(viewportPadding, rect.right - width), window.innerWidth - width - viewportPadding); + const belowTop = rect.bottom + 8; + const aboveTop = rect.top - estimatedHeight - 8; + const top = belowTop + estimatedHeight > window.innerHeight && aboveTop > viewportPadding ? aboveTop : belowTop; + setPopoverStyle({ + position: "fixed", + top, + left, + width, + zIndex: 10000 + }); + } + + updatePopoverPosition(); + window.addEventListener("resize", updatePopoverPosition); + window.addEventListener("scroll", updatePopoverPosition, true); + return () => { + window.removeEventListener("resize", updatePopoverPosition); + window.removeEventListener("scroll", updatePopoverPosition, true); + }; + }, [dialogOpen]); + + function removeAddress(emailToRemove: string) { + if (disabled) return; + onChange?.(normalizedValue.filter((address) => address.email !== emailToRemove)); + setError(""); + } + + function commitAddress(candidate: MailboxAddress | null, sourceText = "") { + if (disabled) return false; + if (!candidate?.email) { + setError(sourceText ? "Use a valid address such as Name ." : "Enter an email address first."); + return false; + } + + const normalized = normalizeEmailAddress(candidate); + if (!isValidEmailAddress(normalized.email)) { + setError("Enter a valid email address."); + return false; + } + if (allowMultiple && normalizedValue.some((address) => address.email === normalized.email)) { + setError("This address is already listed."); + return false; + } + + onAddressAdded?.(normalized); + if (!clearOnAdd) { + const nextValue = allowMultiple ? dedupeAddresses([...normalizedValue, normalized]) : [normalized]; + onChange?.(nextValue); + } + setEntryText(""); + setDialogName(""); + setDialogEmail(""); + setDialogOpen(false); + setError(""); + return true; + } + + function commitTypedAddress() { + const text = entryText.trim(); + if (!text) return; + commitAddress(parseMailboxAddressText(text), text); + } + + function commitDialogAddress() { + commitAddress({ name: dialogName, email: dialogEmail }, `${dialogName} ${dialogEmail}`); + } + + function handleTextKeyDown(event: KeyboardEvent) { + if (event.key === "Enter" && !event.shiftKey) { + event.preventDefault(); + commitTypedAddress(); + return; + } + if (event.key === "Backspace" && !entryText && normalizedValue.length > 0 && !disabled) { + event.preventDefault(); + const last = normalizedValue[normalizedValue.length - 1]; + removeAddress(last.email); + } + } + + function applySuggestion(address: MailboxAddress) { + commitAddress(address); + } + + const addressDialog = dialogOpen && canUseAddButton && !disabled ? createPortal( +
{ + if (event.key === "Escape") setDialogOpen(false); + }} + > +

Add address

+ + +
+ + +
+
, + document.body + ) : null; + + return ( +
+
+
+ {normalizedValue.length === 0 && !entryText && {emptyText}} + {normalizedValue.map((address) => { + const valid = isValidEmailAddress(address.email); + return ( + + {addressDisplayName(address)} + {address.name && {address.email}} + {!disabled && ( + + )} + + ); + })} +
+ {!disabled && ( + <> +